Remote MCP Server with GitHub OAuth

by danrthompson

Model Context Protocol (MCP)-Server + Github OAuth

Dies ist ein Model Context Protocol (MCP) -Server, der Remote-MCP-Verbindungen mit integriertem Github OAuth unterstützt.

Sie können es in Ihrem eigenen Cloudflare-Konto bereitstellen. Nachdem Sie Ihre eigene Github OAuth-Client-App erstellt haben, verfügen Sie über einen voll funktionsfähigen Remote-MCP-Server, auf dem Sie aufbauen können. Benutzer können sich mit ihrem GitHub-Konto mit Ihrem MCP-Server verbinden.

Sie können dies als Referenzbeispiel für die Integration anderer OAuth-Anbieter in einen in Cloudflare bereitgestellten MCP-Server mithilfe der Bibliothek workers-oauth-provider verwenden.

Der MCP-Server (betrieben von Cloudflare Workers ):

  • Fungiert als OAuth -Server für Ihre MCP-Clients
  • Fungiert als OAuth- Client für Ihren echten OAuth-Server (in diesem Fall GitHub)

Erste Schritte

Klonen Sie das Repo direkt und installieren Sie Abhängigkeiten: npm install .

Alternativ können Sie die folgende Befehlszeile verwenden, um den Remote-MCP-Server auf Ihrem lokalen Computer zu erstellen:

npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth

Für die Produktion

Erstellen Sie eine neue GitHub OAuth-App :

  • Geben Sie als Homepage-URL https://mcp-github-oauth.<your-subdomain>.workers.dev
  • Geben Sie für die Autorisierungs-Callback-URL https://mcp-github-oauth.<your-subdomain>.workers.dev/callback
  • Notieren Sie Ihre Client-ID und generieren Sie ein Client-Geheimnis.
  • Geheimnisse über Wrangler festlegen
wrangler secret put GITHUB_CLIENT_ID wrangler secret put GITHUB_CLIENT_SECRET wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32
Einrichten eines KV-Namespace
  • Erstellen Sie den KV-Namespace: wrangler kv:namespace create "OAUTH_KV"
  • Aktualisieren Sie die Wrangler-Datei mit der KV-ID
Bereitstellen und Testen

Stellen Sie den MCP-Server bereit, um ihn in Ihrer Workers.dev-Domäne verfügbar zu machen. wrangler deploy

Testen Sie den Remote-Server mit Inspector :

npx @modelcontextprotocol/inspector@latest

Geben Sie https://mcp-github-oauth.<your-subdomain>.workers.dev/sse ein und klicken Sie auf „Verbinden“. Sobald Sie den Authentifizierungsprozess durchlaufen haben, sehen Sie, wie die Tools funktionieren:

Sie haben jetzt einen Remote-MCP-Server bereitgestellt!

Zugriffskontrolle

Dieser MCP-Server verwendet GitHub OAuth zur Authentifizierung. Alle authentifizierten GitHub-Benutzer können auf grundlegende Tools wie „add“ und „userInfoOctokit“ zugreifen.

Das Tool „generateImage“ ist auf bestimmte GitHub-Benutzer beschränkt, die in der Konfiguration ALLOWED_USERNAMES aufgeführt sind:

// Add GitHub usernames for image generation access const ALLOWED_USERNAMES = new Set([ 'yourusername', 'teammate1' ]);

Greifen Sie von Claude Desktop aus auf den Remote-MCP-Server zu

Öffnen Sie Claude Desktop und navigieren Sie zu Einstellungen -> Entwickler -> Konfiguration bearbeiten. Dadurch wird die Konfigurationsdatei geöffnet, die steuert, auf welche MCP-Server Claude zugreifen kann.

Ersetzen Sie den Inhalt durch die folgende Konfiguration. Nach dem Neustart von Claude Desktop öffnet sich ein Browserfenster mit Ihrer OAuth-Anmeldeseite. Schließen Sie den Authentifizierungsvorgang ab, um Claude Zugriff auf Ihren MCP-Server zu gewähren. Anschließend stehen Ihnen die Tools zur Verfügung.

{ "mcpServers": { "math": { "command": "npx", "args": [ "mcp-remote", "https://mcp-github-oauth.<your-subdomain>.workers.dev/sse" ] } } }

Sobald die Tools (unter 🔨) in der Benutzeroberfläche angezeigt werden, können Sie Claude bitten, sie zu verwenden. Beispiel: „Könnten Sie das Mathe-Tool verwenden, um 23 und 19 zu addieren?“ Claude sollte das Tool aufrufen und das vom MCP-Server generierte Ergebnis anzeigen.

Für die lokale Entwicklung

Wenn Sie Ihren MCP-Server iterieren und testen möchten, können Sie dies in der lokalen Entwicklung tun. Dazu müssen Sie eine weitere OAuth-App auf GitHub erstellen:

  • Geben Sie für die Homepage-URL http://localhost:8788
  • Geben Sie für die Autorisierungs-Callback-URL http://localhost:8788/callback
  • Notieren Sie Ihre Client-ID und generieren Sie ein Client-Geheimnis.
  • Erstellen Sie eine .dev.vars Datei in Ihrem Projektstamm mit:
GITHUB_CLIENT_ID=your_development_github_client_id GITHUB_CLIENT_SECRET=your_development_github_client_secret
Entwickeln und Testen

Führen Sie den Server lokal aus, um ihn unter http://localhost:8788 wrangler dev verfügbar zu machen

Um den lokalen Server zu testen, geben Sie http://localhost:8788/sse in den Inspector ein und klicken Sie auf „Verbinden“. Sobald Sie den Anweisungen folgen, können Sie die Tools auflisten.

Verwenden von Claude und anderen MCP-Clients

Wenn Sie Claude verwenden, um eine Verbindung zu Ihrem Remote-MCP-Server herzustellen, werden möglicherweise Fehlermeldungen angezeigt. Dies liegt daran, dass Claude Desktop Remote-MCP-Server noch nicht unterstützt und daher manchmal Verwirrung entsteht. Um zu überprüfen, ob der MCP-Server verbunden ist, bewegen Sie den Mauszeiger über das 🔨-Symbol in der unteren rechten Ecke von Claudes Benutzeroberfläche. Ihre Tools sollten dort verfügbar sein.

Verwenden von Cursor und anderen MCP-Clients

Um Cursor mit Ihrem MCP-Server zu verbinden, wählen Sie Type : „Befehl“ und kombinieren Sie im Feld Command “ die Felder „Befehl“ und „Argumente“ zu einem (z. B. npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse ).

Beachten Sie, dass Cursor zwar HTTP+SSE-Server unterstützt, jedoch keine Authentifizierung. Sie müssen daher weiterhin mcp-remote verwenden (und einen STDIO-Server verwenden, keinen HTTP-Server).

Sie können Ihren MCP-Server mit anderen MCP-Clients wie Windsurf verbinden, indem Sie die Konfigurationsdatei des Clients öffnen, dasselbe JSON hinzufügen, das für das Claude-Setup verwendet wurde, und den MCP-Client neu starten.

Wie funktioniert es?

OAuth-Anbieter

Die OAuth-Provider-Bibliothek dient als vollständige OAuth 2.1-Serverimplementierung für Cloudflare Workers. Sie verarbeitet die Komplexität des OAuth-Flows, einschließlich Token-Ausgabe, -Validierung und -Verwaltung. In diesem Projekt übernimmt sie die doppelte Rolle:

  • Authentifizieren von MCP-Clients, die eine Verbindung zu Ihrem Server herstellen
  • Verwalten der Verbindung zu den OAuth-Diensten von GitHub
  • Sicheres Speichern von Token und Authentifizierungsstatus im KV-Speicher
Langlebiges MCP

Durable MCP erweitert die grundlegende MCP-Funktionalität mit den Durable Objects von Cloudflare und bietet:

  • Permanente Statusverwaltung für Ihren MCP-Server
  • Sichere Speicherung des Authentifizierungskontexts zwischen Anfragen
  • Zugriff auf authentifizierte Benutzerinformationen über this.props
  • Unterstützung für bedingte Toolverfügbarkeit basierend auf der Benutzeridentität
MCP-Fernbedienung

Die MCP Remote-Bibliothek ermöglicht Ihrem Server die Bereitstellung von Tools, die von MCP-Clients wie dem Inspector aufgerufen werden können. Sie:

  • Definiert das Protokoll für die Kommunikation zwischen Clients und Ihrem Server
  • Bietet eine strukturierte Möglichkeit, Werkzeuge zu definieren
  • Verarbeitet die Serialisierung und Deserialisierung von Anfragen und Antworten
  • Hält die Server-Sent Events (SSE)-Verbindung zwischen Clients und Ihrem Server aufrecht
-
security - not tested
-
license - not tested
-
quality - not tested

Ein Model Context Protocol-Server, der Remoteverbindungen unterstützt und Benutzer über GitHub OAuth authentifiziert, sodass sie basierend auf ihrer GitHub-Identität auf Tools zugreifen können.

  1. Erste Schritte
    1. Für die Produktion
    2. Zugriffskontrolle
    3. Greifen Sie von Claude Desktop aus auf den Remote-MCP-Server zu
    4. Für die lokale Entwicklung
  2. Wie funktioniert es?
    1. OAuth-Anbieter
    2. Langlebiges MCP
    3. MCP-Fernbedienung
ID: bttey7bfuf