Journal

· Tech · 5 Min. Lesezeit

Instagram und Facebook mit Claude und social-mcp verwalten

So richtest du social-mcp ein, einen selbst gehosteten MCP-Server, mit dem Claude Beiträge auf Instagram und Facebook veröffentlicht, plant und auswertet.

Wer Fotos auf Instagram und Facebook veröffentlicht, muss Bilder auswählen, vorbereiten, Bildunterschriften schreiben und nach Plan posten. social-mcp überlässt diese Arbeit Claude.

social-mcp ist ein kostenloser, selbst gehosteter MCP-Server. Er läuft auf deinem eigenen Rechner und verbindet Claude Code oder Claude Desktop mit der Meta Graph API. Claude bekommt damit Werkzeuge, um Fotos, Karussells und Reels auf Instagram und einer Facebook-Seite zu veröffentlichen, Beiträge zu planen und Statistiken zu Interaktionen abzurufen. Der Access Token wird lokal konfiguriert und zur Authentifizierung an Meta gesendet.

Voraussetzungen

  • Eine Meta-App (Typ: Business) mit aktiviertem Facebook Login for Business und der Instagram Graph API
  • Ein langlebiger User Access Token mit diesen Berechtigungen (Scopes):
    • pages_show_list, pages_read_engagement, pages_manage_posts
    • instagram_basic, instagram_content_publish
  • Ein Instagram-Business- oder -Creator-Konto, das mit einer Facebook-Seite verbunden ist. Ein privates Instagram-Konto reicht nicht: Die Instagram Graph API setzt für das Veröffentlichen ein Business- oder Creator-Konto voraus.
  • Docker Compose (empfohlen) oder Python 3.8+
  • Claude Code oder Claude Desktop als MCP-Client

1. Meta-App und Token erstellen

Erstelle in der Konsole von Meta for Developers eine App vom Typ Business und füge Facebook Login for Business und die Instagram Graph API hinzu. Erzeuge danach einen langlebigen User Access Token mit den oben genannten Berechtigungen.

Außerdem brauchst du zwei IDs: die ID deiner Facebook-Seite (Page ID) und deine Instagram-User-ID. Die Setup-Anleitung des Projekts beschreibt alle Schritte, auch die curl-Befehle für den Token-Austausch.

Langlebige User Tokens gelten etwa 60 Tage. social-mcp bringt das Werkzeug check_token_validity mit. Damit kannst du oder Claude das Ablaufdatum prüfen und den Token rechtzeitig erneut austauschen.

2. social-mcp klonen

Klone das Repository an einen dauerhaften Ort auf dem Rechner, auf dem der Server laufen soll, zum Beispiel ein Homelab-Server oder ein VPS:

git clone https://github.com/bmachek/social-mcp.git
cd social-mcp
cp .env.example .env

3. Zugangsdaten eintragen

Öffne .env und trage mindestens diese Werte ein:

META_USER_TOKEN=<dein langlebiger User Access Token>
META_PAGE_ID=<ID deiner Facebook-Seite>
META_IG_USER_ID=<deine Instagram-User-ID>

Alle anderen Einstellungen haben Standardwerte. Der MCP-Server lauscht auf Port 3224, der nginx-Sidecar für Dateien auf Port 3223.

4. Server starten

docker compose up -d --build

Damit starten zwei Container:

  • instagram-mcp: der MCP-Server auf MCP_PORT (Standard 3224)
  • instagram-mcp-files: ein nginx-Sidecar auf FILE_SERVER_PORT (Standard 3223). Er stellt jedes Bild kurz unter einer einmaligen öffentlichen URL bereit, damit Meta es abrufen kann, und entfernt es danach wieder.

So startest du den Server ohne Docker mit Python:

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python server.py

5. Claude verbinden

Claude Code:

claude mcp add instagram -- docker run --rm -i \
  --env-file /opt/social/.env \
  instagram-mcp:latest

Claude Desktop: Öffne Settings → Developer → Custom Connectors → Add und trage diese URL ein:

http://<host>:3224/mcp

Claude hat jetzt Zugriff auf alle Werkzeuge von social-mcp.

6. Veröffentlichen

Lege Fotos oder Videos in data/images/ ab und sag Claude in normaler Sprache, was es tun soll. Einige Beispiele:

  • „Veröffentliche das Sonnenuntergangsfoto aus meinem Eingangsordner mit dieser Bildunterschrift auf Instagram und Facebook und füge es meiner Story hinzu.“
  • „Mach aus diesen vier Bildern ein Instagram-Karussell und plane es für morgen um 19:30 Uhr ein.“
  • „Zeig mir meine erfolgreichsten Beiträge der letzten 30 Tage, damit ich den Stil der Bildunterschriften wiederverwenden kann.“

Die Dateien wandern vom Eingangsordner zu den Plattformen und werden nach erfolgreicher Veröffentlichung archiviert:

data/images/  →  stage → publish  →  Instagram / Facebook Page
                     ↓ on success
                 data/posted/YYYY-MM-DD/

Zwei Wochen mit dem Autopiloten planen

Statt Beiträge einzeln zu planen, kannst du Claude einen kompletten Zeitplan vorschlagen lassen:

  1. autopilot_plan durchsucht deinen Eingangsordner, entfernt doppelte Serienaufnahmen per Perceptual Hash, fasst Fotos, die zeitlich und örtlich nah beieinander entstanden sind, zu Karussells zusammen und schlägt einen Veröffentlichungsplan für zwei Wochen vor.
  2. Du prüfst den Plan und schreibst Bildunterschriften, wo du welche haben willst.
  3. autopilot_commit prüft alles und stellt alle Beiträge auf einmal in die Warteschlange.

Sicherheit und Daten

social-mcp hat keine eingebaute Authentifizierung. Wer den Server im Netzwerk erreicht, kann ihn benutzen. Betreibe ihn im lokalen Netz. Wenn du von außen darauf zugreifen musst, setze einen Reverse Proxy davor, der TLS terminiert und einen Bearer Token prüft. Die README enthält ein Beispiel mit Caddy, um den Datei-Sidecar über Tailscale/Headscale erreichbar zu machen.

Der Server läuft auf Hardware, die du selbst kontrollierst. Dein Token liegt in der lokalen .env-Datei und wird zur Authentifizierung der API-Anfragen an Meta gesendet. Ausgewählte Medien werden zu Meta hochgeladen oder vorübergehend bereitgestellt, damit Meta sie abrufen kann.

Das Veröffentlichen unterliegt den aktuellen API-Kontingenten von Meta und den Berechtigungen deines Kontos. Der Server prüft die Veröffentlichungslimits vor jedem Beitrag. Wird ein Auftrag abgelehnt, sieh in der aktuellen Setup-Anleitung und in der Antwort der API nach.

Quellcode

social-mcp ist kostenlos. Der Quellcode liegt auf GitHub unter github.com/bmachek/social-mcp. Die Projektseite listet alle Funktionen auf.

Zurück zum Journal