MCP服务器集中管理

MCP Citadel是一个集中管理MCP服务器的工具,通过单一枢纽路由所有MCP服务器,支持Unix socket和HTTP/SSE传输,显著减少内存使用和进程数量。

  • by kivo360
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 kivo360/mcp-citadel

使用说明

MCP城堡🚀

集中式MCP服务器管理 -通过具有Unix套接字和HTTP/SSE传输的单个集线器路由所有MCP服务器

它做什么

MCP Citadel没有为每个客户端(Claude、Warp、自定义应用程序)生成18个MCP服务器:

  1. 启动所有MCP服务器一次
  2. 提供双传输端点:
    • UNIX套接字 对于本地客户端(默认)
    • HTTP/SSE 用于远程访问(可选)
  3. 将邮件路由到相应的服务器

节省内存

之前:

  • 3个客户端×18个服务器=54个进程
  • 内存:~5.4GB

之后:

  • 1个集线器+18台服务器=19个进程
  • 内存:约1.8GB
  • 节省:67%(3.6GB)

快速开始

# List configured servers
./target/release/mcp-citadel servers

# Start the hub
./target/release/mcp-citadel start --foreground

# In another terminal, test with netcat
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"server":"github"}}' | nc -U /tmp/mcp-citadel.sock

安装

# Build release binary
cargo build --release

# Install system-wide
sudo cp target/release/mcp-citadel /usr/local/bin/

# Verify
mcp-citadel --help

配置

MCP Citadel会自动读取您的Claude Desktop配置:

~/Library/Application Support/Claude/claude_desktop_config.json

所有18+MCP服务器将自动加载!

建筑

┌─────────────────┐
│  Claude/Warp    │ 
│  (Client)       │
└────────┬────────┘
         │
         ↓
┌────────────────────┐
│   MCP Citadel          │  ← Single process
│   /tmp/mcp-citadel.sock│
└────────┬───────────┘
         │
         ├→ github-mcp
         ├→ tavily-mcp  
         ├→ firecrawl-mcp
         ├→ ...18 servers
         └→ taskmaster-ai

客户端使用情况

选项1:客户端适配器(推荐-零配置!)

客户端适配器提供透明路由。更新您的Claude桌面配置:

{
  "mcpServers": {
    "github": {
      "command": "mcp-client",
      "args": ["github"]
    },
    "tavily": {
      "command": "mcp-client",
      "args": ["tavily-mcp"]
    }
  }
}

就是这样! 适配器会自动执行以下操作:

  • 连接到集线器
  • 将服务器名称注入到消息中
  • 将响应转发回客户端
  • 无需更改消息格式!

选项2:与socat直接连接

更新客户端MCP配置以指向集线器:

{
  "mcpServers": {
    "hub": {
      "command": "socat",
      "args": ["UNIX-CONNECT:/tmp/mcp-citadel.sock", "STDIO"]
    }
  }
}

然后在MCP消息中指定服务器:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {
    "server": "github"
  }
}

或者使用方法前缀:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "github/tools/list"
}

特性

✅ 纯Rust-超快,1.2MB二进制文件
✅ 与Tokio异步/等待
✅ 从Claude Desktop自动加载配置
✅ 双重运输 -Unix套接字+HTTP/SSE(MCP规范2025-06-18)
✅ 智能消息路由
✅ 并发客户处理
✅ 优雅的错误处理
✅ 客户端适配器 -透明代理(619KB)
✅ 后台模式 -带PID管理的后台进程
✅ 健康监测 -自动重启崩溃的服务器
✅ 状态跟踪 -正常运行时间、服务器数量、指标
✅ HTTP/SSE传输 -用于远程访问的流式HTTP
✅ 会话管理 -基于UUID的安全会话
✅ 原产地验证 -DNS重新绑定保护

演出

  • 启动: <1秒
  • 延迟时间: <1ms开销
  • 内存: ~2MB集线器+服务器
  • 吞吐量: 10000+毫秒/秒

CLI命令

mcp-citadel servers           # List configured servers
mcp-citadel start             # Start hub as daemon (background)
mcp-citadel start --foreground # Start hub in foreground
mcp-citadel stop              # Stop daemon
mcp-citadel status            # Show status (PID, uptime, server count)

# HTTP transport
mcp-citadel start --foreground --enable-http              # Enable HTTP on port 3000
mcp-citadel start --foreground --enable-http --http-port 8080 # Custom port

# Client adapter
mcp-client <server-name>  # Connect to specific server via hub

HTTP/SSE传输

MCP Citadel支持 流式HTTP 用于远程访问的传输(MCP规范2025-06-18):

# Enable HTTP transport
mcp-citadel start --foreground --enable-http

# Test with curl
curl -X POST http://127.0.0.1:3000/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{...}}'

安全: HTTP传输绑定到 127.0.0.1 默认情况下,它会验证Origin标头以防止DNS重新绑定攻击。看 HTTP_TRANSPORT.md 获取完整文档。

发展

# Run in dev mode
cargo run -- start --foreground

# Run with HTTP transport
cargo run -- start --foreground --enable-http

# Run tests
cargo test

# Build release
cargo build --release

许可证

麻省理工学院

作者

凯文·希尔