claude.ai und andere OAuth-Clients verbinden
Browserberg als Remote-MCP-Connector in claude.ai: Die Control Plane ist ihr eigener OAuth-2.1-Server, das Dashboard der Zustimmungsbildschirm.
Zuletzt aktualisiert:
Was passiert, wenn du den Connector hinzufügst
Richte einen Remote-MCP-Client auf /v1/mcp deines API-Hosts. Die erste Anfrage antwortet mit 401 und einem WWW-Authenticate-Header, der das Ressourcen-Metadaten-Dokument nennt; der Client liest es, registriert sich (dynamische Client-Registrierung, öffentlicher Client mit PKCE) und schickt dich zum Autorisierungsendpunkt. Der reicht dich ans Dashboard weiter: Anmelden, falls nötig, sehen, welche App fragt und wohin sie zurückgeschickt wird, erlauben oder ablehnen. Der Client tauscht dann seinen Code gegen ein Zugriffstoken und ruft Tools als du auf. Jeder Aufruf trägt deine Organisation, deine Rolle und deinen Namen im Audit-Log.
Die Endpunkte
| Name | Typ | Beschreibung |
|---|---|---|
/.well-known/oauth-authorization-server
|
GET | Discovery: Endpunkte, Antworttyp `code`, PKCE `S256`, Client-Authentifizierung `none`. |
/.well-known/oauth-protected-resource/v1/mcp
|
GET | Benennt `/v1/mcp` als Ressource und diesen Server als ihren Autorisierungsserver. |
/oauth/register
|
POST | Dynamische Client-Registrierung. Nur öffentliche Clients; Redirect-URIs müssen `https` oder Loopback sein; je Adresse ratenbegrenzt. |
/oauth/authorize
|
GET | Prüft Client, Redirect-URI, PKCE-Challenge und optionales `resource`, dann Weiterleitung zur Zustimmungsseite des Dashboards. |
/oauth/token
|
POST | Grants `authorization_code` (mit dem PKCE-Verifier) und `refresh_token`. Zugriffstoken leben eine Stunde; Refresh-Tokens rotieren und leben neunzig Tage. |
/oauth/revoke
|
POST | Widerruft ein Zugriffs- oder Refresh-Token. Antwortet immer mit 200. |
Was das Token ist
Ein Zugriffstoken ist ein Browserberg-API-Schlüssel der Art oauth, gebunden an dich und an den Client, der gefragt hat. Es ist nicht auf den MCP-Endpunkt beschränkt, denn der gehostete MCP-Server macht aus jedem Tool-Aufruf ohnehin eine gewöhnliche API-Anfrage als Aufrufer. Es trägt deshalb deine Rolle: Das Token eines Mitglieds kann keine Zugangsdaten anlegen, keine Workflows veröffentlichen, keine Pools ändern, keine Secrets rotieren und das Audit-Log nicht versiegeln. Verbundene Apps stehen unter Verbundene Apps auf der Seite API-Schlüssel, und das Trennen dort widerruft ihre Tokens sofort.
Die Discovery-Dokumente lesen
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:])'
issuer: https://browserberg.com
authorize: /oauth/authorize
token: /oauth/token
pkce: ['S256']
resource ends with: ['v1', 'mcp']
Hinweis · Self-hosted
Der OAuth-Server wird nur registriert, wenn `BB_PUBLIC_BASE_URL` gesetzt ist; sonst sagt es das Startprotokoll. API-Schlüssel funktionieren weiter für jeden Client, der einen Header setzen kann, mit oder ohne OAuth.