MCP HTTP Proxy
Proxy HTTP MCP
Expone cualquier servidor MCP basado en stdio (como @browsermcp/mcp) a Internet a través del transporte HTTP/SSE. Perfecto para agentes remotos que necesitan acceder a herramientas MCP a través de una red.
Características
🌐 Transporte SSE MCP estándar - Sigue la especificación de transporte HTTP de MCP
🔐 Autenticación con clave API - Acceso seguro con token Bearer
🚀 Múltiples opciones de exposición - Tailscale, ngrok, Cloudflare Tunnel
🔄 Gestión de sesiones - Soporta múltiples sesiones simultáneas
📦 Funciona con cualquier servidor MCP - Por defecto usa
@browsermcp/mcp
Related MCP server: MCP SSE Proxy
Inicio rápido
1. Instalar dependencias
npm install2. Configurar (Opcional)
cp .env.example .env
# Edit .env to set your API keyGenerar una clave API segura:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"3. Construir y ejecutar
npm run build
npm startO para desarrollo:
npm run devEndpoints de la API (Transporte SSE MCP estándar)
Endpoint | Método | Descripción |
| GET | Establecer conexión SSE (devuelve la URL del endpoint) |
| POST | Enviar mensajes JSON-RPC |
| GET | Comprobación de estado (no requiere autenticación) |
| GET | Listar sesiones activas (requiere autenticación) |
Exposición a Internet
Opción 1: Tailscale (Recomendado para acceso privado)
Tailscale proporciona acceso privado y seguro sin exponer a la Internet pública.
# Install Tailscale if not already installed
# Then serve via Tailscale
tailscale serve --bg --http 3000O usa tu IP de Tailscale directamente:
tailscale status # Find your Tailscale IPTu servidor MCP estará disponible en:
https://your-machine.tailnet-name.ts.net(vía serve)http://your-tailscale-ip:3000(IP directa)
Úsalo desde tu agente:
{
"mcpServers": {
"browser-remote": {
"url": "http://your-tailscale-ip:3000/sse",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}Opción 2: ngrok (URL pública)
# Install ngrok if not already installed
ngrok http 3000ngrok proporcionará una URL pública como https://abc123.ngrok.io.
Opción 3: Cloudflare Tunnel
# Install cloudflared if not already installed
cloudflared tunnel --url http://localhost:3000Cómo funciona el transporte SSE
El cliente hace GET a
/sse- El servidor crea la sesión, envía el eventoendpointcon la URL del mensajeEl cliente hace POST a
/message?sessionId=xxx- El servidor reenvía JSON-RPC al proceso MCPEl servidor transmite respuestas - Las respuestas de MCP se envían como eventos
messagede SSE
Ejemplos de uso
Probar comprobación de estado
curl http://localhost:3000/healthRespuesta:
{
"status": "healthy",
"sessions": 0,
"uptime": 10.5,
"transport": "sse",
"endpoints": {
"sse": "/sse (GET - establishes SSE connection)",
"message": "/message?sessionId=xxx (POST - send JSON-RPC messages)"
}
}Conectar vía SSE (JavaScript)
const eventSource = new EventSource('http://localhost:3000/sse', {
headers: { 'Authorization': 'Bearer your-api-key' }
});
eventSource.addEventListener('endpoint', (e) => {
console.log('Message endpoint:', e.data);
// e.data = "/message?sessionId=xxx"
});
eventSource.addEventListener('message', (e) => {
console.log('MCP response:', JSON.parse(e.data));
});Enviar solicitud MCP
curl -X POST "http://localhost:3000/message?sessionId=your-session-id" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Configuración
Variable de entorno | Descripción | Por defecto |
| Puerto del servidor |
|
| Host al que vincular |
|
| Clave API para autenticación | (ninguna) |
| Comando para ejecutar el servidor MCP |
|
| Array JSON de argumentos |
|
Uso de diferentes servidores MCP
Puedes usar este proxy con cualquier servidor MCP basado en stdio:
# Example: Use a custom MCP server
MCP_COMMAND=node
MCP_ARGS=["/path/to/your/mcp-server/dist/index.js"]
# Example: Use Python MCP server
MCP_COMMAND=python
MCP_ARGS=["-m", "your_mcp_server"]Notas de seguridad
Usa siempre autenticación con clave API al exponer a Internet
Usa HTTPS (Tailscale, ngrok y Cloudflare proporcionan esto)
Se recomienda Tailscale para acceso privado dentro de tu tailnet
Rota las claves API periódicamente
Monitorea las sesiones a través del endpoint
/sessions
Solución de problemas
El servidor MCP no inicia
Revisa los registros de la consola en busca de errores. El stderr del servidor MCP se reenvía a la consola del proxy.
Conexión rechazada
Asegúrate de que el servidor esté ejecutándose:
curl http://localhost:3000/healthVerifica la conectividad de Tailscale:
tailscale status
Error de autenticación
Verifica que la clave API en
.envcoincida con el encabezado de tu solicitudAsegúrate de que el prefijo "Bearer " esté incluido en el encabezado Authorization
SSE no funciona
Asegúrate de conectarte al endpoint
/sse(no solo a la URL base)Verifica que el encabezado Authorization también se envíe con la solicitud GET
Licencia
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Streamable HTTP MCP server exposing planner flows, tasks, and squads.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables interaction with remote MCP servers using SSE transport instead of STDIO for enhanced communication capabilities.1200,973 PyPI2,786PythonMIT
- FlicenseNot gradedqualityNot gradedmaintenanceBridges STDIO-based MCP clients with SSE-based MCP servers, allowing applications like Claude Desktop to connect to remote MCP servers that use SSE transport.9-
- FlicenseNot gradedqualityDmaintenanceExposes a local MCP server via ngrok with SSE and Streamable HTTP transports for use in Kiro Web.-
- FlicenseNot gradedqualityDmaintenanceA standalone MCP server that exposes API endpoints as tools for AI assistants, using SSE transport.-