Skip to main content
Glama
PintaAI

MCP HTTP Proxy

by PintaAI

MCP HTTP-Proxy

Macht jeden stdio-basierten MCP-Server (wie @browsermcp/mcp) über HTTP/SSE-Transport im Internet verfügbar. Perfekt für Remote-Agenten, die über ein Netzwerk auf MCP-Tools zugreifen müssen.

Funktionen

  • 🌐 Standard MCP SSE-Transport - Folgt der MCP HTTP-Transportspezifikation

  • 🔐 API-Schlüssel-Authentifizierung - Sicherer Zugriff mit Bearer-Token

  • 🚀 Mehrere Bereitstellungsoptionen - Tailscale, ngrok, Cloudflare Tunnel

  • 🔄 Sitzungsverwaltung - Mehrere gleichzeitige Sitzungen werden unterstützt

  • 📦 Funktioniert mit jedem MCP-Server - Standardmäßig auf @browsermcp/mcp eingestellt

Related MCP server: MCP SSE Proxy

Schnellstart

1. Abhängigkeiten installieren

npm install

2. Konfiguration (Optional)

cp .env.example .env
# Edit .env to set your API key

Generieren Sie einen sicheren API-Schlüssel:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

3. Erstellen und Ausführen

npm run build
npm start

Oder für die Entwicklung:

npm run dev

API-Endpunkte (Standard MCP SSE-Transport)

Endpunkt

Methode

Beschreibung

/sse

GET

SSE-Verbindung herstellen (gibt Endpunkt-URL zurück)

/message?sessionId=xxx

POST

JSON-RPC-Nachrichten senden

/health

GET

Gesundheitsprüfung (keine Authentifizierung erforderlich)

/sessions

GET

Aktive Sitzungen auflisten (Authentifizierung erforderlich)

Bereitstellung im Internet

Option 1: Tailscale (Empfohlen für privaten Zugriff)

Tailscale bietet sicheren, privaten Zugriff, ohne das Gerät dem öffentlichen Internet auszusetzen.

# Install Tailscale if not already installed
# Then serve via Tailscale
tailscale serve --bg --http 3000

Oder verwenden Sie direkt Ihre Tailscale-IP:

tailscale status  # Find your Tailscale IP

Ihr MCP-Server ist verfügbar unter:

  • https://your-machine.tailnet-name.ts.net (via serve)

  • http://your-tailscale-ip:3000 (direkte IP)

Verwendung von Ihrem Agenten aus:

{
  "mcpServers": {
    "browser-remote": {
      "url": "http://your-tailscale-ip:3000/sse",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

Option 2: ngrok (Öffentliche URL)

# Install ngrok if not already installed
ngrok http 3000

ngrok stellt eine öffentliche URL wie https://abc123.ngrok.io bereit.

Option 3: Cloudflare Tunnel

# Install cloudflared if not already installed
cloudflared tunnel --url http://localhost:3000

Funktionsweise des SSE-Transports

  1. Client führt GET auf /sse aus - Server erstellt Sitzung, sendet endpoint-Ereignis mit Nachrichten-URL

  2. Client führt POST auf /message?sessionId=xxx aus - Server leitet JSON-RPC an den MCP-Prozess weiter

  3. Server streamt Antworten - MCP-Antworten werden als SSE-message-Ereignisse gesendet

Anwendungsbeispiele

Gesundheitsprüfung testen

curl http://localhost:3000/health

Antwort:

{
  "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)"
  }
}

Verbindung via 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));
});

MCP-Anfrage senden

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"}'

Konfiguration

Umgebungsvariable

Beschreibung

Standard

PORT

Server-Port

3000

HOST

Zu bindender Host

0.0.0.0

MCP_API_KEY

API-Schlüssel für Authentifizierung

(keiner)

MCP_COMMAND

Befehl zum Ausführen des MCP-Servers

npx

MCP_ARGS

JSON-Array der Argumente

["@browsermcp/mcp@latest"]

Verwendung verschiedener MCP-Server

Sie können diesen Proxy mit jedem stdio-basierten MCP-Server verwenden:

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

Sicherheitshinweise

  1. Verwenden Sie immer eine API-Schlüssel-Authentifizierung, wenn Sie den Server im Internet bereitstellen

  2. Verwenden Sie HTTPS (Tailscale, ngrok und Cloudflare bieten dies alle an)

  3. Tailscale wird empfohlen für den privaten Zugriff innerhalb Ihres Tailnets

  4. Rotieren Sie API-Schlüssel regelmäßig

  5. Überwachen Sie Sitzungen über den /sessions-Endpunkt

Fehlerbehebung

MCP-Server startet nicht

Überprüfen Sie die Konsolenprotokolle auf Fehler. Das stderr des MCP-Servers wird an die Konsole des Proxys weitergeleitet.

Verbindung verweigert

  • Stellen Sie sicher, dass der Server läuft: curl http://localhost:3000/health

  • Überprüfen Sie die Tailscale-Konnektivität: tailscale status

Authentifizierung fehlgeschlagen

  • Überprüfen Sie, ob der API-Schlüssel in .env mit Ihrem Anforderungs-Header übereinstimmt

  • Stellen Sie sicher, dass das Präfix "Bearer " im Authorization-Header enthalten ist

SSE funktioniert nicht

  • Stellen Sie sicher, dass Sie eine Verbindung zum /sse-Endpunkt herstellen (nicht nur zur Basis-URL)

  • Überprüfen Sie, ob der Authorization-Header auch bei der GET-Anfrage gesendet wird

Lizenz

MIT

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables interaction with remote MCP servers using SSE transport instead of STDIO for enhanced communication capabilities.
    1
    200,973 PyPI
    2,786
    Python
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Bridges 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
    -