Zum Inhalt springen

OAuth-API-Referenz

Die OAuth-2.1-Endpunkte der Control Plane für MCP-Connectors: Discovery, dynamische Registrierung, Autorisierung, Token-Tausch mit PKCE, Refresh und Widerruf.

Zuletzt aktualisiert:

GET /.well-known/oauth-authorization-server

Metadaten nach RFC 8414. Auch mit dem Suffix `/v1/mcp` ausgeliefert.

GET /.well-known/oauth-protected-resource/v1/mcp

Metadaten nach RFC 9728 für den MCP-Endpunkt: `resource`, `authorization_servers`, `bearer_methods_supported`.

POST /oauth/register

Dynamische Client-Registrierung nach RFC 7591.

Registrierungs-Body

Zwanzig Registrierungen je Adresse und Stunde; die einundzwanzigste ist `rate_limited`.

Name Typ Beschreibung
redirect_uris erforderlich string[] Jeweils `https://…` oder `http://127.0.0.1…` / `http://localhost…` für einen lokalen Client. Exakter Abgleich bei der Autorisierung.
client_name string Wird auf dem Zustimmungsbildschirm gezeigt.
token_endpoint_auth_method string Nur `none` wird akzeptiert: öffentliche Clients mit PKCE. Ein vertraulicher Client wird abgelehnt.
grant_types string[] Teilmenge von `authorization_code`, `refresh_token`.
GET /oauth/authorize

Startet den Ablauf. `response_type=code`, `client_id`, `redirect_uri`, `code_challenge` (43–128 Zeichen) mit `code_challenge_method=S256`, optional `state`, `scope` und `resource` (muss, wenn angegeben, das `/v1/mcp` dieses Servers sein). Ein unbekannter Client oder eine nicht passende Redirect-URI antwortet mit 400 ohne Weiterleitung; andere Fehler leiten mit `error` weiter. Erfolg leitet zur Zustimmungsseite des Dashboards.

POST /oauth/token

Formularkodiert oder JSON. `grant_type=authorization_code` mit `code`, `code_verifier`, `redirect_uri`, `client_id`; oder `grant_type=refresh_token` mit `refresh_token`. Fehler folgen RFC 6749: `invalid_grant`, `invalid_client`, `invalid_request`.

Token-Antwort

Name Typ Beschreibung
access_token string Ein Browserberg-API-Schlüssel der Art `oauth`. Eine Stunde.
token_type string `Bearer`.
expires_in integer 3600.
refresh_token string Neunzig Tage, einmal verwendbar: Jeder Refresh liefert ein neues und zieht das alte ein.
scope string Was gewährt wurde; heute `browserberg`.
POST /oauth/revoke

`token` und optional `token_type_hint`. Widerruft ein Zugriffstoken oder ein Refresh-Token samt aller Zugriffstoken, die es erzeugt hat. Immer 200.

Discovery

BASE="https://browserberg.com"

# The discovery documents an MCP client reads on its own. No credential needed.
curl -s "$BASE/.well-known/oauth-authorization-server" \
  | python3 -c 'import json,sys; d=json.load(sys.stdin); print("issuer:", d["issuer"]); print("authorize:", d["authorization_endpoint"].replace(d["issuer"], "")); print("token:", d["token_endpoint"].replace(d["issuer"], "")); print("pkce:", d["code_challenge_methods_supported"])'

curl -s "$BASE/.well-known/oauth-protected-resource/v1/mcp" \
  | python3 -c 'import json,sys; d=json.load(sys.stdin); print("resource ends with:", d["resource"].rsplit("/", 2)[-2:])'

Verwandt

  • claude.ai verbinden Der Ablauf aus Sicht der Person
  • MCP-Server Der Endpunkt, den diese Tokens öffnen