MetaMCP
Um servidor proxy que combina múltiplos servidores MCP em um único endpoint, roteando requisições para o servidor subjacente apropriado.
Documentação
MetaMCP MCP Server
🚨 AVISO DE PACOTE DESCONTINUADO 🚨
Este pacote de proxy local está descontinuado na arquitetura all-in-one 2.0 do MetaMCP.
Por favor, confira https://github.com/metatool-ai/metamcp para mais detalhes.
O MetaMCP MCP Server é um servidor proxy que une vários servidores MCP em um só. Ele busca configurações de ferramentas/prompts/recursos do MetaMCP App e roteia solicitações de ferramentas/prompts/recursos para o servidor subjacente correto.
Repositório do MetaMCP App: https://github.com/metatool-ai/metatool-app
Instalação
Instalando via Smithery
Às vezes, o Smithery funciona (confirmado localmente no Windsurf), mas às vezes é instável porque o MetaMCP é especial, pois executa outros MCPs sobre ele. Considere usar a instalação manual se isso não funcionar.
Para instalar o MetaMCP MCP Server para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @metatool-ai/mcp-server-metamcp --client claude
Instalação Manual
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>"
}
}
}
}
Uso
Usando como servidor stdio (padrão)
mcp-server-metamcp --metamcp-api-key <your-api-key>
Usando como servidor SSE
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006
Com a opção de transporte SSE, o servidor iniciará um servidor web Express.js que escuta conexões SSE no endpoint /sse e aceita mensagens no endpoint /messages.
Usando como servidor HTTP Streamable
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport streamable-http --port 12006
Com a opção de transporte HTTP Streamable, o servidor iniciará um servidor web Express.js que lida com solicitações HTTP. Você pode opcionalmente usar o modo --stateless para operação sem estado.
Usando com Docker
Ao executar o servidor dentro de um contêiner Docker e conectar-se a serviços na máquina host, use a opção --use-docker-host para transformar automaticamente URLs localhost:
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006 --use-docker-host
Isso transformará qualquer URL localhost ou 127.0.0.1 em host.docker.internal, permitindo que o contêiner se conecte corretamente aos serviços em execução no host.
Configurando o tratamento de stderr
Para transporte STDIO, você pode controlar como o stderr é tratado nos processos MCP filhos:
# 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>
Opções de stderr disponíveis:
ignore(padrão): Ignorar a saída de stderr dos processos filhosinherit: Repassar o stderr dos processos filhos para o paipipe: Capturar o stderr em um pipe para processamentooverlapped: Usar E/S sobreposta (específico do Windows)
Opções de Linha de Comando
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
Variáveis de Ambiente
METAMCP_API_KEY: Chave de API para MetaMCPMETAMCP_API_BASE_URL: URL base para a API do MetaMCPUSE_DOCKER_HOST: Quando definido como "true", transforma URLs localhost em host.docker.internal para compatibilidade com DockerMETAMCP_STDERR: Tratamento de stderr para transporte STDIO (overlapped, pipe, ignore, inherit). O padrão é "ignore"
Desenvolvimento
# Install dependencies
npm install
# Build the application
npm run build
# Watch for changes
npm run watch
Destaques
- Compatível com QUALQUER cliente MCP
- A camada de múltiplos workspaces permite que você alterne para outro conjunto de configurações MCP com um clique.
- Atualizações dinâmicas de GUI das configurações MCP.
- Isolamento de namespace para MCPs unidos.
Visão Geral da Arquitetura
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
Créditos
- Inspirações e parte do código (refatorado neste projeto) de https://github.com/adamwattis/mcp-proxy-server/