返回 MCP 目录
public公开dns本地运行

maven-tools-mcp

Maven Tools MCP Server是一个基于Spring Boot的MCP协议服务器,为JVM构建工具(Maven、Gradle、SBT、Mill等)提供Maven中央仓库依赖智能分析服务。它通过直接读取Maven Central的元数据文件,提供快速、准确的依赖版本查询、批量分析、版本比较和项目健康评估等功能,并集成了Context7文档服务。

article

README

🚀 Maven Tools MCP Server

Maven Tools MCP Server 为所有 JVM 构建工具(Maven、Gradle、SBT、Mill)提供通用的 Maven Central 依赖智能。它能直接从 Maven Central 仓库读取 maven-metadata.xml 文件,为 AI 助手提供即时、准确的依赖信息,比网络搜索或搜索 API 更快、更可靠。此外,该服务器还集成了 Context7 以提供文档支持。

🚀 快速开始

MCP 服务器为所有 JVM 构建工具(Maven、Gradle、SBT、Mill)提供 Maven Central 依赖智能。你可以通过向 AI 助手提问,直接从 Maven Central 仓库读取 maven-metadata.xml 文件,从而获得即时、准确的依赖信息。以下是一些提问示例:

  • “检查此构建文件中的所有依赖项的最新版本”(粘贴你的 build.gradle、pom.xml、build.sbt)
  • “Spring Boot 的最新版本是什么?”
  • “我的项目中哪些依赖项需要更新?”(适用于任何构建工具)
  • “仅显示适用于生产部署的稳定版本”
  • “我的依赖项使用了多久,哪些需要关注?”
  • “分析我关键依赖项的发布模式”
  • “对我项目的所有依赖项进行健康检查”
  • “如何将 Spring Boot 从 2.7.0 升级到最新版本?请提供迁移指南”
  • “检查这些依赖项是否有升级,并建议相关文档搜索”(粘贴你的 pom.xml/build.gradle)
  • “我仍在使用 Jackson 2.12.0。我应该升级吗?如何升级?”

Demo GIF

✨ 主要特性

  • 通用支持:适用于所有使用 Maven Central 仓库的 JVM 构建工具,包括 Maven、Gradle、SBT 和 Mill。
  • 即时准确:直接从 Maven Central 仓库读取 maven-metadata.xml 文件,提供即时、准确的依赖信息。
  • 批量操作:支持批量分析 20 个以上的依赖项。
  • 版本比较:可比较版本并提供升级建议,帮助你了解升级影响(主要/次要/补丁)。
  • 稳定性过滤:可选择仅显示稳定版本或包含预发布版本。
  • 企业级性能:缓存响应时间小于 100 毫秒,支持原生镜像。
  • 分析智能:提供依赖项年龄分析、发布模式分析和项目健康评分。
  • Context7 集成:集成 Context7 以提供文档支持,当需要升级或现代化时,自动包含明确的编排指令。

📦 安装指南

为 Claude Desktop 进行设置

步骤 1:找到你的 Claude Desktop 配置文件

  • Windows%APPDATA%\Claude\claude_desktop_config.json
  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux~/.config/Claude/claude_desktop_config.json

步骤 2:添加以下配置(使用预构建的 Docker 镜像):

{
  "mcpServers": {
    "maven-tools": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "-e", "SPRING_PROFILES_ACTIVE=docker",
        "arvindand/maven-tools-mcp:latest"
      ]
    }
  }
}

步骤 3:重启 Claude Desktop

前提条件:已安装并运行 Docker

注意:Docker 镜像支持 AMD64(Intel/AMD)和 ARM64(Apple Silicon)架构。Docker 会自动为你的平台选择正确的版本。

为带有 GitHub Copilot 的 VS Code 进行设置

选项 1:工作区配置 - 创建 .vscode/mcp.json

{
  "servers": {
    "maven-tools": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "SPRING_PROFILES_ACTIVE=docker", "arvindand/maven-tools-mcp:latest"]
    }
  }
}

选项 2:用户设置 - 添加到你的 VS Code 设置中:

{
  "mcp": {
    "servers": {
      "maven-tools": {
        "type": "stdio", 
        "command": "docker",
        "args": ["run", "-i", "--rm", "-e", "SPRING_PROFILES_ACTIVE=docker", "arvindand/maven-tools-mcp:latest"]
      }
    }
  }
}

使用方法:打开聊天视图(Ctrl+Alt+I),选择代理模式,然后使用工具按钮启用 Maven 工具。

其他安装方式

使用 Docker Compose

替代的 Claude Desktop 配置(如果你更喜欢使用 compose): 下载 docker-compose.yml 并进行配置:

{
  "mcpServers": {
    "maven-tools": {
      "command": "docker",
      "args": [
        "compose", "-f", "/absolute/path/to/docker-compose.yml", 
        "run", "--rm", "maven-tools-mcp"
      ]
    }
  }
}

仅用于开发/测试

docker compose up -d  # 在后台运行服务器进行测试

从源代码构建(适用于贡献者)

前提条件

  • Java 24
  • Maven 3.9+
# 克隆仓库
git clone https://github.com/arvindand/maven-tools-mcp.git
cd maven-tools-mcp

# 快速构建(适合 CI - 仅运行单元测试)
./mvnw clean package -Pci

# 完整构建并运行所有测试(需要网络访问)
./mvnw clean package -Pfull

# 运行 JAR 文件
java -jar target/maven-tools-mcp-1.4.0.jar

Claude Desktop 对 JAR 文件的配置

{
  "mcpServers": {
    "maven-tools": {
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/maven-tools-mcp-1.4.0.jar"
      ]
    }
  }
}

构建脚本

为了更方便地进行构建,可以使用 build/ 文件夹中提供的脚本:

# Linux/macOS - 完整构建助手
./build/build.sh

# Windows - 完整构建助手
.\build\build.cmd

💻 使用示例

基础用法

{
  "dependency": "org.springframework:spring-core",
  "preferStable": false
}

此示例展示了如何使用 get_latest_version 工具获取 org.springframework:spring-core 依赖项的最新版本,不优先考虑稳定版本。

高级用法

{
  "currentDependencies": "org.springframework:spring-boot:2.7.0,org.hibernate:hibernate-core:5.6.0",
  "onlyStableTargets": true
}

此示例展示了如何使用 compare_dependency_versions 工具比较 org.springframework:spring-bootorg.hibernate:hibernate-core 依赖项的当前版本与最新版本,并仅建议升级到稳定版本。

📚 详细文档

可用工具

核心 Maven 智能工具(8 个工具)

| 工具 | 用途 | 关键特性 | |------|---------|--------------| | get_latest_version | 根据稳定性偏好获取最新版本 | preferStable 参数,支持所有版本类型 | | check_version_exists | 验证特定版本是否存在并确定其稳定性类型 | 适用于任何 JVM 构建工具 | | check_multiple_dependencies | 检查多个依赖项并可进行过滤 | stableOnly 参数,支持批量操作 | | compare_dependency_versions | 比较当前版本与最新版本并提供升级建议 | includeMigrationGuidance 标志 | | analyze_dependency_age | 将依赖项分类为新鲜/当前/老化/陈旧 | includeModernizationGuidance 标志 | | analyze_release_patterns | 分析维护活动并预测发布时间 | monthsToAnalyze 参数,支持速度趋势分析 | | get_version_timeline | 增强的版本时间线并进行时间分析 | versionCount 参数,支持检测发布间隔 | | analyze_project_health | 对多个依赖项进行全面的健康分析 | includeUpgradeStrategy 标志 |

原始 Context7 文档工具(2 个工具 - 默认启用)

| 工具 | 用途 | 关键特性 | |------|---------|--------------| | resolve-library-id | 搜索库文档 | 始终可用(默认 context7.enabled=true) | | get-library-docs | 根据 ID 获取库文档 | 始终可用(默认 context7.enabled=true) |

工具参数

核心参数

  • preferStable - 在分析中优先考虑稳定版本
  • stableOnly - 仅过滤出适用于生产的稳定版本
  • onlyStableTargets - 仅建议升级到稳定版本

分析参数

  • maxAgeInDays - 设置依赖项可接受的年龄阈值
  • monthsToAnalyze - 指定发布模式的分析周期(默认:24 个月)
  • versionCount - 在时间线分析中要分析的最近版本数量(默认:20 个)
  • includeRecommendations - 在健康分析中包含详细的建议

Context7 集成

Context7 集成默认启用(context7.enabled=true)。Maven 工具在需要升级或现代化时,会自动在响应模型中包含明确的编排指令。此外,服务器作为 MCP 客户端,将原始 Context7 工具(resolve-library-idget-library-docs)直接暴露给你的 AI 助手。当禁用时,响应仅包含核心依赖项分析,不包含编排指令或 Context7 工具。

工具使用示例

get_latest_version

获取 Maven Central 中任何依赖项的最新版本(适用于 Maven、Gradle、SBT、Mill),并可设置稳定性偏好。

参数

  • dependency(字符串,必需):格式为 groupId:artifactId 的 Maven 坐标(不包含版本)
  • preferStable(布尔值,可选):为 true 时,在分析中优先考虑稳定版本(默认:false

示例

{
  "dependency": "org.springframework:spring-core",
  "preferStable": false
}
{
  "dependency": "org.springframework:spring-boot",
  "preferStable": true
}

响应

{
  "dependency": "org.springframework:spring-core",
  "latest_stable": { "version": "6.2.7", "type": "stable" },
  "latest_rc": { "version": "7.0.0-RC1", "type": "rc" },
  "latest_beta": { "version": "7.0.0-beta1", "type": "beta" },
  "latest_alpha": { "version": "7.0.0-alpha1", "type": "alpha" },
  "latest_milestone": { "version": "7.0.0-M5", "type": "milestone" },
  "total_versions": 100
}

check_version_exists

检查特定依赖项版本是否存在,并确定其稳定性类型。适用于任何 JVM 构建工具。

参数

  • dependency(字符串,必需):格式为 groupId:artifactId 的 Maven 坐标(不包含版本)
  • version(字符串,必需):要检查的版本

示例

{
  "dependency": "org.jetbrains.kotlin:kotlin-stdlib",
  "version": "1.9.0"
}

响应

{
  "exists": true,
  "version": "6.0.0",
  "type": "stable"
}

check_multiple_dependencies

检查多个依赖项的最新版本,并可进行过滤。适用于任何 JVM 构建工具。

参数

  • dependencies(字符串,必需):以逗号或换行符分隔的 Maven 坐标列表(不包含版本)
  • stableOnly(布尔值,可选):为 true 时,仅过滤出适用于生产的稳定版本(默认:false

示例

{
  "dependencies": "org.jetbrains.kotlin:kotlin-stdlib,com.squareup.retrofit2:retrofit,org.apache.spark:spark-core_2.13",
  "stableOnly": false
}
{
  "dependencies": "org.springframework:spring-boot,com.fasterxml.jackson.core:jackson-core",
  "stableOnly": true
}

响应(数组)

[
  {
    "dependency": "org.springframework:spring-core",
    "primary_version": "6.2.7",
    "primary_type": "stable",
    "total_versions": 100,
    "stable_versions": 82,
    "latest_stable": { "version": "6.2.7", "type": "stable" },
    "latest_rc": { "version": "7.0.0-RC1", "type": "rc" },
    "latest_beta": null,
    "latest_alpha": null,
    "latest_milestone": { "version": "7.0.0-M5", "type": "milestone" }
  },
  // ...更多结果
]

compare_dependency_versions

比较当前依赖项版本与最新可用版本,并显示升级建议和安全控制。

参数

  • currentDependencies(字符串,必需):以逗号或换行符分隔的包含版本的 Maven 坐标列表(groupId:artifactId:version
  • onlyStableTargets(布尔值,可选):为 true 时,仅建议升级到稳定版本(默认:false

示例

{
  "currentDependencies": "org.jetbrains.kotlin:kotlin-stdlib:1.8.0,com.squareup.retrofit2:retrofit:2.9.0",
  "onlyStableTargets": false
}
{
  "currentDependencies": "org.springframework:spring-boot:2.7.0,org.hibernate:hibernate-core:5.6.0",
  "onlyStableTargets": true
}

响应

{
  "comparison_date": "2025-06-07T22:38:47Z",
  "dependencies": [
    {
      "dependency": "org.springframework:spring-core:6.0.0",
      "current_version": "6.0.0",
      "latest_version": "7.0.0-M5",
      "latest_type": "milestone",
      "update_type": "major",
      "update_available": true,
      "status": "success",
      "error": null
    }
  ],
  "update_summary": {
    "major_updates": 1,
    "minor_updates": 0,
    "patch_updates": 0,
    "no_updates": 0
  }
}

原始 Context7 MCP 工具

注意:Context7 集成默认启用。以下原始 Context7 MCP 工具通过服务器的双 MCP 架构(同时充当 MCP 服务器和 MCP 客户端)自动可用:

resolve-library-id

使用智能名称解析搜索库文档。

参数

  • libraryName(字符串,必需):用于库查找的搜索词(例如,"spring boot","testcontainers")

示例

{
  "libraryName": "testcontainers postgresql"
}

get-library-docs

使用 Context7 ID 获取库的综合文档。

参数

  • context7CompatibleLibraryID(字符串,必需):与 Context7 兼容的库 ID(来自 resolve-library-id
  • topic(字符串,可选):聚焦文档的主题(例如,"setup","migration","configuration")
  • tokens(整数,可选):要检索的最大令牌数(默认:10000)

示例

{
  "context7CompatibleLibraryID": "/testcontainers/testcontainers-java",
  "topic": "postgresql setup",
  "tokens": 5000
}

这些工具通过 Spring AI MCP 客户端集成默认自动可用。服务器既充当 MCP 服务器(暴露 Maven 工具),又充当 MCP 客户端(暴露 Context7 工具),为依赖项分析和文档访问提供统一接口。

🔧 技术细节

  • 框架:Spring Boot 3.5.4 与 Spring AI MCP
  • MCP 协议:2024-11-05
  • Java 版本:24
  • 传输方式:stdio
  • HTTP 客户端:Spring Web RestClient
  • 缓存:Caffeine(24 小时 TTL,最大 2000 个条目)
  • 数据源:Maven Central 仓库(maven-metadata.xml 文件)

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端