Skip to main content
Glama

MCP Gateway

Un plano de control autohospedado para servidores de Model Context Protocol. Define cada servidor MCP que uses en un solo lugar, gestiónalos desde una interfaz web y dale a tus agentes un único endpoint — por servidor o para un grupo completo de servidores con herramientas con espacios de nombres.

 Claude Code · Claude Desktop · Cursor · VS Code · your agent
        │  Streamable HTTP  /mcp/servers/<id>   /mcp/groups/<id>      (+ API key)
        ▼
 ┌────────────────────── MCP Gateway ──────────────────────┐
 │  web GUI  ·  admin REST API  ·  sessions  ·  logs        │
 │  groups: namespaced tools  pg-analytics__execute_sql …   │
 │  upstream manager: start/stop, restart w/ backoff,       │
 │  health checks, idle stop, tool filters & renames        │
 └───────┬──────────────────┬──────────────────┬───────────┘
   stdio (npx/uvx/docker)   Streamable HTTP     legacy SSE
   Postgres, filesystem…    remote MCP servers  older servers

Escenario. Un agente necesita dos bases de datos Postgres. Añades pg-analytics y pg-orders en la interfaz (desde la plantilla PostgreSQL (DBHub)), los pones en un grupo databases y apuntas el agente a http://gateway:8808/mcp/groups/databases. El agente ve pg-analytics__execute_sql y pg-orders__execute_sql; la puerta de enlace gestiona los procesos, las credenciales, los reinicios y los registros. Una versión completa y ejecutable está en examples/postgres-scenario.

Características

  • Cualquier transporte ascendente — procesos stdio (npx, uvx, docker run, lo que sea), HTTP Streamable y remotos SSE heredados con autenticación bearer/basic/header.

  • Gestión del ciclo de vida — inicio automático/perezoso, detención por inactividad, reinicio con retroceso exponencial y un límite, pings de comprobación de estado, tiempos de espera de inicio/solicitud/llamada a herramienta, stderr capturado.

  • Grupos — varios servidores detrás de un único endpoint; herramientas y prompts con espacios de nombres (prefix__tool, . o -), o de paso directo con gestión de conflictos; filtros por miembro; instrucciones combinadas; grupo all implícito.

  • Política de herramientas — globs de inclusión/exclusión, ocultar, renombrar y re-describir herramientas por servidor.

  • Proxy MCP completo — herramientas, recursos (+plantillas, suscripciones), prompts, completados, registro, progreso, cancelación, propagación de list_changed, y muestreo / elicitación / raíces de servidor→cliente enrutados de vuelta a la sesión de origen.

  • Transportes descendentes — HTTP Streamable (con estado y flujos reanudables, o sin estado), SSE heredado, además de mcp-gateway-connect, un puente stdio para clientes como Claude Desktop.

  • Seguridad — claves API (hash, con ámbito para servidores/grupos, con caducidad), token de administrador para la GUI/API, redacción de secretos, interpolación ${ENV} para que los secretos nunca tengan que escribirse en la configuración, protección contra rebinding de DNS, lista de permisos CORS.

  • GUI — panel de control, catálogo de servidores con 16 plantillas (Postgres ×3, MySQL, SQLite, filesystem, GitHub, Playwright, Context7, fetch, memory, …), editor con pestañas con Test connection, explorador de herramientas con Try it, navegadores de recursos/prompts, registros en vivo, métricas, fragmentos de conexión por cliente, sesiones, ajustes, importación/exportación (archivos mcpServers de Claude Desktop / Cursor / VS Code).

Related MCP server: Master MCP Server

Capturas de pantalla

El panel de control — servidores en ejecución, grupos, sesiones activas y un feed de eventos en vivo:

Panel de MCP Gateway

El catálogo de servidores, con transporte, estado, recuentos de herramientas y recuentos de reinicios de un vistazo:

Lista de servidores

La vista de detalle de un servidor — datos de ejecución y endpoint, además del explorador de herramientas para llamar herramientas directamente desde la GUI:

Detalle de servidor y explorador de herramientas

Inicio rápido

Requisitos: Node.js ≥ 20 (además de npx/uvx/docker para los servidores ascendentes que ejecutes).

git clone <this repo> mcp-gateway && cd mcp-gateway
npm install
npm run build
npm start                     # → http://127.0.0.1:8808

Luego en la GUI: Servers → Add server → PostgreSQL (DBHub) → pega un DSN → Test connectionCreate server. Abre la pestaña Connect del servidor y copia el fragmento para tu cliente, p. ej.

claude mcp add --transport http pg-analytics http://127.0.0.1:8808/mcp/servers/pg-analytics

Modo de desarrollo (Vite con recarga en caliente en :5173, puerta de enlace en :8808): npm run dev.

Docker

docker compose up -d --build              # GUI on http://localhost:8808, data in ./data

La imagen incluye node/npx, uvx y git, por lo que los servidores MCP basados en npm y Python pueden lanzarse dentro del contenedor. Establece GATEWAY_ADMIN_TOKEN en el entorno cuando el puerto sea accesible para otros. Para precargar una configuración, monta un archivo y establece GATEWAY_SEED_CONFIG=/path/to/config.json — se copia al volumen de datos en el primer inicio.

Cómo encaja

Concepto

Qué es

Servidor

Una definición de servidor MCP ascendente: transporte, ciclo de vida, política de herramientas, opciones de reenvío. Endpoint /mcp/servers/<id>.

Grupo

Un conjunto ordenado de servidores expuesto como un único servidor MCP virtual con herramientas/prompts con espacios de nombres y recursos combinados. Endpoint /mcp/groups/<id>. El grupo implícito all contiene todos los servidores habilitados.

Clave API

Token Bearer para /mcp/* (hash en reposo, con ámbito para servidores/grupos, caducidad opcional). Se aplica cuando Require API key está activado.

Sesión

Un cliente descendente conectado (HTTP Streamable o SSE). Visible y cerrable en la GUI.

Token de admin

Protege la GUI y /api/*. Se establece mediante GATEWAY_ADMIN_TOKEN o en Ajustes.

La configuración es un único archivo JSON (data/config.json, modo 0600, escrituras atómicas, se conserva .bak) — consulta docs/CONFIG.md para conocer todos los campos. La configuración del cliente para cada herramienta está en docs/CLIENTS.md; el diseño completo está en docs/SPEC.md. La GUI también tiene una página Docs integrada (/docs, junto a Ajustes) que explica cómo funciona la puerta de enlace y cómo añadir, personalizar y conectar servidores.

CLI

mcp-gateway serve [--host 127.0.0.1] [--port 8808] [--data-dir ./data] [--config <file>] [--public-url <url>] [--log-level info]
mcp-gateway import <file> [--format gateway|mcpServers] [--mode merge|replace]    # into the config file (restart to apply)
mcp-gateway export [--format gateway|mcpServers] [--secrets] [--out <file>]
mcp-gateway hash-token <token>                                                     # sha256 for settings.auth.adminTokenHash
mcp-gateway connect <url> [--api-key K] [--header 'Name: v'] [--sse]              # stdio ⇄ HTTP bridge
mcp-gateway-connect <url> …                                                        # same bridge as a standalone package (@mcp-gateway/connect)

Entorno: GATEWAY_HOST, GATEWAY_PORT, GATEWAY_DATA_DIR, GATEWAY_CONFIG, GATEWAY_ADMIN_TOKEN, GATEWAY_PUBLIC_URL, GATEWAY_LOG_LEVEL, GATEWAY_REQUIRE_API_KEY, GATEWAY_WEB_DIR, GATEWAY_SEED_CONFIG (Docker). Precedencia: flags de CLI > entorno > config.json > valores predeterminados.

Endpoints

Ruta

Propósito

POST/GET/DELETE /mcp/servers/:id · /mcp/groups/:id

Endpoints MCP HTTP Streamable

GET /mcp/servers/:id/sse + POST …/messages?sessionId= (igual para grupos)

HTTP+SSE heredado

GET /api/health

disponibilidad (sin autenticación)

/api/servers, /api/groups, /api/keys, /api/sessions, /api/logs, /api/settings, /api/templates, /api/config/{export,import}, /api/connect/:kind/:id

API REST de administración (JSON; Authorization: Bearer <admin token> cuando se establece)

GET /api/events

Feed de Server-Sent Events (estado, registros, sesiones, métricas) usado por la GUI

/

la GUI web

La lista completa de rutas con las formas de solicitud/respuesta está en docs/SPEC.md §7.

Notas de seguridad

  • Sin token de administrador, la GUI/API están abiertas: mantén el enlace de loopback predeterminado o establece GATEWAY_ADMIN_TOKEN.

  • Activa Require API key antes de exponer /mcp más allá de localhost; limita las claves a los servidores/grupos que necesite cada agente.

  • Secretos: prefiere referencias ${VAR} a valores literales; los valores bajo claves de apariencia secreta se redactan en las respuestas de la API y en las exportaciones (?secrets=1 / la exportación with secrets los incluye).

  • Pon un proxy inverso con terminación TLS delante para cualquier cosa expuesta a internet (necesario para el conector MCP de la API de Anthropic).

  • La puerta de enlace ejecuta los comandos que configures: cualquiera con acceso de administrador puede ejecutar procesos arbitrarios en el host.

Desarrollo

npm run dev          # gateway (tsx watch) + Vite dev server
npm run typecheck    # all workspaces
npm test             # vitest: shared unit tests, server integration tests (real stdio/HTTP fixtures), bridge tests
npm run build        # server bundle (esbuild), connect bundle, web (vite)

Estructura: packages/shared (esquema de configuración zod, DTOs, plantillas, ayudantes de nombres — seguro para navegador), packages/server (Express 5 + @modelcontextprotocol/sdk: gestor ascendente, servidor proxy, sesiones, rutas REST/MCP, CLI), packages/web (React 19 + Vite), packages/connect (puente stdio), examples/postgres-scenario (demo con docker-compose).

Limitaciones / hoja de ruta

  • OAuth para servidores ascendentes no está implementado (usa autenticación bearer/basic/header); OAuth para clientes descendentes no está implementado (se usan claves API en su lugar).

  • Los recursos no tienen espacios de nombres en los grupos: los URI se enrutan a su servidor propietario; los URI idénticos entre miembros se resuelven al primer miembro.

  • Sin limitación de velocidad; pon un proxy inverso delante si lo necesitas.

  • Sesiones y registros en memoria de un solo proceso (un reinicio pierde las sesiones; los clientes se reinicializan).

Licencia

Apache License 2.0 — consulta LICENSE y NOTICE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A central hub that aggregates multiple MCP resource servers into a single unified interface, enabling users to access tools and capabilities from multiple backend servers through one connection point.
    45
    202
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Aggregates multiple MCP servers behind a single, secure endpoint with unified tool/resource discovery, OAuth authentication, and resilient request routing. Enables users to manage and interact with multiple MCP backends through one centralized interface with load balancing and circuit breakers.
    2
  • F
    license
    Not graded
    quality
    D
    maintenance
    A centralized gateway and router that integrates multiple MCP servers into a single endpoint with built-in policy enforcement and secret management. It features a Web GUI for managing tool access, audit logs, and multi-environment configurations across various sub-servers.

View all related MCP servers

Related MCP Connectors

  • 34 production API tools over one hosted MCP endpoint.

  • MCP Server for agents to onboard, pay, and provision services autonomously with InFlow

  • MCP server for AI access to Swagger by SmartBear.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shamalawy/mcp-gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server