这是一个基于Spring Boot的Model Context Protocol (MCP) 路由器实现,用Java重写了原始的Go版本。该项目负责代理和路由MCP服务器的请求,提供统一的访问接口。
cd java
mvn clean package
配置文件位于 src/main/resources/application.properties
,你也可以通过创建自定义的 .env.properties
文件来覆盖默认配置。
配置文件示例可参考 src/main/resources/.env.example.properties
。
你可以通过环境变量覆盖配置:
MYSQL_URL
, MYSQL_USER
, MYSQL_PASSWORD
REDIS_HOST
, REDIS_PORT
, REDIS_PASSWORD
PROXY_SERVER_PORT
, API_SERVER_PORT
MCP Router现在支持完整的命令行接口:
java -jar mcprouter.jar [命令] [选项]
可用命令:
proxy
- 启动MCP代理服务器api
- 启动MCP API服务器help
- 显示帮助信息version
- 显示版本信息通用选项:
-c, --config <文件>
- 指定配置文件路径 (默认: .env.properties)示例:
# 启动代理服务器
java -jar mcprouter.jar proxy
# 启动API服务器并指定配置文件
java -jar mcprouter.jar api -c custom-config.properties
# 显示帮助信息
java -jar mcprouter.jar help
也可以使用提供的启动脚本:
# Linux/macOS
./start-proxy.sh [配置文件路径]
./start-api.sh [配置文件路径]
# Windows
start-proxy.bat [配置文件路径]
start-api.bat [配置文件路径]
如果不指定配置文件路径,将默认使用 .env.properties
。
MCP Router提供了调试HTTP请求工具,位于 src/main/resources/debug
目录:
proxytest.http
- 代理服务器测试请求apitest.http
- API服务器测试请求这些文件可以使用VS Code的REST Client扩展或IntelliJ IDEA的HTTP Client功能来执行。
GET /sse/{key}
- 创建SSE连接POST /messages
- 发送SSE消息POST /mcp/{key}
- 转发MCP请求POST /v1/list-servers
- 列出可用的MCP服务器POST /v1/list-tools
- 列出指定服务器的工具POST /v1/call-tool
- 调用指定服务器的工具项目遵循标准的Spring Boot架构:
与原始项目保持一致
本项目针对MCP Router的Java实现中存在的进程管理问题进行了改进。
原有的Java实现在进程管理方面存在以下问题:
我们的改进包括:
增强的进程生命周期管理
进程监控机制
错误处理和资源释放
原有实现中虽然在配置中支持进程共享设置,但实际实现中缺少进程复用的完整逻辑,无法有效处理多客户端共享同一进程的场景。
我们的改进包括:
增强的进程共享逻辑
健康检查和回调机制
配置和监控支持
McpClientServiceImpl
: 实现了进程管理和共享的核心逻辑,包括进程启动、监控和关闭ProcessManagementServiceImpl
: 提供独立的进程管理服务,专注于进程健康检查和生命周期管理ProxyInfoServiceImpl
: 提供会话信息存储和检索服务,支持跨会话的进程共享mcp-servers:
servers:
claude:
command: "python -m mcp.server.claude"
shareProcess: true
serverType: "local"
gemini:
command: "python -m mcp.server.gemini"
shareProcess: true
serverType: "local"
openai:
serverUrl: "http://localhost:8080"
serverType: "remote_rest"
ProcessManagementServiceImpl
服务getOrCreateClient
方法获取或创建MCP客户端shutdown
方法以释放所有资源此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。