使用说明
Maven MCP服务器
已弃用 --此项目不再维护。使用 RTK Java 相反,它提供了与轻量级CLI代理相同的Maven输出过滤——不需要MCP服务器。看 mariuszs/rtk java#2 了解详情。
AI编码代理(Claude Code、Cursor、Windsurf)通过shell命令运行Maven构建并返回 原始日志页。代理必须解析此非结构化文本,烧穿上下文窗口和令牌——您为每一行支付 [INFO] Downloading... 模型读到的。
Maven MCP 是一个 模型上下文协议 位于代理和Maven之间的服务器。它运行构建,解析输出,并返回 简洁的Markdown --只需代理需要的错误、测试结果和可操作信息。
用克劳德代码测试。与任何MCP客户端兼容。
代币节省
相同的项目,相同的测试——代理的令牌成本不同:
| Maven MCP | IntelliJ MCP | Bash(./mvnw) |
|
|---|---|---|---|
| 17项测试通过 | ~30个代币 | ~2200个代币 | ~1600个代币 |
| 5次故障(弹簧启动) | ~900个代币 | ~3400个代币 | ~2600个代币 |
代币数量减少约50倍 关于成功。 减少约3倍 关于失败——用简洁的Markdown代替原始日志。
按比例:205个错误,一个根本原因
Redis端口冲突导致205个测试出错。Maven原始输出: 5.4 MB --主要是重复的Spring上下文转储和框架堆栈跟踪。
| Maven MCP | Bash(./mvnw test) |
|
|---|---|---|
| 尺寸 | 约9 KB | 约5.4 MB |
| 显示的故障 | 2(重复数据消除) | 205(完全相同) |
| 根本原因 | bind: address already in use |
埋在木头里 |
| 减少 | ~600x | — |
异常标头被截断,框架框架被折叠,相同的故障按根本原因分组。代理读取9 KB而不是5 MB。
设置
使用JBang(推荐)
安装 Jbang 如果没有,请添加到 .mcp.json (克劳德代码)或同等代码:
{
"mcpServers": {
"maven": {
"command": "jbang",
"args": ["maven-mcp@MavenSkills/mcp-server"]
}
}
}
JBang在第一次运行时自动下载服务器和匹配的Java运行时。
使用Java
需要Java 21+。
1.下载JAR文件
mvn dependency:get -Dartifact=io.github.mavenskills:maven-mcp:1.1.0
2.配置您的MCP客户端
添加 .mcp.json (克劳德代码)或同等代码:
{
"mcpServers": {
"maven": {
"command": "java",
"args": [
"-jar",
"~/.m2/repository/io/github/mavenskills/maven-mcp/1.1.0/maven-mcp-1.1.0.jar"
]
}
}
}
服务器默认为当前工作目录。像Claude Code这样的MCP客户端将工作目录设置为项目根目录,因此不需要额外的配置。
服务器自动检测 ./mvnw 在项目中,回归系统 mvn.
工具
| 工具 | 代理会得到什么 |
|---|---|
maven_compile |
文件、行、列的结构化错误 |
maven_test |
通过/失败摘要、解析的Surefire报告、过滤的堆栈跟踪 |
maven_clean |
生成目录已清理确认 |
maven_test 详细地
测试工具不仅仅是运行 mvn test:
testOnly模式 (默认)--运行surefire:test直接跳过整个Maven生命周期。如果源代码自上次编译以来发生了更改,则会在运行前自动重新编译。每次迭代可节省2-5s。- 智能堆栈跟踪 --仅显示了应用程序帧,框架噪声被压缩:
com.example.MyService.process(MyService.java:42) com.example.MyController.handle(MyController.java:18) ... 6 framework frames omitted - 故障重复数据删除 --205个相同的失败变成2个条目。相同的根本原因=一个条目。
- 测试过滤 —
testFilter: "MyTest",testFilter: "MyTest#method",或testFilter: "MyTest,OtherTest". - 可配置输出 —
stackTraceLines(默认值50),appPackage(自动从pom.xml groupId导出),testOutputLimit每次测试。
运作原理
Maven MCP将Maven作为外部进程生成(./mvnw 或 mvn),捕获stdout/stderr,解析输出(编译错误、Surefire XML报告),并通过MCP stdio传输返回简洁的Markdown。代理永远不会看到原始构建日志。
许可证
阿帕奇-2.0