Maven存储库MCP服务器
A. 模型上下文协议(MCP) 该服务器提供全面的功能,用于搜索mvnrepository.com和Maven Central中的Maven工件并与之交互。
🚀 特性
- 搜索Maven工件:按关键字查找Maven工件,并显示详细结果
- 版本管理:检索任何工件的所有可用版本
- 依赖管理:准备好使用Maven、Gradle和SBT的依赖代码片段
- POM访问:直接从Maven Central获取完整的POM.xml文件
- 多个传输:支持stdio和SSE(服务器发送事件)协议
- 速率限制:内置智能限速,尊重mvnrepository.com
📋 先决条件
- Node.js 18+
- npm或yarn包管理器
🛠️ 安装和设置
- 克隆和安装依赖关系:
git clone
cd mvn-repository-mcp-server
npm install- 构建项目:
npm run build- 运行服务器:
npm start🚀 用法
传输协议
服务器支持两种通信协议:
stdio传输(默认)
非常适合本地开发和MCP客户端集成:
# Using npm scripts
npm run start:stdio
npm run dev:stdio
# Direct execution
node dist/index.js stdio
node dist/index.js # stdio is defaultSSE 运输
非常适合基于web的客户端和HTTP集成:
# Using npm scripts (port 3000)
npm run start:sse
npm run dev:sse
# Direct execution
node dist/index.js sse
node dist/index.js sse --port 8080 # custom portSSE 端点:
- SSE流: `http://localhost:
/sse`
- 消息发布: `http://localhost:
/message`
可用工具
1. search_maven_artifacts
使用关键字搜索Maven工件。
参数:
query(string,必填):Maven工件的搜索词maxResults(数字,可选):返回的最大结果数(默认值:10)
例子:
{
"name": "search_maven_artifacts",
"arguments": {
"query": "spring-boot-starter",
"maxResults": 5
}
}2. get_artifact_versions
检索特定工件的所有可用版本。
参数:
groupId(字符串,必填):Maven组ID(例如“org.springframework.boot”)artifactId(string,必填):Maven工件ID(例如“spring boot starter”)
例子:
{
"name": "get_artifact_versions",
"arguments": {
"groupId": "junit",
"artifactId": "junit"
}
}3. get_pom_xml
获取特定工件版本的完整POM.xml文件。
参数:
groupId(字符串,必填):Maven组IDartifactId(字符串,必填):Maven工件IDversion(字符串,必填):特定版本
例子:
{
"name": "get_pom_xml",
"arguments": {
"groupId": "org.apache.commons",
"artifactId": "commons-lang3",
"version": "3.12.0"
}
}4. get_dependency_snippets
为Maven、Gradle和SBT生成依赖声明。
参数:
groupId(字符串,必填):Maven组IDartifactId(字符串,必填):Maven工件IDversion(字符串,必填):特定版本
例子:
{
"name": "get_dependency_snippets",
"arguments": {
"groupId": "com.fasterxml.jackson.core",
"artifactId": "jackson-core",
"version": "2.15.2"
}
}🔧 发展
可用脚本
npm run build-将TypeScript编译为JavaScriptnpm run build:watch-观看模式编译npm run start-运行已编译的服务器(stdio传输)npm run start:stdio-明确使用stdio传输npm run start:sse-使用SSE传输(端口3000)npm run dev:stdio-使用stdio构建和运行npm run dev:sse-使用SSE构建和运行npm run clean-删除已编译的文件
项目结构
mvn-repository-mcp-server/
├── src/
│ ├── index.ts # Main server entry point & CLI
│ ├── types.ts # TypeScript interfaces
│ └── searcher.ts # Core search & retrieval logic
├── dist/ # Compiled JavaScript output
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
└── README.md # This file🎯 用例
AI助理
- 依赖关系发现:帮助用户找到适当的Maven依赖项
- 版本管理:协助选择和更新依赖版本
- 生成生成文件:为不同的构建工具生成依赖块
- 证券分析:识别具有已知漏洞的工件
对于开发者
- 快速搜索:无需打开浏览器即可快速查找Maven工件
- 相关性分析:检查POM文件和依赖关系结构
- 多构建支持:同时获取Maven、Gradle和SBT的代码段
- 版本比较:比较同一工件的不同版本
集成示例
使用AI编码助手:
User: "Find me the latest Spring Boot starter for web development"
Assistant: Uses search_maven_artifacts → "spring-boot-starter-web"
Assistant: Uses get_dependency_snippets → Provides Maven/Gradle configs对于依赖关系更新:
User: "Check if there are newer versions of JUnit available"
Assistant: Uses get_artifact_versions → Lists all JUnit versions with dates
Assistant: Highlights latest stable version and any security considerations⚙️ 配置
速率限制
服务器包括智能速率限制,以尊重mvnrepository.com:
- 请求之间至少间隔3秒
- 额外随机延迟2-6秒
- 对403个错误进行指数回退的自动重试
超时设置
- 默认请求超时:30秒
- Maven Central POM请求:15秒
- 失败请求最多可重试3次
🔍 故障排除
常见问题
403拒绝访问错误:
- 服务器实施速率限制以防止这种情况
- 如果遇到,服务器将自动重试并回退
- 如果问题仍然存在,考虑降低请求频率
网络超时:
- 检查互联网连接
- 验证mvnrepository.com的可访问性
- 考虑防火墙或代理设置
SSE连接问题:
- 确保指定的端口可用
- 检查所选端口的防火墙设置
- 验证没有其他服务使用同一端口
调试模式
设置详细日志记录的环境变量:
DEBUG=mvn-repository-mcp-server npm start🤝 贡献
欢迎投稿!请随时提交问题、功能请求或拉取请求。
开发设置
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
