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.
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 hijosinherit: Pasar stderr de los procesos hijos al padrepipe: Capturar stderr en una tubería para procesamientooverlapped: 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 MetaMCPMETAMCP_API_BASE_URL: URL base para la API de MetaMCPUSE_DOCKER_HOST: Cuando se establece en "true", transforma las URLs de localhost a host.docker.internal para compatibilidad con DockerMETAMCP_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
- Inspiraciones y algo de código (refactorizado en este proyecto) de https://github.com/adamwattis/mcp-proxy-server/