Maven构建日志解析服务器

Maven MCP是一个用于解析Maven构建日志的服务器,将冗长的原始日志转换为简洁的Markdown格式,减少AI代理的令牌消耗。

  • by MavenSkills
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 MavenSkills/mcp-server

使用说明

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