Watson MCP路由器
模型上下文协议(MCP)的集中式代理服务器,将多个MCP服务器聚合到一个统一的接口中。
概述
Watson MCP路由器作为多个MCP服务器的单一入口点,将其工具、资源和提示整合到一个统一的API下。这简化了客户端集成,因为不需要管理到多个单独MCP服务器的连接。
主要特点
- 统一接口:聚合多个子MCP服务器的功能
- 自动发现:动态发现并公开所有子服务器功能
- 命名空间隔离:在功能前添加服务器名称以防止冲突
- 灵活的配置:支持自定义命令、环境和工作目录
- 内置监控:通过特殊资源端点提供服务器统计信息
- 优美的生命周期:通过正确的启动和关闭来管理子进程
快速开始
先决条件
- Node.js 18+
- npm或纱线
安装
git clone https://github.com/2b3pro/watson-mcp-router.git
cd watson-mcp-router
npm install配置
创建 watson_mcprouter_config.json 在项目根目录中:
{
"mcpServers": {
"weather": {
"type": "stdio",
"command": "node",
"args": ["./servers/weather/index.js"]
},
"database": {
"type": "stdio",
"command": "python",
"args": ["-u", "./servers/db/main.py"],
"env": {
"DB_URL": "postgresql://localhost:5432/mydb"
},
"cwd": "./servers/db"
}
}
}跑步
npm start路由器在端口3000上启动,并在以下位置暴露MCP端点 /mcp.
配置参考
服务器配置
每台服务器 mcpServers 支持以下属性:
| 属性 | 必填 | 描述 |
|---|---|---|
type | ✓ | 运输类型(目前仅 "stdio") |
command | ✓ | 可执行命令(例如。, "node", "python") |
args | ✓ | 命令参数数组 |
env | 子进程的环境变量 | |
cwd | 子进程的工作目录 | |
disabled | 设置为 true 跳过此服务器(默认: false) |
配置示例
{
"mcpServers": {
"file-manager": {
"type": "stdio",
"command": "node",
"args": ["./dist/file-server.js"],
"env": {
"LOG_LEVEL": "debug"
},
"cwd": "/opt/file-server"
},
"api-client": {
"type": "stdio",
"command": "./bin/api-server",
"args": ["--config", "production.json"],
"disabled": false
},
"legacy-server": {
"type": "stdio",
"command": "python",
"args": ["legacy.py"],
"disabled": true
}
}
}用法
能力命名
子服务器功能会自动以其服务器别名作为前缀:
- 工具:
weather_get_forecast(从weather服务器的get_forecast工具) - 资源:
database_users://active(从database服务器的users://active资源) - 提示:
file-manager_organize(从file-manager服务器的organize提示)
服务器统计信息
通过特殊资源访问路由器统计:
stats://mcp-router-server返回有关活动服务器、总功能和系统状态的信息。
客户端集成
将您的MCP客户端连接到:
http://localhost:3000/mcp所有子服务器功能都将通过此单一端点可用。
Docker支持
构建图像
docker build -t watson-mcp-router .运行容器
docker run -p 3000:3000 -v $(pwd)/watson_mcprouter_config.json:/app/watson_mcprouter_config.json watson-mcp-router发展
项目结构
src/
├── index.ts # Main application and MCP protocol handling
├── serverManager.ts # Child server lifecycle management
└── types/ # TypeScript type definitions关键组件
- 服务器管理器:处理生成、通信和能力聚合
- MCP协议处理程序:在HTTP和MCP协议消息之间转换
- 模式转换器:将JSON模式转换为Zod进行验证
建筑
npm run build测试
npm test故障排除
常见问题
子服务器未启动
- 验证配置中的命令路径和参数
- 检查是否安装了所需的依赖项
- 查看服务器日志以查找启动错误
功能未出现
- 确保子服务器正确实施MCP协议
- 检查服务器之间的命名冲突
- 验证服务器在配置中未被禁用
连接问题
- 确认路由器正在预期端口上运行
- 如果远程访问,请检查防火墙设置
- 验证MCP客户端是否连接到正确的端点
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
