Technik für Fortgeschrittene: Server, Anmeldung, Automationen
Diese Seite ist für alle, die genauer wissen wollen, wie der Sprachassistent technisch angebunden ist. Für den Alltag brauchst du sie nicht.
Wer hat Zugriff?
- Administratoren — nur sie sehen System → MCP und richten dort Zugänge ein.
- Mitarbeiter mit Zugang — ein Zugang geht an Mitarbeiter mit den Rollen Administratoren, BackOffice (Büro & Buchhaltung), BackOffice (Sach- und Rechnungsbearbeitung) oder Beratung, Training & Betreuung. Der Mitarbeiter muss aktiv sein.
- Der Assistent sieht nur, was der Mitarbeiter auch in PetWorkers sehen darf. Rechnungen, Angebote und Shop-Verkäufe sieht er erst ab BackOffice (Büro & Buchhaltung).
- Deine Kunden — haben keinen Zugriff. Details: Rollen und Rechte.
Welche E-Mails werden verschickt?
- Keine. Der Assistent schickt nie eine E-Mail an Kunden — auch keine Terminbestätigung und keine Rechnung.
- Zugang einrichten, trennen oder entfernen verschickt ebenfalls keine E-Mail.
Willst du dem Kunden einen Termin bestätigen, machst du das wie gewohnt in PetWorkers.
Kurz gesagt: PetWorkers bietet zwei MCP-Server: einen gehosteten unter /mcp mit OAuth und ein Node-Paket für den eigenen Rechner. Beide rufen dieselben Werkzeuge über die Schnittstelle /api/v1 auf.
Die zwei Server im Vergleich
| Gehosteter Server | Node-Paket | |
|---|---|---|
| Adresse / Start | https://deine-instanz.petworkers.app/mcp | node server.js (aus petworkers-mcp.zip) |
| Transport | Streamable HTTP, nur POST, Antwort als JSON, kein Ereignisstrom, ohne Sitzung | stdio |
| Anmeldung | OAuth 2.1 (siehe unten) | API-Schlüssel aus Umgebungsvariablen |
| Voraussetzung | Client mit Remote-MCP und OAuth | Node.js ab 20, npm install |
| Werkzeuge | Wie Paket, plus search und fetch für ChatGPT | Lese- und Schreibwerkzeuge |
Protokollfassungen des gehosteten Servers: 2025-06-18, 2025-03-26, 2024-11-05.
Anmeldung am gehosteten Server (OAuth 2.1)
- Ein Aufruf ohne Token bekommt
401mitWWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource/mcp". Damit startet der Client die Anmeldung selbst. - Metadaten:
/.well-known/oauth-protected-resourceund/.well-known/oauth-authorization-server. - Client-Registrierung: dynamisch (Dynamic Client Registration) über
POST /mcp/oauth/register. Weiterleitungsadressen müssenhttps://sein, oderhttp://localhost. Alternativ ein „Client ID Metadata Document“ (CIMD): Dieclient_idist dann eine https-Adresse, unter der der Client Name und Weiterleitungsadressen veröffentlicht (so arbeitet „Claudes veröffentlichte Identität verwenden“). PetWorkers ruft sie nur auf der Zustimmungsseite ab: nur https, nur öffentliche Ziele, ohne Weiterleitung, höchstens 5 KB, 24 Stunden zwischengespeichert. Nur öffentliche Clients (token_endpoint_auth_method: none). - Zustimmung:
/mcp/oauth/authorize, nur mitresponse_type=codeund PKCES256. Der Mitarbeiter meldet sich mit seinem PetWorkers-Konto an und klickt auf Erlauben. - Token:
POST /mcp/oauth/tokenmitauthorization_codeoderrefresh_token. Zugangsmarke 1 Stunde, Erneuerungsmarke 30 Tage, bei jeder Nutzung neu (einmal verwendbar). - Bereiche (Scopes):
mcp:readundmcp:write. Welche ausgegeben werden, entscheidet allein der Zugang unter System → MCP, nicht die Anfrage des Clients. - Gespeichert werden Marken nur als SHA-256-Prüfsumme. Zugang entfernen oder trennen entwertet alle Marken des Mitarbeiters sofort.
Was ein Werkzeug intern tut
Jedes Werkzeug ist ein Aufruf der Schnittstelle /api/v1 mit dem Lese- oder Schreibschlüssel des Mitarbeiters. Es gelten dieselben Rechte, Sperren und Tempo-Grenzen wie für jeden anderen Aufruf. Es gibt keine zweite Rechteprüfung.
- Lesewerkzeuge nutzen Pfade wie
/_ueberblick,/_termine,/_freie_zeiten,/_belegung,/_anfragen. - Schreibwerkzeuge nutzen Aktionen wie
POST /coachingappointments/anlegenoderPOST /groupappointments/anlegen. - Jedes Schreibwerkzeug ist ohne
ausfuehren: trueein Probelauf.trotzdem: truespeichert trotz gemeldeter Überschneidung oder Dublette. - Lesewerkzeuge tragen den Hinweis
readOnlyHint. Clients können sie dadurch ohne Rückfrage ausführen. - Antworten sind meist kurze Textzeilen mit der Zeile „Heute: …“ am Anfang. So kann der Assistent „nächsten Dienstag“ richtig auflösen.
Die Pfade im Einzelnen: Assistent: Tagesüberblick, Termine anlegen, Kundenakte.
Claude Code mit dem gehosteten Server
Statt des Pakets kannst du Claude Code auch direkt mit /mcp verbinden. Dann liegt kein Schlüssel auf dem Rechner:
claude mcp add --transport http -s user petworkers https://deine-instanz.petworkers.app/mcp
Starte danach Claude Code, gib /mcp ein und wähle PetWorkers. Die Anmeldung läuft im Browser wie bei ChatGPT. Unter System → MCP erscheint die Verbindung in der Spalte Browser-Verbindungen.
Das Node-Paket im Detail
- Umgebungsvariablen:
PETWORKERS_URL(Pflicht, mithttps://),PETWORKERS_API_KEY(Pflicht, Leseschlüssel),PETWORKERS_API_KEY_WRITE(optional; ohne ihn meldet das Paket keine Schreibwerkzeuge an). - Prüfen:
node server.js --pruefenodernpm run check. - Das Paket speichert nichts auf der Platte und hat keine eigene Logik.
- Herunterladen nur über System → MCP deiner Instanz. So passt das Paket immer zu deinem PetWorkers.
Zum Ausprobieren der Werkzeuge ohne Claude eignet sich der „MCP Inspector“ des MCP-Projekts. Starte ihn im Paketordner:
npx @modelcontextprotocol/inspector \
-e PETWORKERS_URL=https://deine-instanz.petworkers.app \
-e PETWORKERS_API_KEY=DEIN-LESESCHLUESSEL \
node server.js
Automationen ohne Chat
Für feste Abläufe, zum Beispiel mit n8n, Make oder eigenen Skripten, brauchst du kein MCP. Rufe die Schnittstelle direkt mit einem eigenen API-Schlüssel auf:
Lege für Automationen einen eigenen Schlüssel an, nicht die MCP-Schlüssel. Sonst trifft „Zugang entfernen“ unter System → MCP auch deine Automation.
Wenn etwas nicht klappt
401mitinvalid_token— Token abgelaufen oder entwertet. Der Client muss die Erneuerung bzw. Anmeldung neu durchlaufen.invalid_client„Unbekannter Client. …“ — Die Registrierung fehlt. Client neu registrieren lassen (Verbindung im Assistenten neu anlegen).invalid_client„Die Client-Beschreibung …“ — Das CIMD-Dokument war nicht abrufbar oder ungültig (Grund steht in der Meldung). Dynamische Registrierung nutzen.invalid_target— Derresource-Parameter zeigt nicht auf…/mcpdieser Instanz.429— Tempo-Grenze oder Absender-Sperre. Den KopfRetry-Afterbeachten.405beiGET /mcp— Richtig so: Der Server hat keinen Ereignisstrom. NurPOST.