Maven依赖检查工具

一个MCP服务器,提供检查Maven依赖版本的工具,可从Maven中央仓库获取最新版本,支持多种构建工具格式。

  • by Bigsy
  • JavaScript
  • 本地部署
  • 34 星标
  • 更新于
在 GitHub 查看 Bigsy/maven-mcp-server

使用说明

Maven依赖MCP服务器

MCP(模型上下文协议)服务器,提供检查Maven依赖版本的工具。此服务器使LLM能够验证Maven依赖关系,并从Maven Central Repository检索其最新版本。

安装

您可以使用npm全局安装此MCP服务器:

npm install -g mcp-maven-deps

或者直接使用npx运行它:

npx mcp-maven-deps

通过史密瑟里安装

通过以下方式自动安装Claude Desktop的Maven Dependencies Server 史密瑟里:

npx -y @smithery/cli install maven-deps-server --client claude

特性

  • 获取任何Maven依赖项的最新稳定版本(默认情况下不包括预版本)
  • 验证Maven依赖项是否存在
  • 检查是否存在特定版本的依赖关系
  • 列出具有可选预发布筛选的Maven依赖版本
  • 智能预发布检测(alpha、beta、里程碑、RC、快照)
  • 支持完整的Maven坐标,包括打包和分类器
  • 实时访问Maven中央存储库数据
  • 兼容多种构建工具格式(Maven、Gradle、SBT、Mill)

发展:

  1. 克隆此仓库
  2. 安装依赖项: npm install
  3. 构建服务器: npm run build

配置

将服务器添加到MCP设置配置文件中:

{
  "mcpServers": {
    "maven-deps-server": {
      "command": "npx",
      "args": ["mcp-maven-deps"]
    }
  }
}

如果全局安装,您还可以使用:

{
  "mcpServers": {
    "maven-deps-server": {
      "command": "mcp-maven-deps"
    }
  }
}

运输选项

服务器支持两种传输模式:

  1. 标准 (默认)-标准输入/输出通信
  2. 上海证券交易所 (服务器发送事件)-基于HTTP的通信,可选择远程访问

要使用SSE传输,您可以指定主机和端口:

# Local access only (default host: localhost)
npx mcp-maven-deps --port=3000

# Remote access
npx mcp-maven-deps --host=0.0.0.0 --port=3000

在MCP设置中使用SSE传输时:

{
  "mcpServers": {
    "maven-deps-server": {
      "command": "npx",
      "args": ["mcp-maven-deps", "--port=3000"]
    }
  }
}

对于远程访问,请在客户端配置中使用服务器的IP或主机名:

{
  "mcpServers": {
    "maven-deps-server": {
      "command": "npx",
      "args": ["mcp-maven-deps", "--host=your-server-ip", "--port=3000"]
    }
  }
}

可用工具

get_latest_release

检索Maven依赖项的最新稳定版本。默认情况下,这不包括预发布版本(alpha、beta、里程碑、RC、快照),以确保您获得生产就绪版本。

输入架构:

{
  "type": "object",
  "properties": {
    "dependency": {
      "type": "string",
      "description": "Maven coordinate in format \"groupId:artifactId[:version][:packaging][:classifier]\" (e.g. \"org.springframework:spring-core\" or \"org.springframework:spring-core:5.3.20:jar\")"
    },
    "excludePreReleases": {
      "type": "boolean",
      "description": "Whether to exclude pre-release versions (alpha, beta, milestone, RC, snapshot). Default: true",
      "default": true
    }
  },
  "required": ["dependency"]
}

示例用法:

// Get latest stable release (default behavior)
const result1 = await mcpClient.callTool("maven-deps-server", "get_latest_release", {
  dependency: "org.springframework:spring-core"
});
// Returns: "6.2.8" (latest stable, excludes "7.0.0-M6" milestone)

// Include pre-releases if needed
const result2 = await mcpClient.callTool("maven-deps-server", "get_latest_release", {
  dependency: "org.springframework:spring-core",
  excludePreReleases: false
});
// Returns: "7.0.0-M6" (includes pre-releases)

check_maven_version_存在

检查Maven依赖项的特定版本是否存在。版本可以在依赖字符串中提供,也可以作为单独的参数提供。

输入架构:

{
  "type": "object",
  "properties": {
    "dependency": {
      "type": "string",
      "description": "Maven coordinate in format \"groupId:artifactId[:version][:packaging][:classifier]\" (e.g. \"org.springframework:spring-core\" or \"org.springframework:spring-core:5.3.20:jar\")"
    },
    "version": {
      "type": "string",
      "description": "Version to check if not included in dependency string"
    }
  },
  "required": ["dependency"]
}

示例用法:

// Using version in dependency string
const result1 = await mcpClient.callTool("maven-deps-server", "check_maven_version_exists", {
  dependency: "org.springframework:spring-core:5.3.20"
});

// Using separate version parameter
const result2 = await mcpClient.callTool("maven-deps-server", "check_maven_version_exists", {
  dependency: "org.springframework:spring-core",
  version: "5.3.20"
});

list_maven_versions

按部署顺序列出Maven依赖版本,最新版本排在第一位,并带有可选的预发布过滤和深度控制。每行输出一个版本。

输入架构:

{
  "type": "object",
  "properties": {
    "dependency": {
      "type": "string",
      "description": "Maven coordinate in format \"groupId:artifactId[:packaging][:classifier]\" (e.g. \"org.springframework:spring-core\" or \"org.springframework:spring-core:jar\")"
    },
    "depth": {
      "type": "number",
      "description": "Number of versions to return (default: 15)",
      "minimum": 1,
      "maximum": 100
    },
    "excludePreReleases": {
      "type": "boolean",
      "description": "Whether to exclude pre-release versions (alpha, beta, milestone, RC, snapshot). Default: true",
      "default": true
    }
  },
  "required": ["dependency"]
}

示例用法:

// Get last 15 stable versions (default - excludes pre-releases)
const result1 = await mcpClient.callTool("maven-deps-server", "list_maven_versions", {
  dependency: "org.springframework:spring-core"
});
// Returns only stable versions: "6.2.8\n6.1.21\n6.2.7\n..."

// Get last 5 versions including pre-releases
const result2 = await mcpClient.callTool("maven-deps-server", "list_maven_versions", {
  dependency: "org.springframework:spring-core",
  depth: 5,
  excludePreReleases: false
});
// Returns: "7.0.0-M6\n6.2.8\n6.1.21\n7.0.0-M5\n6.2.7"

实现细节

  • 查询 maven-metadata.xml 直接在Maven Central上(https://repo1.maven.org/maven2/<g>/<a>/maven-metadata.xml)--Maven和Gradle自己在依赖解析过程中参考的权威文件。它在部署后几秒钟内更新,因此结果永远不会过时。
  • 支持完整的Maven坐标(组ID:artifactId:version:打包:分类器)
  • 使用正则表达式模式匹配的智能预发布检测
  • 返回中记录的按部署顺序排列的版本(最新版本在前) maven-metadata.xml
  • 包括对无效依赖项和API问题的错误处理
  • 返回有效依赖项的干净、可解析的版本字符串
  • 为版本存在性检查提供布尔响应

预发布检测

服务器使用以下模式自动检测预发布版本:

  • 阿尔法: -alpha, -a
  • 贝塔: -beta, -b
  • 里程碑: -milestone, -m, -M
  • 候选发布版: -rc, -cr
  • 快照: -snapshot

示例:

  • 7.0.0-M6 → 预发布(里程碑)
  • 6.2.8 → 稳定版
  • 3.1.0-SNAPSHOT → 预发布(快照)
  • 2.5.0-RC1 → 预发布(发布候选)

变更通知单: 该工具已从重命名 get_maven_last_updated_version 到 get_latest_release 现在默认情况下不包括预发布。这确保了生产应用程序在默认情况下获得稳定的版本,同时仍然允许在需要时访问预发布版本。

错误处理

服务器处理各种错误情况:

  • 依赖关系格式无效
  • 无效的版本格式
  • 不存在的依赖关系
  • 未找到稳定版本(启用筛选时)
  • API连接问题
  • 响应格式错误
  • 缺少版本信息

发展

要修改或扩展服务器,请执行以下操作:

  1. 对以下内容进行更改 src/index.ts
  2. 使用重建 npm run build
  3. 重新启动MCP服务器以应用更改

许可证

麻省理工学院