mcpField
M
MetaMCP MCP Server

MetaMCP MCP Server

本地服务
github.com/metatool-aiAI 与智能体15570 周前更新

关于 MetaMCP MCP Server

MetaMCP MCP Server 是一个代理服务,可将多个 MCP 服务合并为一个入口,并把工具、提示词和资源请求转发到对应的底层服务。它从 MetaMCP App 获取配置,适合需要统一管理多个 MCP 服务的用户。该包已被标记为弃用,官方建议改用 MetaMCP 2.0 一体化架构。

主要功能

  1. 01合并多个 MCP 服务为单一入口
  2. 02按配置将请求路由到对应服务
  3. 03支持 stdio、SSE 和 Streamable HTTP 传输
  4. 04通过 METAMCP_API_KEY 连接 MetaMCP API
  5. 05命名空间隔离已加入的服务

适用场景

  1. 01为 Claude Desktop 等客户端统一接入多个 MCP 服务
  2. 02在多个 MCP 配置工作区之间切换
  3. 03在 Docker 容器中访问宿主机上的服务

MCP 相关

该服务作为 MCP 服务端向客户端暴露合并后的工具、提示词和资源,并在内部连接已安装的底层 MCP 服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"metamcp": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MetaMCP MCP Server

🚨 已弃用的程序包警告 🚨

在 MetaMCP 的 2.0 一体化架构中,此本地代理程序包已弃用。

请查看 https://github.com/metatool-ai/metamcp 了解更多详情。

MetaMCP MCP Server 是一个代理服务,可将多个 MCP⁠ 服务整合为一个。它从 MetaMCP App⁠ 获取工具/提示词/资源配置,并将工具/提示词/资源请求路由到相应的底层服务。

smithery badge

MetaServer MCP server

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 的基础 URL
  • USE_DOCKER_HOST:设为 "true" 时,将 localhost URL 转换为 host.docker.internal,以兼容 Docker
  • METAMCP_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

鸣谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。