关于 MetaMCP MCP Server
MetaMCP MCP Server 是一个代理服务,可将多个 MCP 服务合并为一个入口,并把工具、提示词和资源请求转发到对应的底层服务。它从 MetaMCP App 获取配置,适合需要统一管理多个 MCP 服务的用户。该包已被标记为弃用,官方建议改用 MetaMCP 2.0 一体化架构。
主要功能
- 01合并多个 MCP 服务为单一入口
- 02按配置将请求路由到对应服务
- 03支持 stdio、SSE 和 Streamable HTTP 传输
- 04通过 METAMCP_API_KEY 连接 MetaMCP API
- 05命名空间隔离已加入的服务
适用场景
- 01为 Claude Desktop 等客户端统一接入多个 MCP 服务
- 02在多个 MCP 配置工作区之间切换
- 03在 Docker 容器中访问宿主机上的服务
MCP 相关
该服务作为 MCP 服务端向客户端暴露合并后的工具、提示词和资源,并在内部连接已安装的底层 MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MetaMCP MCP Server
🚨 已弃用的程序包警告 🚨
在 MetaMCP 的 2.0 一体化架构中,此本地代理程序包已弃用。
请查看 https://github.com/metatool-ai/metamcp 了解更多详情。
MetaMCP MCP Server 是一个代理服务,可将多个 MCP 服务整合为一个。它从 MetaMCP App 获取工具/提示词/资源配置,并将工具/提示词/资源请求路由到相应的底层服务。
MetaMCP App 仓库:https://github.com/metatool-ai/metatool-app
安装
通过 Smithery 安装
有时 Smithery 可以正常工作(已确认在 Windsurf 本地环境中可用),但有时不太稳定,因为 MetaMCP 比较特殊,它会在自身之上运行其他 MCP。若无法正常工作,请考虑改用手动安装。
通过 Smithery 为 Claude Desktop 自动安装 MetaMCP MCP Server:
npx -y @smithery/cli install @metatool-ai/mcp-server-metamcp --client claude
手动安装
export METAMCP_API_KEY=<env>
npx -y @metamcp/mcp-server-metamcp@latest
{
"mcpServers": {
"MetaMCP": {
"command": "npx",
"args": ["-y", "@metamcp/mcp-server-metamcp@latest"],
"env": {
"METAMCP_API_KEY": "<your api key>"
}
}
}
}
用法
用作 stdio 服务(默认)
mcp-server-metamcp --metamcp-api-key <your-api-key>
用作 SSE 服务
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006
使用 SSE 传输选项时,服务会启动一个 Express.js Web 服务,在 /sse 端点监听 SSE 连接,并在 /messages 端点接收消息。
用作 Streamable HTTP 服务
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport streamable-http --port 12006
使用 Streamable HTTP 传输选项时,服务会启动一个处理 HTTP 请求的 Express.js Web 服务。你也可以选择使用 --stateless 模式进行无状态运行。
使用 Docker
在 Docker 容器内运行服务并连接到宿主机上的服务时,请使用 --use-docker-host 选项自动转换 localhost URL:
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006 --use-docker-host
这会将所有 localhost 或 127.0.0.1 URL 转换为 host.docker.internal,使容器能够正常连接到宿主机上运行的服务。
配置 stderr 处理方式
对于 STDIO 传输,你可以控制如何处理子 MCP 进程的 stderr:
# Use inherit to see stderr output from child processes
mcp-server-metamcp --metamcp-api-key <your-api-key> --stderr inherit
# Use pipe to capture stderr (default is ignore)
mcp-server-metamcp --metamcp-api-key <your-api-key> --stderr pipe
# Or set via environment variable
METAMCP_STDERR=inherit mcp-server-metamcp --metamcp-api-key <your-api-key>
可用的 stderr 选项:
ignore(默认):忽略子进程的 stderr 输出inherit:将子进程的 stderr 传递给父进程pipe:通过管道捕获 stderr,以便进行处理overlapped:使用重叠 I/O(仅适用于 Windows)
命令行选项
Options:
--metamcp-api-key <key> API key for MetaMCP (can also be set via METAMCP_API_KEY env var)
--metamcp-api-base-url <url> Base URL for MetaMCP API (can also be set via METAMCP_API_BASE_URL env var)
--report Fetch all MCPs, initialize clients, and report tools to MetaMCP API
--transport <type> Transport type to use (stdio, sse, or streamable-http) (default: "stdio")
--port <port> Port to use for SSE or Streamable HTTP transport, defaults to 12006 (default: "12006")
--require-api-auth Require API key in SSE or Streamable HTTP URL path
--stateless Use stateless mode for Streamable HTTP transport
--use-docker-host Transform localhost URLs to use host.docker.internal (can also be set via USE_DOCKER_HOST env var)
--stderr <type> Stderr handling for STDIO transport (overlapped, pipe, ignore, inherit) (default: "ignore")
-h, --help display help for command
环境变量
METAMCP_API_KEY:MetaMCP 的 API 密钥METAMCP_API_BASE_URL:MetaMCP API 的基础 URLUSE_DOCKER_HOST:设为 "true" 时,将 localhost URL 转换为 host.docker.internal,以兼容 DockerMETAMCP_STDERR:STDIO 传输的 stderr 处理方式(overlapped、pipe、ignore、inherit)。默认为 "ignore"
开发
# Install dependencies
npm install
# Build the application
npm run build
# Watch for changes
npm run watch
亮点
- 兼容任何 MCP 客户端
- 多工作区层支持一键切换到另一组 MCP 配置。
- 通过 GUI 动态更新 MCP 配置。
- 对整合的 MCP 实现命名空间隔离。
架构概览
sequenceDiagram
participant MCPClient as MCP Client (e.g. Claude Desktop)
participant MetaMCP-mcp-server as MetaMCP MCP Server
participant MetaMCPApp as MetaMCP App
participant MCPServers as Installed MCP Servers in Metatool App
MCPClient ->> MetaMCP-mcp-server: Request list tools
MetaMCP-mcp-server ->> MetaMCPApp: Get tools configuration & status
MetaMCPApp ->> MetaMCP-mcp-server: Return tools configuration & status
loop For each listed MCP Server
MetaMCP-mcp-server ->> MCPServers: Request list_tools
MCPServers ->> MetaMCP-mcp-server: Return list of tools
end
MetaMCP-mcp-server ->> MetaMCP-mcp-server: Aggregate tool lists
MetaMCP-mcp-server ->> MCPClient: Return aggregated list of tools
MCPClient ->> MetaMCP-mcp-server: Call tool
MetaMCP-mcp-server ->> MCPServers: call_tool to target MCP Server
MCPServers ->> MetaMCP-mcp-server: Return tool response
MetaMCP-mcp-server ->> MCPClient: Return tool response
鸣谢
- 灵感及部分代码(已在本项目中重构)来自 https://github.com/adamwattis/mcp-proxy-server/
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。