Anmeldung
OAuth 2.1 für Apps wie Claude und ChatGPT, ein Schlüssel für eigene Agenten. Jeder Aufruf verlangt eine Anmeldung, und die Zustimmung gilt je Server.
Jeder der zwei Server braucht ein Athaus-Konto, schon für initialize und tools/list. Es gibt zwei Wege:
- OAuth 2.1, wenn eine App für dich handelt (Claude, ChatGPT, Cursor, VS Code). Du meldest dich im Browser an und stimmst zu.
- Ein
ath_-Schlüssel, wenn dein eigener Agent ohne Browser läuft. Er gilt nur bei Athaus für Makler. Siehe Schlüssel.
So läuft die Anmeldung
Die App fragt an
Die App ruft den Server und bekommt 401 mit dem Kopf WWW-Authenticate. Darin stehen die Rechte dieses Servers und wo er seine Anmeldung beschreibt, bei Athaus für Makler etwa:
WWW-Authenticate: Bearer scope="lesen vorschlagen freigeben", resource_metadata="https://anbieter.mcp.athaus.ai/.well-known/oauth-protected-resource/mcp"Du meldest dich bei Athaus an
Bist du in der App von Athaus nicht angemeldet, schickt dir Athaus einen Code per E-Mail. Ein Passwort gibt es nicht.
Du stimmst zu
Auf app.athaus.ai/verbinden siehst du, welche App sich mit welchem Server verbinden will und was sie darf. Der Server folgt aus der Adresse, die du in der App eingetragen hast; eine Seite wählst du hier nicht. Gezeigt werden nur die Rechte dieses Servers:
- Das Grundrecht (
lesenbei Athaus für Makler,suchenbei der Suche) ist immer an. Ohne es öffnet die Verbindung nichts. vorschlagenundsuchauftraegesind an, wenn die App sie verlangt.- Das Recht an der Grenze (
freigebenbzw.anfragen) ist aus, bis du es selbst einschaltest, außer du hast es dieser App an diesem Server schon einmal gegeben.
Für Athaus für Makler braucht dein Konto eine eingerichtete Anbieterseite; sonst sagt die Seite, wie du sie einrichtest. Hat sich eine App selbst registriert, sagt die Seite dazu, dass ihr Name nicht geprüft ist. Verbinde sie nur, wenn du sie gerade selbst eingerichtet hast.
Die App arbeitet
Sie bekommt ein Token, das eine Stunde gilt und sich danach erneuern lässt. Es gilt nur an dem Server, für den du zugestimmt hast: am anderen bekommt es 401, auch wenn dieselbe App beide verbunden hat. Bei jedem Aufruf prüft Athaus die Zustimmung neu: wer die Verbindung trennt, sperrt die App sofort, nicht erst nach Ablauf des Tokens.
Neu verbinden
Vor den zwei Servern gab es einen unter https://api.athaus.ai/mcp, und eine Zustimmung galt für ihn. Eine solche Zustimmung öffnet an den neuen Servern nichts mehr. Wer eine App mit der alten Adresse verbunden hatte:
- Den alten Eintrag in der App entfernen. Die alte Adresse antwortet ohnehin nur noch mit
410. - Die passende neue Adresse eintragen (Installation).
- Neu anmelden und zustimmen.
Dasselbe gilt für Abos von Events: sie entstehen an der neuen Adresse neu, mit den neuen Namen der Ereignisse.
Trennen
In der App unter Einstellungen, MCP-Server, im Abschnitt Verbundene Apps. Eine App, die beide Server verbunden hat, steht dort zweimal, und jede Verbindung trennst du für sich. Trennen beendet auch alle Events, die diese Verbindung abonniert hat.
Für Entwickler eines Clients
| Athaus für Makler | Athaus Immobiliensuche | |
|---|---|---|
| Geschützte Ressource | https://anbieter.mcp.athaus.ai/mcp | https://suche.mcp.athaus.ai/mcp |
| Metadaten der Ressource | https://anbieter.mcp.athaus.ai/.well-known/oauth-protected-resource/mcp | https://suche.mcp.athaus.ai/.well-known/oauth-protected-resource/mcp |
| Scopes | lesen, vorschlagen, freigeben | suchen, suchauftraege, anfragen |
Für beide gilt:
| Autorisierungsserver | https://www.athaus.ai/api/auth, derselbe für beide Server |
| Ablauf | Authorization Code mit PKCE, Refresh Token |
| Registrierung | Client ID Metadata Document (Claude, ChatGPT) oder Dynamic Client Registration (Cursor und andere) |
| Weitere Scopes | openid, profile, email, offline_access |
| Ressource | Pflicht: resource (RFC 8707) nennt die Adresse des Servers. Das Token trägt sie als aud und gilt nur dort; ein Token ohne Ressource öffnet keinen Server |
| Token | JWT, eine Stunde gültig; DPoP wird unterstützt |
Derselbe Client (etwa claude.ai) verbindet beide Server, mit je einer eigenen Zustimmung. Ein Code oder Refresh Token der einen Ressource holt an der anderen nichts.
Fehlt einem Token ein Recht, antwortet der Server mit 403 und error="insufficient_scope". Im scope stehen dann die Rechte, die das Token schon hat, und das fehlende dazu, nie ein Recht des anderen Servers: die App kann gezielt nachfragen. Ein ungültiges, abgelaufenes, entzogenes oder für den anderen Server ausgestelltes Token bekommt 401 mit error="invalid_token".
Solange Athaus geschlossen ist, kann nur eine freigegebene Adresse einer neuen Verbindung zustimmen. Bestehende Verbindungen laufen weiter.