MCP通用桥接器

一个高性能的通用桥接器,用于连接Claude Code到任何MCP服务器,支持多种传输协议并提供生产级可靠性。

  • by JamesPrial
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 jamesprial/mcp-universal-bridge

使用说明

MCP通用电桥

用于将Claude Code连接到任何MCP(模型上下文协议)服务器的高性能通用网桥。为了获得最佳性能,此网桥使用Go编写,提供无缝的stdio到网络转换,并支持多种传输协议。

特性

  • 🚀 高性能:<1ms路由延迟,100k+消息/秒吞吐量
  • 🔌 通用兼容性:适用于任何MCP服务器
  • 🔄 多个传输:SSE、HTTP、WebSocket(自动检测)
  • 💪 生产就绪:断路器、指数回退、健康检查
  • 📊 可观察对象:Prometheus指标,结构化日志记录
  • 🏗️ 单一二进制:~8MB静态二进制文件,<50MB运行时内存
  • 🐳 Docker就绪:多阶段构建,极简Alpine形象

快速开始

安装

# Download latest release
curl -L https://github.com/jamesprial/mcp-universal-bridge/releases/latest/download/mcp-bridge_linux_amd64 -o mcp-bridge
chmod +x mcp-bridge
sudo mv mcp-bridge /usr/local/bin/

配置Claude代码

添加到MCP配置(~/.config/claude/mcp.json 或类似):

{
  "mcpServers": {
    "universal": {
      "command": "mcp-bridge",
      "args": ["--server", "http://localhost:3000"],
      "env": {
        "MCP_TRANSPORT": "sse",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

测试连接

# Test connectivity to your MCP server
mcp-bridge test --server http://localhost:3000

# Run with debug output
mcp-bridge --server http://localhost:3000 --debug

# Use configuration file
mcp-bridge --config /etc/mcp-bridge.yaml

配置

环境变量

变量 描述 默认值
MCP_SERVER_URL MCP服务器URL http://localhost:3000
MCP_TRANSPORT 传输类型(auto/sse/http/ws) auto
MCP_LOG_LEVEL 日志级别(调试/信息/警告/错误) info
MCP_LOG_FORMAT 日志格式(控制台/json) console
MCP_METRICS_PORT Prometheus度量端口 0 (残疾)

配置文件

创建 mcp-bridge.yaml:

server:
  url: "http://localhost:3000"
  transport: "sse"  # auto, sse, http, websocket
  
performance:
  buffer_size: 1024
  max_message_size: 10485760  # 10MB
  worker_pool_size: 10
  
retry:
  max_attempts: 10
  initial_delay: 100ms
  max_delay: 30s
  multiplier: 2
  
monitoring:
  metrics_port: 9090
  health_port: 8080
  log_level: "info"

Docker使用

使用Docker Hub镜像

docker run -it --rm \
  jamesprial/mcp-bridge:latest \
  --server http://host.docker.internal:3000

Docker Compose

version: '3.8'

services:
  mcp-bridge:
    image: jamesprial/mcp-bridge:latest
    environment:
      - MCP_SERVER_URL=http://mcp-server:3000
      - MCP_TRANSPORT=sse
      - MCP_LOG_LEVEL=info
      - MCP_METRICS_PORT=9090
    ports:
      - "9090:9090"  # Metrics
    restart: unless-stopped

从源代码构建

# Clone repository
git clone https://github.com/jamesprial/mcp-universal-bridge.git
cd mcp-universal-bridge

# Build with Docker
docker build -t mcp-bridge .

# Or build locally
go build -o mcp-bridge cmd/mcp-bridge/main.go

演出

在典型的云虚拟机(4 vCPU,8GB RAM)上进行基准测试:

  • 延迟:<1ms消息路由开销
  • 吞吐量:每秒100000多条消息
  • 记忆:<50MB典型使用量
  • 中央处理器:1000毫秒时<5%
  • 二进制大小:~8MB(静态,无依赖关系)

监控

普罗米修斯指标

可在 http://localhost:9090/metrics:

  • mcp_bridge_messages_total -已处理的邮件总数
  • mcp_bridge_message_latency_seconds -消息处理延迟
  • mcp_bridge_active_connections -活动连接计数
  • mcp_bridge_errors_total -按类型列出的错误计数
  • mcp_bridge_message_size_bytes -消息大小分布

健康检查

curl http://localhost:9090/health

建筑

该桥使用Go的并发原语来实现最佳性能:

┌─────────────┐       ┌──────────────┐       ┌─────────────┐
│   Claude    │◄─────►│  MCP Bridge  │◄─────►│ MCP Server  │
│    Code     │ stdio │              │ SSE   │             │
└─────────────┘       └──────────────┘       └─────────────┘
                            │
                      ┌─────▼─────┐
                      │ Goroutines│
                      ├───────────┤
                      │ - Reader  │
                      │ - Writer  │
                      │ - Router  │
                      └───────────┘

关键部件:

  • 标准处理程序:使用缓冲I/O管理stdin/stdout
  • SSE客户端:保持持久的EventSource连接
  • 消息路由器:使用sync关联请求/响应。地图
  • 断路器:防止级联故障
  • 指数级回退:具有抖动的智能重试

故障排除

连接问题

# Test connectivity
mcp-bridge test --server http://your-server:3000

# Enable debug logging
MCP_LOG_LEVEL=debug mcp-bridge --server http://your-server:3000

# Check metrics
curl http://localhost:9090/metrics | grep mcp_bridge_errors

性能调整

对于高通量场景:

performance:
  buffer_size: 4096        # Increase buffer size
  worker_pool_size: 20     # More worker goroutines
  connection_pool: 10      # More HTTP connections

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feat/amazing-feature)
  3. 提交更改(git commit -m 'feat: add amazing feature')
  4. 推送到分支(git push origin feat/amazing-feature)
  5. 打开拉取请求

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

致谢