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.

smithery badge

MetaServer MCP server

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 filhos
  • inherit: Repassar o stderr dos processos filhos para o pai
  • pipe: Capturar o stderr em um pipe para processamento
  • overlapped: 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 MetaMCP
  • METAMCP_API_BASE_URL: URL base para a API do MetaMCP
  • USE_DOCKER_HOST: Quando definido como "true", transforma URLs localhost em host.docker.internal para compatibilidade com Docker
  • METAMCP_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