Zum Hauptinhalt springen

MCP OAuth Redirect URIs für Cursor, Claude und ChatGPT: Registrierung von MCP-Clients in Casdoor

· 9 Minuten Lektüre
Yang Luo
Casdoor Maintainer

Jeder MCP-Client sendet seine eigene Redirect URI, wenn er sich bei einem OAuth-geschützten MCP-Server anmeldet. Cursor Desktop verwendet http://localhost:8787/callback (Versionen vor Mitte 2026 verwendeten cursor://anysphere.cursor-mcp/oauth/callback), Cursor im Web und Cursor Cloud Agents verwenden https://www.cursor.com/agents/mcp/oauth/callback, claude.ai, Claude Desktop Connectors, Claude Mobile und Cowork verwenden https://claude.ai/api/mcp/auth_callback, und ChatGPT verwendet https://chatgpt.com/connector_platform_oauth_redirect oder eine pro Verbindung https://chatgpt.com/connector/oauth/<callback-id>. Wenn Sie die dynamische Client-Registrierung in Casdoor aktivieren, geben Sie keine dieser URLs ein: Die Clients registrieren sich selbst oder übergeben Casdoor ein Client-ID-Metadaten-Dokument. Sie fügen sie zu Redirect URLs hinzu, nur wenn Sie eine Casdoor-Anwendung für einen Client manuell erstellen.

Redirect URIs nach Client​

ClientRedirect URIWie er eine Client-ID von Casdoor erhältHinweise
Cursor desktop (aktuell)http://localhost:8787/callbackDCR, oder auth.CLIENT_ID in mcp.jsonFester Port 8787
Cursor web und Cloud Agentshttps://www.cursor.com/agents/mcp/oauth/callbackDCR, oder auth.CLIENT_IDMit DCR registriert die Desktop-App diese URI und die localhost-URI
Cursor desktop (ältere Versionen)cursor://anysphere.cursor-mcp/oauth/callbackDCR, oder auth.CLIENT_IDCursor machte die Loopback-URI im Juli 2026 zum Standard
claude.ai, Claude Desktop connectors, Claude mobile, Coworkhttps://claude.ai/api/mcp/auth_callbackCIMD, dann DCR, oder eine Client-ID, die im Dialog für benutzerdefinierte Connector eingegeben wirdAnthropics Server stellen die Anfragen
Claude Codehttp://localhost:<port>/callback und http://127.0.0.1:<port>/callbackCIMDDer Port ändert sich pro Sitzung
Claude Desktop über mcp-remotehttp://localhost:<port>/oauth/callbackDCRDer Port wird aus der Server-URL abgeleitet
ChatGPThttps://chatgpt.com/connector_platform_oauth_redirect, oder https://chatgpt.com/connector/oauth/<callback-id>CIMD, DCR, oder ein vordefinierter ClientKopieren Sie den exakten Wert von ChatGPT

Diese Werte stammen aus der Dokumentation der Anbieter vom 2. November 2026 (siehe Referenzen). Clients ändern sie. Wenn eine Anmeldung fehlschlägt, lesen Sie den Parameter redirect_uri der Autorisierungsanfrage in der Adressleiste des Browsers und vergleichen Sie ihn mit dem, was Casdoor hat.

Die Tabelle gilt für zwei Szenarien: den in Casdoor integrierten MCP-Server unter /api/mcp und Ihren eigenen MCP-Server, der Casdoor als Autorisierungsserver verwendet. In beiden Fällen findet der Client Casdoor über die Metadaten der geschützten Ressource (RFC 9728) und erhält seine Client-ID von Casdoor.

Option 1: Clients lassen sich selbst registrieren​

Casdoor unterstützt die dynamische Client-Registrierung (RFC 7591) unter /api/oauth/register sowie Client-ID-Metadatendokumente (CIMD), bei denen die client_id eine HTTPS-URL eines JSON-Dokuments ist, das die Redirect-URIs des Clients auflistet. Ein Schalter steuert beides: Enable dynamic client registration in der Organisation. Er ist standardmäßig deaktiviert, für jede Organisation einschließlich built-in.

Wenn der Schalter für built-in aktiviert ist, zeigt das Discovery-Dokument, wonach die Clients suchen:

curl -s https://your-casdoor.com/.well-known/openid-configuration | jq '{
registration_endpoint,
client_id_metadata_document_supported,
code_challenge_methods_supported,
token_endpoint_auth_methods_supported,
authorization_response_iss_parameter_supported
}'
{
"registration_endpoint": "https://your-casdoor.com/api/oauth/register",
"client_id_metadata_document_supported": true,
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": ["client_secret_basic", "client_secret_post", "private_key_jwt", "none"],
"authorization_response_iss_parameter_supported": true
}

Jeder Client wählt dann seine Methode:

  • Claude verwendet CIMD nur, wenn die Metadaten sowohl client_id_metadata_document_supported: true als auch none in token_endpoint_auth_methods_supported enthalten. Casdoor bietet beides an, sobald der Schalter aktiviert ist, daher identifiziert sich Claude mit einer Dokument-URL und Casdoor erstellt eine Anwendung namens cimd_.... Andernfalls greift Claude auf DCR zurück.
  • ChatGPT bevorzugt CIMD mit der client_id https://chatgpt.com/oauth/client.json (oder einer Variante pro Callback) und verwendet DCR, wenn CIMD nicht verfügbar ist.
  • Cursor registriert sich über DCR als öffentlicher Client ohne Secret. Die Dokumentation von Cursor erwähnt CIMD nicht.
  • mcp-remote registriert sich über DCR.

Die Redirect-URIs stammen aus der Registrierungsanfrage oder dem Metadatendokument, sodass nichts manuell eingegeben werden muss. Registrierte Clients laufen unter einer eingeschränkten Rolle und ihre Tokens können die Management-API nicht aufrufen. Siehe Dynamic client registration für die vollständigen Regeln und die Organisation, in der ein Client landet.

Option 2: Eine Anwendung für den Client erstellen​

Wenn Sie die Registrierung deaktiviert lassen, erstellen Sie eine Anwendung pro Client, damit Sie diese einzeln widerrufen können:

  1. Gehen Sie in der Casdoor Admin-Console zu Identity > Applications und fügen Sie eine Anwendung hinzu, beispielsweise cursor-mcp.
  2. Fügen Sie die Redirect-URIs des Clients aus der Tabelle zu Redirect URLs hinzu. Für Cursor fügen Sie alle drei hinzu, da verschiedene Cursor-Installationen unterschiedliche senden.
  3. Setzen Sie Category auf Agent. Siehe Set up Casdoor for your MCP server für Scopes und Grant-Typen.
  4. Geben Sie die Client ID an den Client weiter.

Ein Client-Secret ist für diese Clients optional. Casdoor akzeptiert einen Austausch des Authorization Codes ohne Secret, wenn die Anfrage PKCE verwendet hat, und Cursor, Claude und ChatGPT verwenden alle PKCE mit S256. Wenn ein Client dennoch ein Secret sendet, muss es korrekt sein.

Wo die Client-ID eingetragen wird:

  • Cursor: Ein auth-Objekt in ~/.cursor/mcp.json oder .cursor/mcp.json. Mit einer statischen CLIENT_ID sendet die Cursor-Desktop-App nur ihre localhost-Redirect-URI.

    {
    "mcpServers": {
    "casdoor": {
    "url": "https://your-casdoor.com/api/mcp",
    "auth": {
    "CLIENT_ID": "${env:CASDOOR_MCP_CLIENT_ID}",
    "scopes": ["application:read", "user:read"]
    }
    }
    }
    }
  • Claude: Das OAuth-Client-ID-Feld im Dialog für benutzerdefinierte Konnektoren. Registrieren Sie https://claude.ai/api/mcp/auth_callback.

  • ChatGPT: ChatGPT funktioniert auch mit vordefinierten OAuth-Clients. Kopieren Sie die Redirect-URI von der Verwaltungsseite des MCP-Servers in ChatGPT, da davon abhängt, welche der beiden Formen verwendet wird, welcher Autorisierungsserver genutzt wird.

Schritt-für-Schritt-Anleitungen: Cursor, Claude Desktop, ChatGPT.

Wie Casdoor Redirect-URIs abgleicht​

Casdoor vergleicht die redirect_uri einer Anfrage mit jedem Eintrag in Redirect URLs:

  • Schema, Host und Pfad müssen übereinstimmen. Die Query String wird nicht verglichen.
  • Der Port muss übereinstimmen, außer bei Loopback-Hosts. Wenn beide URIs denselben Loopback-Host verwenden (localhost, 127.0.0.1 oder ::1), ignoriert Casdoor den Port, wie es RFC 8252 für native Apps vorsieht. localhost und 127.0.0.1 sind unterschiedliche Hosts, daher benötigt Claude Code sowohl http://localhost/callback als auch http://127.0.0.1/callback.
  • Eine Redirect-URI auf einer Subdomain eines registrierten Hosts stimmt ebenfalls überein, sodass https://example.com/cb https://app.example.com/cb akzeptiert. Registrieren Sie den spezifischsten Host, den Sie können.
  • Benutzerdefinierte Schemata wie cursor:// stimmen nach denselben Regeln überein. javascript:-, data:- und vbscript:-URIs werden immer abgelehnt.

Da der Loopback-Port ignoriert wird, funktioniert eine Registrierung von mcp-remote oder Claude Code weiterhin, wenn sich der lokale Port zwischen Sitzungen ändert.

Speicherort der claude_desktop_config.json​

Die MCP-Dokumentation gibt diese Pfade an. In Claude Desktop öffnet Settings > Developer > Edit Config die Datei und erstellt sie, falls sie fehlt.

Operating systemPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json

Claude Desktop erreicht einen Remote-MCP-Server auf eine von zwei Arten, und sie verwenden unterschiedliche Redirect-URIs:

  • Als Konnektor, hinzugefügt in den Connectoreinstellungen von Claude. Die Server von Anthropic führen den OAuth-Flow aus, die Redirect-URI ist https://claude.ai/api/mcp/auth_callback, und Casdoor muss vom Internet aus erreichbar sein.

  • Über claude_desktop_config.json, mit mcp-remote als lokaler Brücke. Der OAuth-Flow läuft auf Ihrem Computer, und die Redirect-URI ist http://localhost:<port>/oauth/callback:

    {
    "mcpServers": {
    "casdoor": {
    "command": "npx",
    "args": ["mcp-remote", "https://your-casdoor.com/api/mcp"]
    }
    }
    }

Beenden Sie Claude Desktop vollständig und starten Sie es neu, nachdem Sie die Datei bearbeitet haben.

Hosting-Clients benötigen ein öffentliches Casdoor​

ChatGPT- und Claude-Konnektoren rufen Ihren MCP-Server und Casdoor von den Servern ihrer Anbieter aus auf, nicht von Ihrem Computer. Casdoor muss über öffentliches HTTPS mit einem gültigen Zertifikat erreichbar sein. Anfragen von Anthropic kommen aus 160.79.104.0/21, falls Sie nach IP filtern. Cursor Desktop, Claude Code und mcp-remote führen den Flow lokal aus, daher funktioniert ein Casdoor in Ihrem Netzwerk für sie.

Zwei weitere Dinge, die Hosting-Clients prüfen, was Casdoor bereits tut:

  • Issuer in der Antwort (RFC 9207): ChatGPT lehnt eine Autorisierungsantwort ohne das richtige iss ab und verwendet seine stabile Redirect-URI nur mit Autorisierungsservern, die die Anforderungen von RFC 9207 erfüllen. Casdoor wirbt diese Unterstützung in seinen Metadaten an und fügt iss zur Weiterleitung hinzu.
  • Resource indicators (RFC 8707): ChatGPT sendet resource mit der MCP-Server-URL bei den Autorisierungs- und Token-Anfragen. Casdoor setzt diesen Wert im aud-Claim des Access-Tokens, und Ihr MCP-Server sollte dies überprüfen. Siehe MCP authentication für den Discovery-Flow.

Verwandte Artikel auf www.casdoor.com: OAuth for AI agents und authorization servers for MCP.

Referenzen​