MCP OAuth Redirect URIs für Cursor, Claude und ChatGPT: Registrierung von MCP-Clients in Casdoor
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
| Client | Redirect URI | Wie er eine Client-ID von Casdoor erhält | Hinweise |
|---|---|---|---|
| Cursor desktop (aktuell) | http://localhost:8787/callback | DCR, oder auth.CLIENT_ID in mcp.json | Fester Port 8787 |
| Cursor web und Cloud Agents | https://www.cursor.com/agents/mcp/oauth/callback | DCR, oder auth.CLIENT_ID | Mit DCR registriert die Desktop-App diese URI und die localhost-URI |
| Cursor desktop (ältere Versionen) | cursor://anysphere.cursor-mcp/oauth/callback | DCR, oder auth.CLIENT_ID | Cursor machte die Loopback-URI im Juli 2026 zum Standard |
| claude.ai, Claude Desktop connectors, Claude mobile, Cowork | https://claude.ai/api/mcp/auth_callback | CIMD, dann DCR, oder eine Client-ID, die im Dialog für benutzerdefinierte Connector eingegeben wird | Anthropics Server stellen die Anfragen |
| Claude Code | http://localhost:<port>/callback und http://127.0.0.1:<port>/callback | CIMD | Der Port ändert sich pro Sitzung |
Claude Desktop über mcp-remote | http://localhost:<port>/oauth/callback | DCR | Der Port wird aus der Server-URL abgeleitet |
| ChatGPT | https://chatgpt.com/connector_platform_oauth_redirect, oder https://chatgpt.com/connector/oauth/<callback-id> | CIMD, DCR, oder ein vordefinierter Client | Kopieren 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: trueals auchnoneintoken_endpoint_auth_methods_supportedenthalten. Casdoor bietet beides an, sobald der Schalter aktiviert ist, daher identifiziert sich Claude mit einer Dokument-URL und Casdoor erstellt eine Anwendung namenscimd_.... Andernfalls greift Claude auf DCR zurück. - ChatGPT bevorzugt CIMD mit der
client_idhttps://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-remoteregistriert 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:
- Gehen Sie in der Casdoor Admin-Console zu Identity > Applications und fügen Sie eine Anwendung hinzu, beispielsweise
cursor-mcp. - 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.
- Setzen Sie Category auf
Agent. Siehe Set up Casdoor for your MCP server für Scopes und Grant-Typen. - 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.jsonoder.cursor/mcp.json. Mit einer statischenCLIENT_IDsendet 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.1oder::1), ignoriert Casdoor den Port, wie es RFC 8252 für native Apps vorsieht.localhostund127.0.0.1sind unterschiedliche Hosts, daher benötigt Claude Code sowohlhttp://localhost/callbackals auchhttp://127.0.0.1/callback. - Eine Redirect-URI auf einer Subdomain eines registrierten Hosts stimmt ebenfalls überein, sodass
https://example.com/cbhttps://app.example.com/cbakzeptiert. Registrieren Sie den spezifischsten Host, den Sie können. - Benutzerdefinierte Schemata wie
cursor://stimmen nach denselben Regeln überein.javascript:-,data:- undvbscript:-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 system | Path |
|---|---|
| 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, mitmcp-remoteals lokaler Brücke. Der OAuth-Flow läuft auf Ihrem Computer, und die Redirect-URI isthttp://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
issab 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ügtisszur Weiterleitung hinzu. - Resource indicators (RFC 8707): ChatGPT sendet
resourcemit der MCP-Server-URL bei den Autorisierungs- und Token-Anfragen. Casdoor setzt diesen Wert imaud-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
- Cursor: Model Context Protocol (MCP), Abschnitt "Static OAuth for remote servers"
- Cursor Forum: OAuth redirect URI changed from cursor:// to http://localhost
- Anthropic: Authentication for connectors
- Model Context Protocol: Connect to local MCP servers
- OpenAI: Authenticate users
mcp-remote: README- Casdoor: Dynamic client registration, Set up Casdoor for your MCP server