Skip to main content
Glama
byjit

MCP Server with GitHub OAuth

by byjit

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 ihn 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 bei Ihrem MCP-Server anmelden.

Sie können dies als Referenzbeispiel dafür verwenden, wie andere OAuth-Anbieter in einen auf Cloudflare bereitgestellten MCP-Server integriert werden können, unter Verwendung der workers-oauth-provider-Bibliothek.

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 & installieren Sie die Abhängigkeiten: npm install.

Alternativ können Sie die untenstehende 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 für die Homepage-URL https://mcp-github-oauth.<your-subdomain>.workers.dev an

  • Geben Sie für die Authorization-Callback-URL https://mcp-github-oauth.<your-subdomain>.workers.dev/callback an

  • Notieren Sie Ihre Client-ID und generieren Sie ein Client-Secret.

  • Setzen Sie Secrets über Wrangler

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-Namespaces

  • Erstellen Sie den KV-Namespace: wrangler kv:namespace create "OAUTH_KV"

  • Aktualisieren Sie die Wrangler-Datei mit der KV-ID

Bereitstellung & Test

Stellen Sie den MCP-Server bereit, um ihn auf Ihrer workers.dev-Domain verfügbar zu machen wrangler deploy

Testen Sie den Remote-Server mit dem 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 Authentifizierungsablauf durchlaufen haben, werden Sie sehen, dass die Tools funktionieren:

Sie haben nun 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 "generateImage"-Tool ist auf bestimmte GitHub-Benutzer beschränkt, die in der ALLOWED_USERNAMES-Konfiguration aufgeführt sind:

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

Zugriff auf den Remote-MCP-Server von Claude Desktop

Öffnen Sie Claude Desktop und navigieren Sie zu Settings -> Developer -> Edit Config. Dies öffnet die Konfigurationsdatei, die steuert, auf welche MCP-Server Claude zugreifen kann.

Ersetzen Sie den Inhalt durch die folgende Konfiguration. Sobald Sie Claude Desktop neu starten, öffnet sich ein Browserfenster, das Ihre OAuth-Anmeldeseite anzeigt. Schließen Sie den Authentifizierungsablauf ab, um Claude Zugriff auf Ihren MCP-Server zu gewähren. Nachdem Sie den Zugriff gewährt haben, 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 erscheinen, können Sie Claude bitten, sie zu verwenden. Zum Beispiel: "Könntest du 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. Dies erfordert, dass Sie eine weitere OAuth-App auf GitHub erstellen:

  • Geben Sie für die Homepage-URL http://localhost:8788 an

  • Geben Sie für die Authorization-Callback-URL http://localhost:8788/callback an

  • Notieren Sie Ihre Client-ID und generieren Sie ein Client-Secret.

  • Erstellen Sie eine .dev.vars-Datei in Ihrem Projektstammverzeichnis mit:

GITHUB_CLIENT_ID=your_development_github_client_id
GITHUB_CLIENT_SECRET=your_development_github_client_secret

Entwicklung & Test

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

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 "List Tools" auswählen.

Verwendung von Claude und anderen MCP-Clients

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

Verwendung von Cursor und anderen MCP-Clients

Um Cursor mit Ihrem MCP-Server zu verbinden, wählen Sie Type: "Command" und kombinieren Sie im Feld Command die Befehls- und Argumentfelder 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, aber keine Authentifizierung unterstützt. Sie müssen also 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.

Related MCP server: GitHub MCP Server

Wie funktioniert es?

Lizenz

Dieses Projekt ist unter der GPL-3.0-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.

OAuth-Anbieter

Die OAuth-Provider-Bibliothek dient als vollständige OAuth 2.1-Serverimplementierung für Cloudflare Workers. Sie übernimmt die Komplexität des OAuth-Ablaufs, einschließlich der Token-Ausstellung, Validierung und Verwaltung. In diesem Projekt spielt sie die Doppelrolle:

  • Authentifizierung von MCP-Clients, die eine Verbindung zu Ihrem Server herstellen

  • Verwaltung der Verbindung zu den OAuth-Diensten von GitHub

  • Sichere Speicherung von Token und Authentifizierungsstatus im KV-Speicher

Durable MCP

Durable MCP erweitert die grundlegende MCP-Funktionalität um Cloudflares Durable Objects und bietet:

  • Persistente Zustandsverwaltung für Ihren MCP-Server

  • Sichere Speicherung des Authentifizierungskontexts zwischen Anfragen

  • Zugriff auf authentifizierte Benutzerinformationen über this.props

  • Unterstützung für bedingte Tool-Verfügbarkeit basierend auf der Benutzeridentität

MCP Remote

Die MCP-Remote-Bibliothek ermöglicht es Ihrem Server, Tools bereitzustellen, 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, Tools zu definieren

  • Übernimmt die Serialisierung und Deserialisierung von Anfragen und Antworten

  • Hält die Server-Sent Events (SSE)-Verbindung zwischen Clients und Ihrem Server aufrecht

Related MCP Connectors

Related MCP Servers