Maven工具MCP服务器
     ](https://github.com/arvindand/maven-tools-mcp/releases) ](https://hub.docker.com/r/arvindand/maven-tools-mcp) ](https://hub.docker.com/r/arvindand/maven-tools-mcp) ](https://github.com/arvindand/maven-tools-mcp/stargazers)
Maven Tools MCP Server为支持MCP的客户端提供了一种使用实时Maven Central数据检查JVM依赖关系的实用方法。
它专为需要更多简单版本查找的开发人员和代理而构建:稳定性过滤、升级比较、依赖性健康信号、许可证数据、CVE检查以及通过Context7进行的可选文档查找。
它有什么帮助
当您需要以下操作时,请使用Maven Tools MCP:
- 在不离开编辑器的情况下检查库的最新稳定版本
- 将您当前的依赖集与现在可用的依赖集进行比较
- 根据主要/次要/补丁上下文计划升级
- 审计项目是否存在过时、有风险或维护不力的依赖关系
- 为AI助手提供结构化的当前依赖元数据,而不是让它抓取文档或网页
- 解决一个整体
pom.xml进入每个依赖有效的版本——遍历父链,应用 ``,导入BOM——而无需实际构建项目(在CI预检查、依赖关系更新PR、多模块monorepos以及任何碰撞库意味着碰撞BOM的项目中都很有用) - 获得一个确定性的、可应用的升级计划,非LLM代理可以在一次往返中执行,并将主要/冲突/显式覆盖分开,以供人工或LLM判断
此项目适用于任何依赖Maven Central的JVM构建工具。输入是标准的Maven坐标,因此相同的数据适用于Maven、Gradle、SBT和Mill项目。
为何重要
当简单的包搜索不够时,此项目最有用。
- 它为MCP客户端提供结构化的依赖关系数据,而不是让它们抓取网页
- 它使升级检查基于当前的Maven Central元数据
- 它在一个地方添加了稳定性、年龄、CVE和许可证信号
- 它与在编辑代码或打开PR之前需要依赖关系事实的代理工作流配合得很好
新兴用例
这个项目的一个更有趣的用途是代理驱动的依赖关系维护。
核心服务器本身不会打开PR,但它为代理提供了足够的当前依赖关系上下文,使其比盲目的版本升级工作流做出更安全的更新决策。这 recommend_pom_upgrades 该工具正是为这种形状而构建的:非LLM代理将其原封不动地交给它 pom.xml,适用于所有 deterministic_actions[] 作为一行输入 ` 编辑(父块和dep块均已处理)和曲面 needs_attention[] 供人类或法学硕士单独复习。没有每个坐标的扇出,代理代码中没有Maven XML解析,也没有代理无法实际应用的建议——传递式管理的BOM被过滤掉,因为调用者没有 ` 撞。
这个存储库自己的每周自我更新流程是最明显的例子:GitHub Actions协调运行,一个MCP调用返回操作列表,代理应用差异,结果是一个可审查的PR。主要的升级审查是要求Copilot进行判断和迁移框架的唯一途径。
这也是为什么狗粮设置在这个存储库之外很重要。它以一种小而具体的方式展示了更广泛的GitHub代理工作流可以构建的相同形状:工作流编排器、用于确定性编辑的结构化工具输出、仅在判断有用的情况下使用的人工智能工作人员,以及最终由人审查的更改。
快速开始
克劳德桌面
将此添加到您的Claude Desktop配置中:
{
"mcpServers": {
"maven-tools": {
"command": "docker",
"args": ["run", "-i", "--rm", "arvindand/maven-tools-mcp:latest"]
}
}
}VS代码+GitHub副本
创建 .vscode/mcp.json 在您的工作空间中:
{
"servers": {
"maven-tools": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "arvindand/maven-tools-mcp:latest"]
}
}
}图像变体
| 标签 | 运输 | 上下文7 | 最适合 |
|---|---|---|---|
:latest | STDIO | 是 | 默认桌面MCP使用情况 |
:latest-noc7 | STDIO | 否 | Context7被阻止或不需要的网络 |
:latest-http | HTTP | 是 | 可流式传输的HTTP客户端和sidecar工作流 |
CONTEXT7_API_KEY 是可选的。大多数设置都可以在没有它的情况下启动。如果您的环境需要Context7身份验证,或者您想避免匿名限制,请通过Docker传递它 -e CONTEXT7_API_KEY.
有关更完整的设置指南,包括JAR/本机使用、Docker Compose和环境说明,请参阅 docs/setup.md.
核心工具
服务器公开了11个MCP工具。
Maven智能工具
| 工具 | 它做什么 |
|---|---|
get_latest_version | 查找具有稳定性选择的最新版本 |
check_version_exists | 验证特定版本并对其稳定性进行分类 |
check_multiple_dependencies | 批量查找依赖关系坐标 |
compare_dependency_versions | 将当前版本与可用升级进行比较 |
analyze_dependency_age | 对依赖关系的年龄进行分类 |
analyze_release_patterns | 查看释放节奏和维护信号 |
analyze_project_health | 运行更广泛的依赖关系健康审计 |
analyze_pom_dependencies | POM感知:从原始POM.xml解析有效版本,分类为 EXPLICIT / MANAGED / EXPLICIT_OVERRIDE,表面多BOM冲突 |
recommend_pom_upgrades | POM感知:返回确定性 ` 要应用的代理的编辑(显式+BOM凹凸),以及 needs_attention` 供人工或法学硕士审查的专业/冲突/覆盖列表 |
Context7文档工具
| 工具 | 它做什么 |
|---|---|
resolve-library-id | 查找文档库标识符 |
query-docs | 按Context7库ID获取文档 |
有关参数、示例和逐个工具的注释,请参见 docs/tools.md.
POM感知依赖性分析
两个工具使用整个POM(原始XML),而不是单个坐标。两者都走父链,申请 `,决心 import Maven Central的BOM,范围 ${project.version} 根据POM,导入的BOM占位符解析为该BOM的版本(而不是导入者的版本),并接受可选 sideloadedPoms` 为monorepo兄弟姐妹/未释放的父母提供捆绑包。
analyze_pom_dependencies--返回每个声明的dep及其有效版本和分类(EXPLICIT/MANAGED/EXPLICIT_OVERRIDE)+管理BOM坐标+任意多BOMconflicts。当您需要原始分析时使用(“我的POM实际上解决了什么问题?”)。recommend_pom_upgrades--基于分析器构建并返回两个列表:deterministic_actions(机械 `编辑--explicit_bump对于已申报的deps,bom_bump对于存在较新次要/补丁的用户可控BOM)以及needs_attention` (专业、多BOM冲突和显式重写,每个都携带Maven Central的最新版本,因此LLM在一次往返中具有完整的上下文)。用于“我可以安全地碰撞什么?”工作流。
升级建议的范围仅限于调用者可以在自己的POM中实际编辑的BOM表——直接 根水平 ` 进口。暂时导入的BOM(例如。, jackson-bom 继承通过 spring-boot-dependencies)被默默地跳过,因为没有 使试剂碰撞;他们的升级可以通过任何用户可控的旋钮来实现。拆分很重要:非LLM代理永远不需要调用 compare_dependency_versions 每个dep或解析Maven XML——一个 recommend_pom_upgrades` 调用返回所有机械的东西,LLM审查路径选择所有需要判断的东西。
示例
Copilot或Claude中的一个常见提示是:
检查我的数据库中依赖项的所有最新版本 pom.xml 并指出任何有风险的事情。此服务器的良好响应会向客户端提供结构化信息,例如:
- 当前版本与最新版本
- 升级是主要升级、次要升级还是补丁升级
- 最新版本是否稳定
- 依赖关系看起来是新鲜的、老化的还是陈旧的
- 是否存在值得注意的已知CVE或许可证问题
这使工作流基于实时存储库数据,而不是猜测。
对于更广泛的问题,如“我应该选择哪个库?”,有用的模式是:让模型使用Maven Tools MCP获取当前坐标、版本/稳定性信号和升级上下文,然后将其与Context7文档(可通过默认图像的公开工具获得)相结合,并在需要时在客户端web搜索此服务器本身不提供的生态系统上下文。
内部测试
此存储库运行一个每周自我更新的工作流,该工作流使用本地Python代理对其自身进行更新 pom.xml 并打开可审查的PR以进行安全依赖性更新。代理商将未加工的POM交给 recommend_pom_upgrades 并应用返回的 deterministic_actions[] 直接——没有每个坐标的扇出,没有Python中的XML解析。手动主要审查运行是通过GitHub Copilot SDK路由的唯一模式。
该流程记录在 docs/dogfooding.md,包括:
- GitHub操作工作流
- 代理子项目
agents/copilot-maven-tools-agent/ - 直接MCP次要/补丁模式与副驾驶支持的主要审查模式
- 必需的
COPILOT_BOT_PATPR创建和主要审核运行的设置 - 手动触发指令
常见问题
- 这会取代Renovate还是Dependabot? 对于基于Maven Central的JVM项目,它可以。Maven Tools MCP是依赖智能层,替换行为来自构建在其之上的代理工作流。在这个存储库中,每周的自我更新工作流已经通过直接MCP调用替换了用于安全次要和补丁升级的常规盲更新PR,而将主要升级留给Copilot辅助的手动审查。
- 它离线工作吗? 不完全。未缓存的查询需要访问Maven Central的网络。
- 它适用于Gradle或其他JVM构建工具吗? 是的,只要项目依赖于通过Maven Central坐标解析的库。
有关更多使用说明,请参阅 docs/examples.md.
致谢
有效POM分解器 com.arvindand.mcp.maven.pom 遵循决议 形状 maxxq-org/maxxq-maven (麻省理工学院, Guy Chauliac)在这里宣布了dep决议。看 NOTICE.
更多文档
docs/setup.md-安装、客户端配置、映像变体、从源代码构建选项docs/tools.md-完整的工具目录、参数和响应行为docs/examples.md-实用提示、高级用例、可重用命令和常见问题说明docs/dogfooding.md-每周自我更新工作流和代理集成docs/troubleshooting.md-常见环境问题和修复docs/architecture.md-设计原则、传输/运行时选项和技术说明CORPORATE-CERTIFICATES.md-锁定网络的自定义CA证书支持
延伸阅读
贡献
如果你想在本地构建或测试,请从 docs/setup.md 以及中的辅助脚本 build/.
项目历史和发布说明实时发布 CHANGELOG.md.
许可证
该项目根据MIT许可证获得许可。看 LICENSE.
作者
阿尔温德·梅农
- github: @阿尔文丹德

