MetaMCP

Un servidor proxy que combina múltiples servidores MCP en un único endpoint, enrutando las solicitudes al servidor subyacente correspondiente.

Documentación

Servidor MCP de MetaMCP

🚨 ADVERTENCIA DE PAQUETE OBSOLETO 🚨

Este paquete de proxy local está obsoleto en la arquitectura todo-en-uno 2.0 de MetaMCP.

Por favor, consulta https://github.com/metatool-ai/metamcp para más detalles.

El servidor MCP de MetaMCP es un servidor proxy que une múltiples servidores MCP⁠ en uno solo. Obtiene configuraciones de herramientas/prompts/recursos desde la App de MetaMCP⁠ y enruta las solicitudes de herramientas/prompts/recursos al servidor subyacente correcto.

smithery badge

MetaServer MCP server

Repositorio de la App de MetaMCP: https://github.com/metatool-ai/metatool-app

Instalación

Instalación mediante Smithery

A veces Smithery funciona (confirmado localmente en Windsurf), pero a veces es inestable porque MetaMCP es especial, ya que ejecuta otros MCPs sobre él. Por favor, considera usar la instalación manual si no funciona.

Para instalar el servidor MCP de MetaMCP para Claude Desktop automáticamente mediante Smithery:

npx -y @smithery/cli install @metatool-ai/mcp-server-metamcp --client claude

Instalación 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

Uso como servidor stdio (predeterminado)

mcp-server-metamcp --metamcp-api-key <your-api-key>

Uso como servidor SSE

mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006

Con la opción de transporte SSE, el servidor iniciará un servidor web Express.js que escucha conexiones SSE en el endpoint /sse y acepta mensajes en el endpoint /messages.

Uso como servidor HTTP Streamable

mcp-server-metamcp --metamcp-api-key <your-api-key> --transport streamable-http --port 12006

Con la opción de transporte HTTP Streamable, el servidor iniciará un servidor web Express.js que maneja solicitudes HTTP. Opcionalmente, puedes usar el modo --stateless para operación sin estado.

Uso con Docker

Al ejecutar el servidor dentro de un contenedor Docker y conectarse a servicios en la máquina host, usa la opción --use-docker-host para transformar automáticamente las URLs de localhost:

mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006 --use-docker-host

Esto transformará cualquier URL de localhost o 127.0.0.1 a host.docker.internal, permitiendo que el contenedor se conecte correctamente a los servicios que se ejecutan en el host.

Configuración del manejo de stderr

Para el transporte STDIO, puedes controlar cómo se maneja stderr desde los procesos MCP hijos:

# 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>

Opciones de stderr disponibles:

  • ignore (predeterminado): Ignorar la salida stderr de los procesos hijos
  • inherit: Pasar stderr de los procesos hijos al padre
  • pipe: Capturar stderr en una tubería para procesamiento
  • overlapped: Usar E/S superpuesta (específico de Windows)

Opciones de línea de comandos

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

Variables de entorno

  • METAMCP_API_KEY: Clave API para MetaMCP
  • METAMCP_API_BASE_URL: URL base para la API de MetaMCP
  • USE_DOCKER_HOST: Cuando se establece en "true", transforma las URLs de localhost a host.docker.internal para compatibilidad con Docker
  • METAMCP_STDERR: Manejo de stderr para transporte STDIO (overlapped, pipe, ignore, inherit). El valor predeterminado es "ignore"

Desarrollo

# Install dependencies
npm install

# Build the application
npm run build

# Watch for changes
npm run watch

Características destacadas

  • Compatible con CUALQUIER cliente MCP
  • La capa de múltiples espacios de trabajo te permite cambiar a otro conjunto de configuraciones MCP con un solo clic.
  • Actualizaciones dinámicas de configuraciones MCP mediante GUI.
  • Aislamiento de espacios de nombres para MCPs unidos.

Resumen de la arquitectura

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