MCPGate
MCPGate
Puerta de enlace MCP ligera: agrega, filtra y observa tus herramientas MCP.
MCPGate se sitúa entre tu cliente MCP (Claude Desktop, Claude Code, Cursor, VS Code) y múltiples servidores MCP. Presenta un punto de conexión MCP unificado mientras te brinda un control granular sobre qué herramientas se exponen.
Características
Agregación de herramientas — Conecta múltiples servidores MCP, expón todas las herramientas a través de un único punto de conexión
Filtrado de herramientas — Permite/bloquea herramientas específicas por servidor mediante una configuración YAML simple
Prefijos de herramientas — Espacios de nombres automáticos (
github.create_issue) para evitar colisionesPanel web — Página de estado en tiempo real que muestra servidores, herramientas y registros de solicitudes
Transporte dual — Stdio (Claude Desktop) o HTTP/SSE (clientes remotos)
Registro de auditoría — Cada llamada a herramienta se registra con tiempos; persistencia opcional en PostgreSQL
Autoalojado — Despliega en Railway, Docker o ejecuta localmente
Inicio rápido
Local (stdio — para Claude Desktop)
npx mcp-gate start --config mcpgate.yamlAñade a tu claude_desktop_config.json:
{
"mcpServers": {
"mcpgate": {
"command": "npx",
"args": ["-y", "mcp-gate", "start", "--config", "/path/to/mcpgate.yaml"]
}
}
}Local (HTTP — con panel)
npx mcp-gate start --config mcpgate.yaml
# Dashboard at http://localhost:3000
# MCP endpoint at http://localhost:3000/mcpDocker
docker compose up
# Dashboard at http://localhost:3000
# Includes PostgreSQL for persistent audit trailO de forma independiente:
docker run -p 3000:3000 \
-e MCPGATE_CONFIG=$(cat mcpgate.yaml | base64 -w 0) \
-e GITHUB_TOKEN=$GITHUB_TOKEN \
ghcr.io/mprezz/mcpgateRailway
Añade un plugin de PostgreSQL para un registro de auditoría persistente: MCPGate detecta DATABASE_URL automáticamente.
Configuración
Crea un mcpgate.yaml:
gateway:
name: "my-gateway"
transport: "stdio" # stdio | http | both
port: 3000
toolPrefix: true # prefix tools with server name
servers:
- name: "github"
transport: "stdio"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_TOKEN: "${GITHUB_TOKEN}"
tools:
allow:
- "create_issue"
- "search_repos"
- name: "filesystem"
transport: "stdio"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
tools:
block:
- "write_file"
- "delete_file"
logging:
level: "info"Consulta mcpgate.example.yaml para ver la referencia completa.
Filtrado de herramientas
Cada servidor admite allow o block (mutuamente excluyentes):
allow— Solo estas herramientas se exponen (lista blanca)block— Todas las herramientas EXCEPTO estas se exponen (lista negra)Ninguno — Todas las herramientas se exponen
Autenticación
Añade un token de portador (bearer token) para proteger el transporte HTTP:
gateway:
auth:
token: "${MCPGATE_AUTH_TOKEN}"Cuando la autenticación está configurada:
Todos los puntos de conexión requieren el encabezado
Authorization: Bearer <token>/healthpermanece público (para comprobaciones de estado de Railway/Docker)Los clientes MCP pasan el token a través de encabezados personalizados en su configuración de transporte
Sin autenticación configurada, todos los puntos de conexión están abiertos (para uso local/privado).
Interpolación de variables de entorno
Usa ${VAR} o ${VAR:-default} en YAML para hacer referencia a variables de entorno:
env:
GITHUB_TOKEN: "${GITHUB_TOKEN}"
API_URL: "${API_URL:-https://api.example.com}"Panel de control
Cuando se ejecuta en modo HTTP, MCPGate sirve un panel web en la URL raíz:
/— Página de estado con servidores ascendentes, herramientas y registros de solicitudes/api/status— API JSON para acceso programático/health— Punto de conexión de comprobación de estado (para Railway/Docker)/mcp— Punto de conexión del protocolo MCP (HTTP con streaming)
Almacenamiento
MCPGate registra cada llamada a herramienta con información de tiempo y errores.
Predeterminado — En memoria (no requiere configuración, se pierde al reiniciar)
PostgreSQL — Establece la variable de entorno
DATABASE_URL(las tablas se crean automáticamente)
# Local development with Docker Compose
docker compose up postgres -d
export DATABASE_URL=postgresql://mcpgate:mcpgate@localhost:5432/mcpgate
npx mcp-gate start --config mcpgate.yamlVariables de entorno
Variable | Requerido | Predeterminado | Descripción |
| No |
| Puerto HTTP (Railway lo establece automáticamente) |
| No | — | Configuración YAML codificada en Base64 (para Railway/Docker) |
| No | — | Cadena de conexión a PostgreSQL (habilita el registro de auditoría persistente) |
| No |
|
|
| No | — | Token de portador para autenticación HTTP (referencia en YAML vía |
Desarrollo
git clone https://github.com/mprezz/mcpgate.git
cd mcpgate
npm install
npm run dev # development with hot reload
npm run build # compile TypeScript
npm run test # run tests (vitest)
npm run lint # eslint
npm run typecheck # tsc --noEmitArquitectura
Client (Claude, Cursor)
│
▼ stdio or HTTP/SSE
┌──────────────────────────────┐
│ MCPGate │
│ │
│ ┌─────────────────────┐ │
│ │ Tool Registry │ │ ← filters + namespaces tools
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Tool Router │ │ ← routes calls to correct server
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Upstream Manager │ │ ← manages server connections
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Storage │ │ ← memory or PostgreSQL
│ └─────────────────────┘ │
└──────────────────────────────┘
│ │ │
▼ ▼ ▼
Server A Server B Server C
(GitHub) (Filesystem) (Custom)Licencia
Apache 2.0 — ver LICENSE
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/martin-santiago/mcpgate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server