Maven 测试运行器 MCP 服务器
一个MCP(模型上下文协议)服务器,允许Claude Desktop运行Maven测试、读取源文件并进行代码修改。非常适合直接在Claude Desktop中验证重构和编辑代码。
特点/功能
测试
- 简洁的测试报告无需 Maven 的冗长输出,即可获得明确 ✅/❌ 的结果
- 智能错误检测自动识别编译问题、依赖问题以及测试失败
- 实用提示提出常见问题的修复建议(缺失
-am标志、杰克逊错误等) - 灵活测试运行模块中的所有测试或针对特定的测试类进行测试
文件操作
- 读取源文件查看工作区中的任何文件(Kotlin、Java、XML 等)
- 编辑文件直接从Claude桌面修改源代码
- 路径灵活性支持绝对路径和相对于工作区的路径
将军
- 工作空间感知可配置的工作区目录,支持波浪线扩展
- 安全操作在写入之前先读取文件,并提供明确的错误信息
先决条件
- Node.js(v18或更高版本)
- Maven 测试包装脚本位于
~/.claude/scripts/run-tests.sh - 一个 Maven 项目工作区
安装
- 克隆或下载此仓库:
git clone https://github.com/RuneLind/mcp-maven-test-runner.git
cd mcp-maven-test-runner- 安装依赖项并构建:
npm install
npm run build- 将服务器添加到您的Claude桌面配置中。
Claude 桌面配置
编辑您的Claude Desktop配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
添加此配置:
{
"mcpServers": {
"maven-test-runner": {
"command": "node",
"args": ["/absolute/path/to/mcp-maven-test-runner/build/index.js"],
"env": {
"WORKSPACE_DIR": "/Users/username/projects/my-maven-project",
"PATH": "/Users/username/.sdkman/candidates/maven/current/bin:/Users/username/.sdkman/candidates/java/current/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}重要的:
- 替换
/absolute/path/to/mcp-maven-test-runner这个项目的实际路径 - 替换
WORKSPACE_DIR与您的 Maven 项目的根目录一起 - 更新
PATH包含您的Maven和Java安装:
- 跑 echo $PATH 在你的终端中获取完整的PATH - 确保它包含了Maven的路径(mvn) 和 Java (java) - 常见位置: ~/.sdkman/candidates/maven/current/bin, /opt/homebrew/bin, /usr/local/bin
- 波浪号(~)
~) 扩展是支持的在WORKSPACE_DIR
- 重启Claude桌面版
用法
配置完成后,Claude可以使用自然语言运行测试:
示例
运行模块中的所有测试:
Run all tests in the domain module运行特定的测试类:
Run the UserServiceTest tests in the service module验证重构:
I just refactored the UserService class. Can you run the tests to make sure everything still works?读取并编辑文件:
Show me the Behandling.kt file in the domain moduleUpdate the Behandling class to add a new method for validation工具接口
服务器提供了三种工具:
1. run_tests
为特定模块运行 Maven 测试。
project(必填):Maven 模块名称(例如,“domain”、“service”、“common”)testClass(可选):要运行的具体测试类(例如,“UserServiceTest”)
2. read_file
读取源文件的内容。
参数:
filePath(必需):文件路径(相对于工作区的绝对路径或相对路径)
- 示例: domain/src/main/kotlin/no/nav/melosys/domain/Behandling.kt - 示例: ~/source/nav/melosys-api/domain/src/main/kotlin/no/nav/melosys/domain/Behandling.kt
3. write_file
编写或更新源文件。
⚠️ 警告这会覆盖整个文件。请务必先阅读文件内容!
参数:
filePath(必需):文件路径(相对于工作区的绝对路径或相对路径)content(必填):填写新文件的全部内容
输出示例
成功
✅ All tests passed (12 tests run in 8s)失败详情
❌ Tests failed
Tests run: 5, Failures: 2, Errors: 0, Skipped: 0
🔍 Failure details:
testCreateUser: Expected but was
testUpdateUser: NullPointerException at line 45
💡 Tip: Cross-module dependency issue. Try running with -am flag.未找到测试
⚠️ No tests were run. Check your test configuration.典型工作流程
以下是使用这三种工具的常见工作流程:
- 阅读现有代码:
Show me the Behandling.kt file- 做出改变:
Add a validation method that checks if the status is valid(克劳德将阅读文件,理解内容,并撰写更新后的版本)
- 验证更改:
Run the domain tests to make sure my changes work- 如有需要,请修复问题:
The test failed - can you fix the validation logic?它是如何工作的
- 克劳德称其为
run_tests带有项目名称和可选测试类的工具 - MCP服务器执行
~/.claude/scripts/run-tests.sh带有适当的参数 - 该脚本处理了 Maven 的复杂性(如清理构建、依赖解析等)
- 服务器解析输出结果,并向Claude返回一个简洁的摘要
- 克劳德以人类可读的格式呈现结果
故障排除
“mvn: command not found”错误
这是最常见的问题。MCP 服务器在最小化环境中运行,不包含您 shell 的 PATH 环境变量。
解决方案将您的PATH添加到Claude Desktop配置中:
- 跑
echo $PATH在你的终端中 - 复制整个PATH值
- 把它加到……里
env在您的Claude Desktop配置中的部分:
"env": {
"WORKSPACE_DIR": "/path/to/workspace",
"PATH": "/your/full/path/here"
}- 确保 PATH 环境变量中包含了 Maven 和 Java 的目录
- 重启Claude桌面版
“未找到脚本”错误
- 验证脚本是否存在于
~/.claude/scripts/run-tests.sh - 检查脚本是否可执行:
chmod +x ~/.claude/scripts/run-tests.sh
“权限被拒绝”错误
- 使脚本可执行:
chmod +x ~/.claude/scripts/run-tests.sh
测试超时(>5分钟)
- 考虑运行更少的测试或特定的测试类
- 检查测试是否卡住或耗时过长
错误的工作区目录
- 验证
WORKSPACE_DIR在您的Claude桌面配置中 - 使用绝对路径(波浪号
~(是受支持的) - 更改配置后重启Claude桌面版
服务器未在Claude中显示
- 检查配置文件的语法(有效的JSON)
- 验证到(某处)的绝对路径
build/index.js - 检查Claude Desktop的日志以查找错误信息
- 重启Claude桌面版
发展
构建
npm run build监视模式(更改时重建)
npm run watch更新依赖项
npm update项目结构
mcp-maven-test-runner/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md贡献;做出贡献
这是一个个人工具,但欢迎提出建议和改进意见!请提交问题或拉取请求。
许可证
ISC 许可证 - 详见 LICENSE 文件
