Shager mit Claude Code verbinden: ein Befehl, dann Entwürfe für 50 Konten direkt aus dem Terminal
Binde den MCP-Server von Shager per claude mcp add und Bearer-Header in Claude Code ein, wähle den passenden Scope, teste ihn und erstelle einen ersten Entwurf.

Um Shager mit Claude Code zu verbinden, führst du claude mcp add --transport http shager https://app.shager.ai/api/mcp --header "Authorization: Bearer shgr_live_..." aus und prüfst danach in einer Session /mcp. Damit ist der Remote-MCP-Server von Shager über Streamable HTTP registriert, und Claude Code kann sofort deine Workspaces, verbundenen Konten und Beiträge auflisten. Sobald du einen API-Schlüssel hast, dauert das Ganze etwa zwei Minuten.
Diese Anleitung zeigt, wie du an den Schlüssel kommst, den richtigen Config-Scope wählst, das Secret aus git heraushältst und welche erste echte Aufgabe sich lohnt.
Was brauchst du, bevor es losgeht?
Zwei Dinge: ein installiertes Claude Code und einen Shager-API-Schlüssel, der mit shgr_live_ beginnt.
An den Schlüssel kommst du auf zwei Wegen. Hast du schon ein Shager-Konto, legt ein Mensch aus deinem Team ihn unter https://app.shager.ai/dashboard/agents an und wählt die Scopes (read, write und optional publish). Hast du noch kein Konto, kann sich der Agent mit einem einzigen HTTP-Aufruf selbst registrieren und bekommt einen Sandbox-Schlüssel zurück. Dieser Ablauf ist in Selbstregistrierung und Übernahme von Agenten beschrieben, die Kurzfassung steht unter /auth.md.
Noch ein Wort zu den Scopes, bevor du irgendetwas einfügst: Gib Claude Code in der ersten Woche nur read und write. Damit kann es Workspaces anlegen, Medien hochladen und Entwürfe bauen, aber nichts planen oder veröffentlichen. publish kommt später dazu, wenn du den Entwürfen vertraust, die es liefert.

Wie fügst du den Server mit claude mcp add hinzu?
Die MCP-Dokumentation von Claude Code zeigt die genaue Form für einen Remote-HTTP-Server mit Bearer-Token: --transport http, ein Name, die URL und --header. Für Shager sieht das so aus:
claude mcp add --transport http shager https://app.shager.ai/api/mcp \
--header "Authorization: Bearer shgr_live_your_key_here"
Laut Dokumentation speichert claude mcp add die Konfiguration, ohne die Zugangsdaten zu prüfen. Ein Tippfehler im Schlüssel fällt an dieser Stelle also nicht auf, sondern erst später, wenn sich der Client verbindet.
Welchen Scope solltest du nehmen?
Das Flag --scope legt fest, wo die Konfiguration gespeichert wird. Laut derselben Dokumentationsseite:
| Scope | Wo sie gespeichert wird | Sinnvoll, wenn |
|---|---|---|
local (Standard) |
In deiner Benutzerkonfiguration, nur für dieses Projekt | du Shager in einem Repo ausprobierst |
project |
.mcp.json im Repo, geteilt mit dem Team |
das ganze Team Content-Aufgaben aus diesem Repo erledigt |
user |
In deiner Benutzerkonfiguration, für alle Projekte | Shager überall verfügbar sein soll, wo du Claude Code öffnest |
Für Agenturen ist user meist die richtige Wahl. Distribution hängt schließlich nicht an einer bestimmten Codebasis.
claude mcp add --transport http shager --scope user https://app.shager.ai/api/mcp \
--header "Authorization: Bearer shgr_live_your_key_here"
Wie teilst du die Konfiguration, ohne den Schlüssel zu committen?
Wenn du den Scope project nutzen willst, damit dein Team den Server automatisch bekommt, schreib den Schlüssel nicht fest in die .mcp.json. Claude Code unterstützt bei HTTP-Servern Umgebungsvariablen in url und headers, und zwar mit ${VAR} oder ${VAR:-default}. Committe also das hier:
{
"mcpServers": {
"shager": {
"type": "http",
"url": "https://app.shager.ai/api/mcp",
"headers": {
"Authorization": "Bearer ${SHAGER_API_KEY}"
}
}
}
}
Jede Person exportiert dann ihren eigenen Schlüssel im Shell-Profil:
export SHAGER_API_KEY="shgr_live_your_key_here"
Zwei Details aus der Dokumentation sind hier wichtig. Ist die Variable nicht gesetzt, lädt Claude Code die Konfiguration trotzdem und schickt den Text ${SHAGER_API_KEY} wörtlich mit, begleitet von einer Warnung in claude mcp list. Und einige reservierte Namen für Zugangsdaten wie ANTHROPIC_API_KEY werden in Remote-Headern absichtlich zu einem leeren Wert aufgelöst. Nimm deshalb immer einen eigenen Variablennamen. SHAGER_API_KEY passt.
Getrennte Schlüssel pro Person machen außerdem das Audit-Log unter https://app.shager.ai/dashboard/agents aussagekräftig. Jeder Agentenaufruf wird dem Schlüssel zugeordnet, der ihn ausgelöst hat. So siehst du, in wessen Session welcher Entwurf entstanden ist.
Wie prüfst du, ob alles funktioniert?
In der Shell:
claude mcp list
claude mcp get shager
In einer Session tippst du /mcp. Ein funktionierender Server wird als verbunden angezeigt. Ein Server mit falschen Zugangsdaten erscheint laut Dokumentation als fehlgeschlagen, und in den Details steht der HTTP-Status. Bei Shager bedeutet ein 401, dass der Header fehlt oder falsch aufgebaut ist. Der Server erwartet exakt Authorization: Bearer shgr_..., mit dem Wort Bearer und genau einem Leerzeichen.
Danach bittest du Claude um etwas Günstiges, das nur liest:
Call whoami on shager, then list my workspaces with their channel counts.
whoami liefert die Organisation und die Scopes des Schlüssels zurück. Siehst du read und write, aber kein publish, funktioniert das Setup genau wie gedacht.

Was sollte die erste echte Aufgabe sein?
Fang nicht mit „veröffentliche irgendwas“ an. Fang mit einem Entwurf an, der genau die Teile von Shager auf die Probe stellt, auf die es im großen Maßstab ankommt. Ein guter erster Prompt:
In the workspace "Northside Dental", list the channels and the account groups.
Upload this video as media: https://example.com/clips/whitening-30s.mp4
(width 1080, height 1920, duration_ms 30000).
Then create a DRAFT post (no schedule_at) to the group "All locations" as a REEL,
with a caption per channel that mentions the city in that account's name,
first_comment "Book a slot: " plus the cta_url,
cta_url https://northsidedental.example/book, campaign "whitening-oct".
Show me the per-channel captions before you call create_post.
Im Hintergrund verkettet Claude list_channels, list_groups, upload_media_from_url und create_post. Drei Felder in diesem Aufruf leisten die eigentliche Arbeit.
per_channelgibt jedem Konto einen eigenen Text, statt fünfzig identische Beiträge zu erzeugen. Sowohl Netzwerke als auch Zielgruppen bemerken Duplikate. Deshalb empfehlen wir das auch in unserem Artikel über Spam-Sperren beim Posten im großen Stil.cta_urlbekommt pro Konto einen eigenen Kurzlink und ein eigenes UTM-Tag, wobeiutm_contentdas Konto kennzeichnet. Die Klicks kommen überget_analyticspro Konto zurück.- Wenn du beim Upload Breite, Höhe und
duration_msmitgibst, kann Shager das Reel gegen die Regeln jedes Netzwerks prüfen, bevor irgendetwas in die Warteschlange kommt.
Da kein schedule_at übergeben wurde, entsteht ein Entwurf. Du prüfst ihn in der Shager-App oder lässt dir von Claude get_post geben.
Wie steuerst du, was Claude Code darf?
Claude Code fragt um Erlaubnis, bevor es MCP-Tools aufruft, sofern du sie nicht freigegeben hast. MCP-Tools heißen mcp__<server>__<tool>, bei Shager siehst du also mcp__shager__create_post, mcp__shager__list_posts und so weiter. Eine vernünftige Allowlist für den Anfang gibt die lesenden Tools frei und lässt bei allem, was schreibt, die Nachfrage stehen. Kombiniert mit einem Schlüssel ohne publish hast du zwei voneinander unabhängige Bremsen: Der Client fragt dich, und der Server verweigert das Planen ohnehin.
Wenn du so weit bist, dass geplant werden soll, legst du einen neuen Schlüssel mit publish an, tauschst die Umgebungsvariable aus und behältst den alten read/write-Schlüssel für explorative Sessions. Die REST-API und der MCP-Server von Shager setzen dieselben Scopes durch. Die Regel gilt also, egal welchen Weg ein Skript nimmt.
Checkliste zur Fehlersuche
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
/mcp zeigt fehlgeschlagen, 401 |
Im Header fehlt Bearer oder der Schlüssel ist falsch geschrieben |
Server neu hinzufügen oder prüfen, ob die Umgebungsvariable in der Shell exportiert ist, aus der Claude gestartet wurde |
Tools sind da, aber create_post mit schedule_at liefert 403 |
Dem Schlüssel fehlt publish, oder die Sandbox wurde noch nicht übernommen |
So gewollt. Stattdessen einen Entwurf anlegen oder einen Menschen den Scope ergänzen lassen |
429 rate_limited |
Mehr als 120 Anfragen pro Minute mit einem Schlüssel | Arbeit bündeln; ein create_post deckt viele Konten ab |
422 rejected |
Eine Netzwerkregel wurde verletzt, etwa ein zu langes Reel | Meldung lesen; sie nennt das Konto und die Regel |
FAQ
Muss ich außer Claude Code noch etwas installieren?
Nein. Shager läuft als Remote-MCP-Server. Es gibt also keinen lokalen Prozess, keinen Docker-Container und kein npm-Paket. Claude Code spricht über Streamable HTTP direkt mit https://app.shager.ai/api/mcp.
Kann Claude Code veröffentlichen, ohne dass ich jeden Beitrag freigebe?
Nur wenn der verwendete Schlüssel den Scope publish hat und das Konto von einem Menschen übernommen wurde. Ohne diesen Scope liefern Aufrufe zum Planen und Veröffentlichen ein 403, egal was der Agent versucht. Viele Teams schalten zusätzlich pro Workspace die Kundenfreigabe ein, die vor dem Planen eine menschliche Prüfung einbaut.
Unterstützt Shager die Anmeldung per OAuth für Claude Code?
Ja. Der MCP-Server von Shager unterstützt die Anmeldung per OAuth für jeden MCP-Client, der sie beherrscht. Füge den Server ohne das Flag --header hinzu, führe /mcp aus und wähle die Authentifizierung, dann meldest du dich im Browser bei Shager an und bestätigst. Der oben gezeigte Header mit dem API-Schlüssel funktioniert weiterhin und passt besser zu Skripten und Maschinen, an denen sich niemand anmelden kann.
Nächster Schritt
Sobald Claude Code deine Workspaces sieht, liegt es nahe, die Routine wiederholbar zu machen, statt Prompts immer wieder neu einzutippen. Die Anleitung zum Bau eines Claude-Skills für Shager macht aus dem Entwurfs-Workflow oben einen /shager-Befehl, den dein ganzes Team nutzen kann. Wer erst den vollständigen Überblick will: Die Seite für Agenten listet jedes Tool und jeden Endpunkt auf.


