xsj378/mcp-aggregate
If you are the rightful owner of mcp-aggregate and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
An intelligent MCP proxy server that aggregates and serves multiple MCP resource servers, providing efficient MCP selection strategies through a single interface.
MCP Aggregate Server
一个智能的MCP代理服务器,聚合并服务多个MCP资源服务器,通过单一接口提供高效的MCP选用策略。该服务器作为中央枢纽,能够:
- 连接并管理多个MCP资源服务器
- 通过统一接口暴露其组合能力
- 处理请求到适当后端服务器的智能路由
- 聚合来自多个来源的响应
- 智能选择最佳MCP服务器
- 实时监控服务器性能和健康状态
- 自动故障转移和负载均衡
核心特性
🧠 智能MCP选择策略
实现了5种智能选择算法:
- 自适应选择策略:根据请求类型(性能关键型、可靠性关键型、平衡型)自动选择最佳服务器
- 质量评分策略:基于综合质量评分选择服务器,考虑性能、可靠性、能力匹配度和负载因子
- 性能优先策略:专注于响应时间优化,适合对延迟敏感的应用场景
- 负载均衡策略:选择负载最低的服务器,确保资源分配的均衡性
- 轮询策略:保留原有的简单轮询分配方式
📊 实时性能监控
实现了完整的监控体系:
- 指标跟踪:实时跟踪每个服务器的响应时间、成功率、负载因子、健康状态
- 质量评分系统:
- 性能评分:performanceScore = Math.max(0, 1 - (responseTime / 5000))
- 可靠性评分:reliabilityScore = isHealthy ? successRate : 0
- 能力匹配评分:capabilityScore = 1.0 // 默认值,可通过配置调整
- 负载评分:基于请求频率的动态负载评估,负载越低,评分越高,loadScore = 1 - min(1, totalRequests / max(1, timeSinceLastRequest / 1000))
- 综合评分 = 性能评分 × 0.3 + 可靠性评分 × 0.3 + 能力匹配评分 × 0.2 + 负载评分 × 0.2
- 数据聚合:实时聚合多个服务器的性能指标,提供整体视图
🔄 智能故障处理

- 自动健康检查:定期健康检查(默认30秒间隔),自动标记不健康的服务器
- 智能故障处理:指数退避重试策略,可配置的最大重试次数,智能错误分类
- 错误隔离:一个服务器的失败不会影响其他服务器的正常运行
🎛️ 监控仪表板

提供Web界面实时监控MCP服务器状态:
- 实时状态显示:服务器健康状态、性能指标的实时展示
- 性能统计:响应时间、成功率、负载等统计信息的可视化
- API接口:提供RESTful API用于程序化监控
- 自动刷新:5秒自动刷新数据,保持监控信息的实时性
访问地址: http://localhost:3000/dashboard
配置
请在config.json中配置需要管理的MCP
{
"servers": [
{
"name": "高性能服务器",
"transport": {
"command": "/path/to/high-performance-server/build/index.js"
},
"priority": 1,
"capabilities": ["tools", "resources"],
"maxConcurrentRequests": 10
},
{
"name": "稳定服务器",
"transport": {
"command": "npx",
"args": ["@example/stable-mcp-server"]
},
"priority": 2,
"capabilities": ["tools", "prompts"],
"maxConcurrentRequests": 5
},
{
"name": "SSE服务器",
"transport": {
"type": "sse",
"url": "http://example.com/mcp"
},
"priority": 3,
"capabilities": ["resources", "prompts"],
"maxConcurrentRequests": 8
}
],
"selectionStrategy": {
"default": "adaptive",
"fallback": "quality",
"timeout": 5000,
"maxRetries": 2,
"healthCheckInterval": 30000
},
"monitoring": {
"enabled": true,
"metricsRetentionHours": 24,
"alertThresholds": {
"responseTime": 5000,
"errorRate": 0.1,
"unhealthyServers": 0.5
}
}
}
配置选项说明
服务器配置
name
: 服务器名称transport
: 传输配置 (stdio 或 sse)priority
: 服务器优先级 (1-10, 1为最高)capabilities
: 服务器支持的能力列表maxConcurrentRequests
: 最大并发请求数
选择策略配置
default
: 默认选择策略fallback
: 备用选择策略timeout
: 请求超时时间(ms)maxRetries
: 最大重试次数healthCheckInterval
: 健康检查间隔(ms)
监控配置
enabled
: 是否启用监控metricsRetentionHours
: 指标保留时间(小时)alertThresholds
: 告警阈值配置
开发
请将项目clone到本地
安装依赖:
pnpm install
构建服务器:
pnpm run build
开发模式 (自动重建):
pnpm run watch
开发模式 (持续运行):
# Stdio
pnpm run dev
# SSE
pnpm run dev:sse
安装
要与Claude Desktop一起使用,添加服务器配置:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-proxy": {
"command": "/path/to/mcp-proxy-server/build/index.js",
"env": {
"MCP_CONFIG_PATH": "/absolute/path/to/your/config.json",
"KEEP_SERVER_OPEN": "1"
}
}
}
}
KEEP_SERVER_OPEN
将在客户端断开连接时保持SSE运行。当多个客户端连接到MCP代理时很有用。
监控和调试
监控仪表板
启动监控仪表板:
# 在代码中集成监控仪表板
const dashboard = new MonitoringDashboard(metricsManager, healthMonitor, smartSelector, connectedClients);
dashboard.start(3000);
访问 http://localhost:3000/dashboard
查看实时监控界面。
API接口
GET /api/servers/status
- 获取所有服务器状态GET /api/servers/metrics
- 获取性能指标GET /api/servers/health
- 获取健康检查状态POST /api/servers/:serverName/health-check
- 手动触发健康检查GET /api/servers/:serverName/details
- 获取服务器详细信息
调试
由于MCP服务器通过stdio通信,调试可能具有挑战性。我们推荐使用 MCP Inspector,可通过包脚本使用:
pnpm run inspector
Inspector将在浏览器中提供调试工具的URL。
智能选择策略详解
自适应策略工作原理
-
请求类型检测: 根据请求特征自动判断类型
- 超时时间 < 1秒 → 性能关键型
- 优先级 = high → 可靠性关键型
- 其他 → 平衡型
-
策略选择:
- 性能关键型: 选择响应时间最短的服务器
- 可靠性关键型: 选择成功率最高的服务器
- 平衡型: 选择综合评分最高的服务器
-
质量评分计算:
综合评分 = 性能评分 × 0.3 + 可靠性评分 × 0.3 + 能力匹配度 × 0.2 + 负载评分 × 0.2
故障处理机制
- 重试策略: 指数退避重试,避免对故障服务器造成额外压力
- 故障转移: 主服务器失败时自动切换到备用服务器
- 健康恢复: 定期检查不健康服务器,自动恢复可用状态
性能优化
- 连接池管理: 复用连接,减少建立连接的开销
- 请求缓存: 缓存常用请求结果
- 负载均衡: 智能分配请求到负载较低的服务器
- 指标聚合: 实时聚合多个服务器的性能指标
最佳实践
- 服务器配置: 根据服务器能力设置合适的优先级和并发限制
- 监控告警: 配置合理的告警阈值,及时发现性能问题
- 策略选择: 根据应用场景选择合适的默认策略
- 定期维护: 定期检查服务器健康状态和性能指标
- 容量规划: 根据负载情况调整服务器资源配置
这个增强版的MCP代理服务器为Agent提供了智能、可靠的MCP选择能力,确保在各种场景下都能选择到最适合的MCP服务器,大大提升了系统的整体性能和可靠性。