MetaMCP MCP服务器
🚨 已弃用包警告 🚨 此本地代理包在MetaMCP的2.0一体化架构中已被弃用。 请访问 https://github.com/metatool-ai/metamcp 以获取更多详细信息。
MetaMCP MCP服务器是一个代理服务器,它可以将多个MCP服务器合并为一个。它从MetaMCP应用程序中获取工具/提示/资源配置,并将工具/提示/资源请求路由到正确的底层服务器。
](https://smithery.ai/server/@metatool-ai/mcp-server-metamcp)
MetaMCP 应用程序仓库:https://github.com/metatool-ai/metatool-app
安装
通过Smithery进行安装
有时Smithery可以正常工作(已在本地Windsurf中确认),但有时它会不稳定,因为MetaMCP很特别,它是在其上运行其他MCP的。如果它不起作用,请考虑使用手动安装。
通过以下方式自动为Claude Desktop安装MetaMCP MCP服务器 Smithery根据上面的信息,执行如下指令:
npx -y @smithery/cli install @metatool-ai/mcp-server-metamcp --client claude手动安装
export METAMCP_API_KEY=
npx -y @metamcp/mcp-server-metamcp@latest{
"mcpServers": {
"MetaMCP": {
"command": "npx",
"args": ["-y", "@metamcp/mcp-server-metamcp@latest"],
"env": {
"METAMCP_API_KEY": ""
}
}
}
}用法
作为stdio服务器使用(默认)
mcp-server-metamcp --metamcp-api-key 用作SSE服务器
mcp-server-metamcp --metamcp-api-key --transport sse --port 12006使用SSE传输选项,服务器将启动一个Express.js网络服务器,该服务器将在指定端口监听SSE连接 /sse 端点并接收消息在 /messages 端点。
作为可流式传输的HTTP服务器使用
mcp-server-metamcp --metamcp-api-key --transport streamable-http --port 12006使用Streamable HTTP传输选项,服务器将启动一个处理HTTP请求的Express.js网络服务器。您可以选择使用 --stateless 无状态操作模式。
使用Docker
在Docker容器内运行服务器并连接到主机上的服务时,请使用 --use-docker-host 自动转换本地主机URL的选项:
mcp-server-metamcp --metamcp-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 --stderr inherit
# Use pipe to capture stderr (default is ignore)
mcp-server-metamcp --metamcp-api-key --stderr pipe
# Or set via environment variable
METAMCP_STDERR=inherit mcp-server-metamcp --metamcp-api-key 可用的 stderr 选项:
ignore忽略子进程的标准错误输出inherit将子进程的 stderr 传递给父进程pipe将 stderr 捕获到管道中进行处理overlapped使用重叠I/O(Windows专用)
命令行选项
Options:
--metamcp-api-key API key for MetaMCP (can also be set via METAMCP_API_KEY env var)
--metamcp-api-base-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 Transport type to use (stdio, sse, or streamable-http) (default: "stdio")
--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 Stderr handling for STDIO transport (overlapped, pipe, ignore, inherit) (default: "ignore")
-h, --help display help for command环境变量
METAMCP_API_KEYMetaMCP的API密钥METAMCP_API_BASE_URLMetaMCP API的基础URLUSE_DOCKER_HOST当设置为“true”时,将本地主机URL转换为host.docker.internal以实现Docker兼容性METAMCP_STDERR针对STDIO传输(重叠、管道、忽略、继承)的Stderr处理。默认设置为“忽略”
开发
# Install dependencies
npm install
# Build the application
npm run build
# Watch for changes
npm run watch亮点
- 兼容任何MCP客户端
- 多工作区层使您能够一键切换到另一组MCP配置。
- MCP配置的GUI动态更新。
- 已连接的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/
