使用说明
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)
发展:
- 克隆此仓库
- 安装依赖项:
npm install - 构建服务器:
npm run build
配置
将服务器添加到MCP设置配置文件中:
{
"mcpServers": {
"maven-deps-server": {
"command": "npx",
"args": ["mcp-maven-deps"]
}
}
}
如果全局安装,您还可以使用:
{
"mcpServers": {
"maven-deps-server": {
"command": "mcp-maven-deps"
}
}
}
运输选项
服务器支持两种传输模式:
- 标准 (默认)-标准输入/输出通信
- 上海证券交易所 (服务器发送事件)-基于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连接问题
- 响应格式错误
- 缺少版本信息
发展
要修改或扩展服务器,请执行以下操作:
- 对以下内容进行更改
src/index.ts - 使用重建
npm run build - 重新启动MCP服务器以应用更改
许可证
麻省理工学院