仅1MCP
高性能MCP服务器聚合器和智能代理
     
状态: 🎉 所有4台MCP服务器均可运行! STDIO、SSE和Streamable HTTP传输正常工作-跨Context7、顺序思维、内存和NWS天气服务器提供14种工具。第2阶段完成所有6个功能-100%测试通过率(127/127)
Only1MCP是一个基于Rust的高性能聚合器和模型上下文协议(MCP)服务器的智能代理。它为AI应用程序提供了一个统一的接口,可以与多个MCP工具服务器进行交互,同时大大降低了上下文开销(减少50-70%)并提高了性能(\ - 状态:✅ 功能齐全
- ✅ 顺序思维 -多步推理引擎(STDIO传输)
- 工具: sequentialthinking - 包装:@modelcontextprotocol/server顺序思维 - 状态:✅ 功能齐全(MCP协议2024-11-05)
- ✅ 记忆 -知识图和实体存储(STDIO传输)
- 工具: create_entities, add_observations, read_graph, search_nodes, open_nodes, create_relations, delete_entities, delete_observations, delete_relations - 包:@modelcontextprotocol/服务器内存 - 状态:✅ 功能齐全(MCP协议2024-11-05)
- ✅ NWS天气 -国家气象局预报和警报(可流式HTTP传输)
- 工具: get-forecast, get-alerts - 端点:http://localhost:8124/mcp - 协议:MCP 2025-03-26(带会话管理的流式HTTP) - 状态:✅ 功能齐全(需要运行本地服务器)
运输支持
- ✅ SSE服务器 -完全支持自动SSE解析(例如Context7)
- ✅ HTTP MCP服务器 -任何具有HTTP/JSON-RPC 2.0的MCP服务器
- ✅ STDIO MCP服务器 -完整的MCP协议初始化握手(协议版本2024-11-05)
- 行分隔JSON-RPC消息 - 自动初始化(初始化→ 已初始化→ 准备就绪) - 非JSON跳行(处理启动消息) - 连接状态管理(Spawned→ 初始化→ 准备就绪→ 关闭) - 具有指数回退的重试逻辑(3次尝试) - 流程池和重用
- ✅ 流式HTTP服务器 -MCP 2025-03-26规范支持
- 自动会话初始化(对调用者透明) - 通过连接池跨请求持久化会话ID - 使用自动会话重新初始化进行错误恢复 - 双格式解析(JSON和SSE响应)
第二阶段特征(✅ 100%完成-6/6个功能)
配置管理
- ✅ 热重新加载 -无需重新启动即可自动更新配置(通知6.1)
- 500ms去抖动文件观看 - 使用ArcSwap进行原子更新 - 首先进行验证(出错时保留旧配置) - YAML和TOML支持
健康监测
- ✅ 主动健康检查 -基于定时器的健康探测器
- HTTP健康检查(GET/health) - STDIO过程健康检查 - 基于阈值的状态转换 - 断路器集成 - Prometheus度量集成
性能优化
- ✅ 响应缓存 -基于TTL的LRU缓存,moka 0.12
- 三层架构(L1:5分钟,L2:30分钟,L3:2小时TTL) - 自动TTL到期和LRU驱逐 - 无锁并发访问 - 缓存命中/未命中/驱逐指标
- ✅ 请求批处理 -使用DashMap进行时间窗口聚合
- 100ms默认批处理窗口(可配置) - 重复数据消除模式(单个后端调用服务于所有客户端) - 无锁并发批处理管理 - 智能冲洗(基于超时或基于大小) - 列表方法的后端调用减少50-70% - 4普罗米修斯效率跟踪指标 - 支持工具/列表、资源/列表、提示/列表 - 11项综合集成测试
- ✅ TUI接口 -实时监控仪表板(完成-2025年10月18日)
- 5个专用选项卡(概述、服务器、请求、缓存、日志) - 闪烁线(请求/秒趋势)和指标(健康状况、缓存命中率) - 21+键盘快捷键(q、Tab、1-5、,↑↓,/、r、c、Ctrl+c) - Prometheus零拷贝直接访问 - 颜色编码状态指示器(绿色/黄色/红色) - 日志过滤和滚动 - \10k) - 内存:100台服务器为78MB(目标:\80%) - 批处理效率:呼叫减少62%(目标:>50%) - 500多行综合指南(docs/performance_benchmark.md)
______________________________________________________________________
🚀 快速开始
先决条件
- 锈蚀1.75+(稳定)
- 货物(带有铁锈)
- Git
安装
# Clone the repository
git clone https://github.com/doublegate/Only1MCP.git
cd Only1MCP
# Build the project
cargo build --release
# Run tests to verify installation
cargo test
# Expected output: 113 tests passing (100% pass rate)运行代理
# Start the proxy server (development mode)
cargo run -- start --host 0.0.0.0 --port 8080
# Start with release binary
./target/release/only1mcp start --host 0.0.0.0 --port 8080
# Validate configuration
cargo run -- validate config.yaml
# Generate configuration template
cargo run -- config generate --template solo > my-config.yaml测试设置
# Health check
curl http://localhost:8080/health
# Metrics endpoint
curl http://localhost:8080/api/v1/admin/metrics
# Send a test MCP request
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'用法
只有1MCP支持多种操作模式:后台进程模式、前台模式和交互式TUI。
快速开始
# Start daemon in background (default)
only1mcp start
# View available commands
only1mcp --help
# Stop daemon
only1mcp stop守护程序模式(推荐)
启动守护进程 (在后台运行):
only1mcp start输出:
✅ Only1MCP server started successfully!
🌐 Proxy URL: http://127.0.0.1:8080
📋 PID File: /home/user/.config/only1mcp/only1mcp.pid
📝 Log File: /home/user/.config/only1mcp/only1mcp.log
🔧 Loaded MCP Servers:
• Context7 (sse): 2 tools
- resolve-library-id, get-library-docs
• Sequential Thinking (stdio): 1 tool
- sequentialthinking
• Memory (stdio): 9 tools
- create_entities, add_observations, delete_entities, ...
• NWS Weather (streamable_http): 2 tools
- get-forecast, get-alerts
Total: 14 tools across 4 servers停止守护进程:
only1mcp stop检查守护进程状态:
# Via Admin API
curl http://127.0.0.1:8080/api/v1/admin/health
# Response:
{
"status": "healthy",
"servers_total": 4,
"servers_healthy": 4,
"tools_total": 14,
"uptime_seconds": 3600
}前景模式
在当前终端中运行(可用于调试):
only1mcp start --foreground按 Ctrl+C 停止。
交互式TUI
启动终端用户界面:
only1mcp tui自动启动行为:如果守护进程未运行,TUI将自动启动它。
退出行为:按下时 q 要退出TUI,系统将提示您:
🛑 Stop Only1MCP daemon? [y/N]:- 类型
y停止守护进程 - 类型
n(或按Enter键)让守护进程运行
导航:
Tab/Shift+Tab:在选项卡之间切换↑/↓:滚动列表q退出TUI
配置
默认位置: ~/.config/only1mcp/only1mcp.yaml
自动创建:如果不存在配置,Only1MCP会自动从独奏模板创建一个。
自定义配置:
only1mcp start --config /path/to/custom.yaml从模板生成配置:
only1mcp config generate --template solo > only1mcp.yaml
only1mcp config generate --template team > team-config.yaml
only1mcp config generate --template enterprise > enterprise-config.yaml验证配置:
only1mcp validate
only1mcp validate --config custom.yaml管理员API
以编程方式查询守护进程状态:
# List all servers
curl http://127.0.0.1:8080/api/v1/admin/servers
# List all tools
curl http://127.0.0.1:8080/api/v1/admin/tools
# Health check
curl http://127.0.0.1:8080/api/v1/admin/health
# System info
curl http://127.0.0.1:8080/api/v1/admin/system看 API_REFERENCE.md 获取完整的API文档。
高级用法
自定义主机/端口:
only1mcp start --host 0.0.0.0 --port 9000启用调试日志记录:
RUST_LOG=debug only1mcp start --foreground列出可用服务器 (不启动):
only1mcp list --config only1mcp.yaml故障排除
守护进程无法启动:
- 检查是否已运行:
curl http://127.0.0.1:8080/health - 检查日志:
tail -f ~/.config/only1mcp/only1mcp.log - 尝试前台模式:
only1mcp start --foreground
端口已在使用中:
only1mcp start --port 8081配置验证错误:
only1mcp validate # Shows detailed error messages配置热重新加载
只有1MCP支持无需重新启动服务器即可自动重新加载配置:
# Start server with hot-reload enabled
only1mcp start --config only1mcp.yaml
# In another terminal, modify configuration file
vim only1mcp.yaml
# Server automatically detects changes and reloads (within 500ms)
# No restart required!支持的配置格式: 汤米
重新加载的内容:
- 后端服务器列表(添加/删除/修改服务器)
- 健康检查设置
- 负载平衡配置
- 服务器权重和优先级
- 身份验证规则
需要重新启动的内容:
- 服务器主机/端口绑定
- TLS证书
- 核心运行时设置
特征:
- 📁 文件监视 -通知6.1取消公告的事件(500ms)
- ⚛️ 原子更新 -通过ArcSwap进行无锁配置交换
- ✅ 验证优先 -无效配置被拒绝,旧配置保留
- 📊 指标跟踪 -config_reload_total、config_reload_errors
- 🔔 订阅者模式 -多个组件独立通知
例子:
# only1mcp.yaml
server:
host: "0.0.0.0"
port: 8080
servers:
- id: "backend1"
name: "Primary MCP Server"
enabled: true
transport:
type: "http"
url: "http://localhost:3000"
weight: 100
# Add new backend without restart!
- id: "backend2"
name: "Secondary MCP Server"
enabled: true
transport:
type: "stdio"
command: "mcp-server"
args: ["--port", "3001"]
weight: 50
# SSE transport for Context7
- id: "context7"
name: "Context7 MCP Server"
enabled: true
transport:
type: "sse"
url: "https://mcp.context7.com/mcp"
headers:
Accept: "application/json, text/event-stream"
Content-Type: "application/json"
health_check:
enabled: false
weight: 75修改配置,保存,在500毫秒内代理将:
- 检测文件更改(已取消)
- 加载并验证新配置
- 如果验证通过,则进行原子交换
- 通知所有订阅者(注册表、健康检查器等)
- 记录成功或错误的详细信息
韧性:
- 无效的YAML/TOML→ 保留旧配置,记录错误
- 缺失文件→ 记录错误,旧配置处于活动状态
- 验证失败→ 保留旧配置,详细错误
- 快速变化→ 取消公告(仅适用最后一次更改)
监控:
# Check reload metrics
curl http://localhost:8080/api/v1/admin/metrics | grep config_reload主动健康检查
只有1MCP通过可配置的探测器持续监控后端服务器的运行状况:
servers:
- id: backend-1
url: "http://localhost:9001"
health_check:
enabled: true
interval_seconds: 10 # Check every 10 seconds
timeout_seconds: 5 # 5 second timeout
path: "/health" # Health endpoint path
healthy_threshold: 2 # 2 successes = healthy
unhealthy_threshold: 3 # 3 failures = unhealthy健康检查类型:
- 超文本传输协议:GET请求到/health端点(预期200 OK)
- 工作室:进程活动验证
卫生国家:
- 健康的 (绿色):服务器接收流量
- 不健康的 (红色):服务器已停止轮换
- 恢复中 (黄色):再次测试服务器是否正常
自动故障切换: 不健康的服务器将自动从负载平衡器轮换中删除 一旦它们超过健康阈值,就会重新添加。
指标 (普罗米修斯):
health_check_total-检查总数(标签:server_id,结果)health_check_duration_seconds-检查持续时间直方图server_health_status-当前健康状况(0=不健康,1=健康)
响应缓存
只有1MCP缓存后端响应以减少延迟和后端负载:
proxy:
cache:
enabled: true
l1_capacity: 1000 # Tools cache (5 min TTL)
l2_capacity: 500 # Resources cache (30 min TTL)
l3_capacity: 200 # Prompts cache (2 hour TTL)缓存策略:
- L1(工具):5分钟TTL,1000个条目
- L2(资源):30分钟TTL,500个条目
- L3(提示):2小时TTL,200个条目
驱逐政策:
- TTL(生存时间):条目在配置的持续时间后过期
- LRU(最近最少使用):达到容量时删除最旧的条目
缓存操作:
tools/list-工具发现resources/list-资源枚举prompts/list-提示模板
指标 (普罗米修斯):
cache_hits_total-缓存检索成功cache_misses_total-缓存未命中,需要后端调用cache_size_entries-当前缓存条目数cache_evictions_total-LRU驱逐总数
实施:使用moka 0.12进行生产级缓存,具有自动TTL过期和LRU驱逐功能。
运行基准
只有1MCP包括使用Criterion.rs的全面性能基准:
# Run all benchmarks (~5 minutes)
cargo bench
# Run specific category
cargo bench --bench load_balancing # 15 benchmarks: 5 algorithms × 3 sizes
cargo bench --bench caching # 5 benchmarks: hit, miss, mixed, eviction, stats
cargo bench --bench batching # 4 benchmarks: disabled, enabled, varying, concurrent
# Quick mode (faster iteration, less precise)
cargo bench -- --quick
# Save baseline for regression detection
cargo bench -- --save-baseline v0.2.0
# Compare against baseline
cargo bench -- --baseline v0.2.0
# View HTML reports
open target/criterion/report/index.html # macOS
xdg-open target/criterion/report/index.html # Linux性能结果 (已验证):
| 度量 | 目标 | 实际 | 状态 |
|---|---|---|---|
| 延迟(p95) | \10k需求/秒 | ~12.5k需求/秒 | ✅ |
| 内存(100台服务器) | \80% | ~85% | ✅ |
| 批处理呼叫减少 | >50% | ~62% | ✅ |
看 绩效基准指南 以获取全面的文档。
TUI接口
启动交互式终端UI进行实时监控:
# Start TUI
cargo run -- tui
# Or with release binary
./target/release/only1mcp tui键盘快捷键 (总计21+,见 TUI指南):
| 关键 | 动作 | 关键 | 动作 |
|---|---|---|---|
q | 退出 | Tab | 下一页选项卡 |
Shift+Tab | 上一个选项卡 | 1-5 | 跳转到特定选项卡 |
r | 刷新数据 | c | 清除日志 |
↑ / ↓ | 滚动 | / | 搜索日志 |
Space | 暂停更新 | Ctrl+C | 强制退出 |
特性:
- 概述选项卡:指标摘要、火花线图、实时统计数据
- 服务器选项卡:运行状况表、每台服务器的RPS、状态指示器
- 请求选项卡:最近的请求日志、方法分布、延迟百分比
- 缓存选项卡:命中率/未命中率、驱逐统计数据、图层分布
- 日志选项卡:带过滤功能的可滚动日志查看器
演出:CPU开销\80%,延迟减少>50%(已验证)
- ✅ 特征4:请求批处理 (提交\[待定\]-10月18日)
- DashMap无锁并发批处理管理 - 时间窗口聚合(100ms批处理窗口) - 基于尺寸的冲洗(根据10个请求自动冲洗) - 列表方法的重复数据删除 - Tokio oneshot异步响应分发通道 - 新增11项测试(56→67项测试) - 度量标准:批量请求_总计、后端调用_保存_总计 - 性能:后端呼叫减少50%以上(已验证)
- ✅ 特点5:TUI接口 (提交\[待定\]-10月18日)
- ratatui 0.26框架,带跨术语后端 - 5个选项卡:概述、服务器、请求、缓存、日志 - 21+全键盘导航快捷键 - 实时指标刷新(1秒间隔) - 专门的tokio任务与事件轮询 - 增加了21个测试(67→88个测试,15个单元+6个集成) - 性能:CPU开销\10k)✅ - 内存:78MB(目标:\> 和 DashMap`
- bb8连接池(可配置限制)
- 一致的哈希算法,实现均匀的负载分布
- 多层缓存系统
- 异步I/O贯穿始终(Tokio运行时)
- 尽可能实现零拷贝序列化
______________________________________________________________________
🤝 贡献
欢迎投稿!请参阅 贡献.md 作为指导方针。
开发工作流程
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 通过测试进行更改
- 跑
cargo test和cargo clippy - 用常规承诺进行承诺(
feat:,fix:,docs:) - 推到您的分支
- 打开拉取请求
代码规范
- 遵循Rust习惯用法和最佳实践
- 添加新功能的测试
- 更新API变更文档
- 保持功能集中和模块化
- 使用有意义的变量名
______________________________________________________________________
📄 许可证
该项目在以下任一情况下获得双重许可:
- MIT许可证(许可证-麻省理工学院 或 )
- Apache许可证,版本2.0(特许通行证 或 )
由您选择。
______________________________________________________________________
🙏 学分
使用这些出色的Rust板条箱构建:
核心基础设施:
可观测性:
安全:
- Jsonwebtoken -JWT验证
- oauth2 -OAuth2/OIDC流量
第二阶段特征:
还有更多令人惊叹的项目!
______________________________________________________________________
📧 联系
______________________________________________________________________
由以下材料制成❤️ 和生锈
