MCP Server Proxy
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server Proxylist all available tools from all backend servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server Proxy
一个强大的代理服务器,可以聚合多个 MCP (Model Context Protocol) 服务器,让 LLM 客户端通过单一连接访问来自多个后端服务器的工具、资源和提示模板。
✨ 核心特性
🔗 多服务器聚合: 同时连接多个 MCP 服务器(已测试 25+ 工具)
🚀 多传输协议支持:
代理对外: stdio、HTTP (SSE)、Streamable HTTP
后端连接: stdio、HTTP (SSE)、Streamable HTTP 混合连接
🏷️ 命名空间管理: 通过可配置命名空间避免命名冲突
📡 实时通知转发: 转发后端服务器的通知到客户端
🔥 热重载配置: 配置文件变更自动生效,无需重启服务
🌐 Web管理界面: 现代化的Web界面管理MCP服务器配置
✅ 协议完全兼容: 完全兼容 MCP 规范和 SDK v1.17.5
🔧 会话管理: HTTP 传输的高级会话处理
🛡️ 健壮错误处理: 完善的错误处理和连接管理
📊 全面日志记录: 可配置级别的详细日志
Related MCP server: Master MCP Server
🏗️ 架构设计
基础架构
LLM Client (Cursor/Claude Desktop)
↓ (JSON-RPC 2.0 via stdio/HTTP/Streamable)
MCP Server Proxy (多传输协议支持)
↓ (Multiple connections via stdio/HTTP/Streamable)
Backend MCP Servers (Everything, Memory, SSE, Streamable HTTP, etc.)多传输协议架构
┌─────────────────┐ ┌──────────────────────────────────┐
│ LLM Client │ │ MCP Server Proxy │
│ │ │ │
│ ┌─────────────┐ │ │ ┌─────────────┐ ┌──────────────┐ │
│ │ stdio │◄┼────┼►│ stdio │ │ BackendMgr │ │
│ │ HTTP (SSE) │◄┼────┼►│ HTTP (SSE) │ │ CapabilityAgg│ │
│ │ Streamable │◄┼────┼►│ Streamable │ │ RequestRouter│ │
│ └─────────────┘ │ │ └─────────────┘ │ NotifyMgr │ │
└─────────────────┘ │ └──────────────┘ │
└──────────────────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│Everything │ │Simple SSE │ │Streamable │
│Server │ │Server │ │HTTP Server │
│(stdio) │ │(HTTP) │ │(Streamable) │
└─────────────┘ └─────────────┘ └─────────────┘代理服务器对客户端表现为单一的 MCP 服务器,同时管理与多个后端服务器的连接。
🚀 快速开始
环境要求
Node.js >= 18.0.0
npm >= 8.0.0
操作系统: macOS, Linux, Windows
1. 项目构建
1.1 安装依赖
cd mcp-proxy
npm install1.2 构建项目
npm run build构建完成后,编译后的文件将位于 dist/ 目录中。
2. 启动后端测试MCP服务器
2.1 启动 SSE Server (端口 3004)
# 在新的终端窗口中执行
node examples/server-sse.js服务器将在 http://localhost:3004/sse 启动,提供 2 个工具。
2.2 启动 Streamable HTTP Server (端口 3005)
# 在新的终端窗口中执行
node examples/server-streamable-http.js服务器将在 http://localhost:3005/mcp 启动,提供 3 个工具。
2.3 Everything Server (通过 stdio)
Everything Server 通过 stdio 协议启动,无需单独启动,将由 Proxy 自动管理。
3. 启动 Admin 管理页面
# 在新的终端窗口中执行
npm run dev:admin examples/config.json管理界面将在 http://localhost:3001 启动。
4. 启动 Proxy Server
4.1 基本启动 (支持热重载)
# 使用默认配置启动
node dist/index.js examples/config.json4.2 开发模式启动
# 开发模式,支持自动重启
npm run dev examples/config.json4.3 启用调试日志
# 启用详细调试日志
LOG_LEVEL=DEBUG node dist/index.js examples/config.json4.4 使用 MCP Inspector 测试
# 使用inspector启动
npx @modelcontextprotocol/inspector node dist/index.js examples/config.json5. 配置Cursor连接
5.1 创建 Cursor MCP 配置
编辑或创建 ~/.cursor/mcp.json 文件:
{
"mcpServers": {
"mcp-proxy": {
"command": "node",
"args": ["/path-to-mcp-proxy/mcp-proxy/dist/index.js", "/path-to-mcp-proxy/mcp-proxy/examples/config.json"],
"env": {
"LOG_LEVEL": "INFO"
}
}
}
}5.2 重启 Cursor
完全关闭并重新启动 Cursor 以加载新的 MCP 配置。
6. 完整启动序列
按以下顺序启动所有组件:
# 终端 1: 构建项目
npm run build
# 终端 2: 启动 SSE Server
node examples/server-sse.js
# 终端 3: 启动 Streamable Server
node examples/server-streamable-http.js
# 终端 4: 启动管理界面
npm run dev:admin examples/config.json
# 终端 5: 启动 Proxy Server
LOG_LEVEL=DEBUG node dist/index.js examples/config.json
# 终端 6: 测试功能
npx @modelcontextprotocol/inspector node dist/index.js examples/config.json7. 验证功能
7.1 使用 MCP Inspector 测试
Inspector 将显示:
聚合的工具列表 (预期: 16 个工具)
资源列表 (预期: 10 个资源)
提示模板列表 (预期: 3 个提示模板)
7.2 验证命名空间
工具名称应该带有命名空间前缀:
everything.*- Everything Server 的工具 (11个)sse.*- SSE Server 的工具 (2个)stream.*- Streamable Server 的工具 (3个)
7.3 测试热重载功能
编辑 examples/config.json,例如禁用一个服务器,保存后观察:
Proxy 日志显示服务器被动态移除
工具数量实时变化
Cursor 中的工具列表自动更新
8. 常见问题排查
8.1 端口冲突
如果遇到端口占用问题:
# 查找占用端口的进程
lsof -ti:3004 | xargs kill -9
lsof -ti:3005 | xargs kill -98.2 Cursor 连接问题
检查 MCP 配置文件路径是否正确
确保 Proxy 服务器正在运行
查看 Cursor 的 MCP 日志 (
Cmd+Shift+U→ "MCP Logs")
环境变量
LOG_LEVEL: 日志级别 (DEBUG, INFO, WARN, ERROR)ADMIN_PORT: 管理界面端口 (默认: 3001)
Configuration
Create a configuration file (JSON format) to define your backend servers:
{
"serverInfo": {
"name": "mcp-server-proxy",
"version": "1.0.0"
},
"servers": [
{
"id": "everything",
"name": "Everything Server",
"command": "npx",
"args": ["@modelcontextprotocol/server-everything"],
"transport": "stdio",
"namespace": "everything",
"enabled": true
},
{
"id": "simple-sse",
"name": "Simple SSE Server",
"transport": "http",
"url": "http://localhost:3004/sse",
"namespace": "sse",
"enabled": true
},
{
"id": "streamable-http",
"name": "Streamable HTTP Server",
"transport": "streamable",
"url": "http://localhost:3005/mcp",
"namespace": "stream",
"enabled": true
}
]
}Configuration Options
通用配置
id: 服务器唯一标识符name: 人类可读的服务器名称transport: 传输协议类型 ("stdio", "http", "streamable")namespace: 工具/资源/提示模板的命名空间前缀enabled: 是否启用该服务器
stdio 传输配置
command: 启动服务器的命令args: 命令参数 (可选)env: 环境变量 (可选)
HTTP/Streamable 传输配置
url: 服务器的 HTTP URLHTTP SSE:
http://localhost:3004/sseStreamable HTTP:
http://localhost:3005/mcp
🔥 热重载功能
MCP Proxy支持配置文件热重载,无需重启即可应用配置变更:
工作原理
文件监听: 自动监听配置文件变化
智能差异检测: 只更新发生变化的服务器
动态管理: 新增/删除/修改服务器配置
MCP通知: 自动通知客户端能力变化
使用方法
# 启动支持热重载的代理
node dist/index.js examples/config.json
# 修改配置文件,变更会自动生效
# 查看日志确认重载成功支持的变更类型
✅ 添加新服务器
✅ 删除现有服务器
✅ 修改服务器配置
✅ 启用/禁用服务器
🌐 Web管理界面
现代化的Web界面管理MCP服务器配置:
功能特性
服务器列表: 查看所有配置的MCP服务器
实时状态: 显示服务器连接状态和能力统计
添加服务器: 通过表单添加新的MCP服务器
编辑配置: 修改现有服务器配置
一键操作: 启用/禁用/删除服务器
实时更新: 配置变更立即生效
访问方式
启动管理服务器:
npm run dev:admin examples/config.json打开浏览器访问: http://localhost:3001
通过界面管理服务器配置
详细使用指南请参考 ADMIN_GUIDE.md
🏷️ 命名空间
代理支持命名空间以避免服务器间的冲突:
无命名空间:
list_files,query_database有命名空间:
everything.list_files,sse.simple_tool
实际项目中的命名空间示例:
everything.*- Everything Server 的工具 (11个)sse.*- SSE Server 的工具 (2个)stream.*- Streamable Server 的工具 (3个)
🧪 测试验证
使用 MCP Inspector 测试
# 测试代理服务器
npx @modelcontextprotocol/inspector node dist/index.js examples/config.jsonInspector 将显示:
16个工具: 来自3个不同服务器的聚合工具
10个资源: 文件系统资源访问
3个提示模板: 代码生成、文档编写等
验证成功标志
当所有组件正常运行时,你应该看到:
Proxy 日志显示:
"Starting MCP Server Proxy..."
"Connected to server: everything"
"Connected to server: stream"
"Aggregated capabilities: 16 tools, 10 resources, 3 prompts"
MCP Inspector 显示:
16 个工具 (everything., sse., stream.*)
10 个资源
3 个提示模板
管理界面显示:
服务器状态为 "Connected"
实时能力统计正确
API
The proxy implements the full MCP specification:
Lifecycle
initialize- Initialize connection and negotiate capabilitiesinitialized- Confirm initialization complete
Tools
tools/list- List all available tools from all serverstools/call- Execute a tool (routed to appropriate server)
Resources
resources/list- List all available resources from all serversresources/read- Read a resource (routed to appropriate server)
Prompts
prompts/list- List all available prompts from all serversprompts/get- Get a prompt (routed to appropriate server)
Notifications
notifications/tools/list_changed- Tools list changednotifications/resources/list_changed- Resources list changednotifications/prompts/list_changed- Prompts list changed
Development
项目结构
src/
├── proxy/ # 主代理服务器
├── managers/ # 组件管理器
│ ├── BackendManager.ts # 后端服务器连接管理
│ ├── CapabilityAggregator.ts # 能力聚合
│ ├── RequestRouter.ts # 请求路由
│ └── NotificationManager.ts # 通知处理
├── admin/ # Web管理界面
│ ├── server.ts # 管理服务器
│ └── public/ # 前端资源
│ ├── index.html # 管理界面
│ └── app.js # 前端逻辑
├── types/ # TypeScript类型定义
├── utils/ # 工具函数
└── config/ # 配置管理Building
npm run buildLinting
npm run lint开发和测试
构建项目
npm run build开发模式
# 启动开发模式(支持自动重启)
npm run dev examples/config.json
# 启动管理界面开发模式
npm run dev:admin examples/config.json集成测试
完整功能测试:
# 启动所有测试服务器
node examples/server-sse.js &
node examples/server-streamable-http.js &
# 启动代理服务器
LOG_LEVEL=DEBUG node dist/index.js examples/config.json使用 MCP Inspector 测试:
npx @modelcontextprotocol/inspector node dist/index.js examples/config.json这将:
在本地端口启动 MCP Inspector
将代理服务器作为子进程启动
打开Web界面进行交互式测试
验证16个工具的聚合结果
Web界面功能:
查看聚合的工具、资源和提示模板
使用自定义参数测试工具执行
监控实时 JSON-RPC 通信
调试协议消息和错误
检查服务器能力和元数据
验证清单
✅ 代理服务器无错误启动
✅ 配置文件正确加载
✅ MCP Inspector 成功连接
✅ 协议握手完成 (initialize/initialized)
✅ 工具/资源/提示模板正确聚合 (16个工具)
✅ 命名空间前缀正常工作 (everything., sse., stream.*)
✅ 请求路由功能正常
✅ 错误处理健壮
✅ 通知正确转发
✅ 热重载功能正常
✅ Web管理界面可访问
License
MIT License - see LICENSE file for details.
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
🔧 故障排除
常见问题
端口冲突
# 查找占用端口的进程 lsof -ti:3004 | xargs kill -9 # SSE Server lsof -ti:3005 | xargs kill -9 # Streamable Server lsof -ti:3001 | xargs kill -9 # Admin界面后端服务器启动失败
检查配置文件中的命令和参数
验证服务器可执行文件是否可用
检查环境变量设置
工具未显示
验证服务器已连接(检查日志)
检查命名空间配置
确保服务器支持工具能力
验证服务器的
enabled状态
Cursor 连接问题
检查 MCP 配置文件路径是否正确
确保 Proxy 服务器正在运行
查看 Cursor 的 MCP 日志 (
Cmd+Shift+U→ "MCP Logs")完全重启 Cursor
权限错误
检查文件系统权限
验证环境变量设置正确
chmod +x dist/index.js
调试模式
启用详细调试日志:
LOG_LEVEL=DEBUG node dist/index.js examples/config.json这将显示详细信息:
服务器连接状态
能力加载过程
请求路由详情
通知处理过程
热重载操作
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hr98w/mcp-proxy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server