substack-mcp
substack-mcp
Ein Model Context Protocol (MCP) Server für Substack. Ermöglicht es Claude Code, Entwürfe zu erstellen, Bilder hochzuladen, Titelbilder festzulegen, Beiträge zu planen und auf Ihrer Substack-Publikation zu veröffentlichen.
Basiert auf
python-substack. Verwendet die interne API von Substack (es gibt keine öffentliche Posting-API). Nicht mit Substack Inc. verbunden.
Tools
Erforderlich
create_draft(title, content_markdown, subtitle?, audience?)— Erstellt einen neuen Entwurf aus Markdown.update_draft(post_id, title?, subtitle?, content_markdown?, audience?)— Bearbeitet einen bestehenden Entwurf.upload_image(image_path)— Lädt eine lokale Datei oder eine Remote-URL in das CDN von Substack hoch und gibt die URL zurück.publish_draft(post_id, send_email?, share_automatically?)— Sofortige Veröffentlichung.send_emailschaltet den E-Mail-Versand um.
Empfohlen
schedule_draft(post_id, iso_datetime)— Plant eine Veröffentlichung für ein zukünftiges Datum/eine zukünftige Uhrzeit (ISO 8601).unschedule_draft(post_id)— Storniert eine geplante Veröffentlichung.set_cover_image(post_id, image_url)— Legt das Titelbild fest (von derupload_imageURL).
Dienstprogramm
list_drafts(limit?)— Listet aktuelle Entwürfe auf.get_draft(post_id)— Ruft den vollständigen Inhalt eines Entwurfs ab.delete_draft(post_id)— Dauerhaftes Löschen.
Einrichtung
# 1. Install dependencies
uv pip install -e .
# 2. Make sure you're logged in to Substack in Chrome (or Brave/Edge) — that's it.
# 3. Save credentials — auto-detects your existing browser session
substack-mcp-setup
# 4. Register with Claude Code
claude mcp add substack-mcp --scope user -- /Users/$USER/substack/.venv/bin/substack-mcpStarten Sie Claude Code neu, dann sollte /mcp substack-mcp als connected anzeigen.
Funktionsweise der Authentifizierung
Standardmäßig liest substack-mcp-setup das substack.sid-Cookie direkt aus Ihrer bestehenden Chrome-Sitzung über pycookiecheat.
Substack kann nicht erkennen, dass etwas automatisiert wurde, da nichts automatisiert wurde: Es ist dieselbe Sitzung, die Sie bereits verwenden.
macOS wird einmalig nach dem Zugriff auf den Schlüsselbund fragen ("Chrome Safe Storage"). Klicken Sie auf "Immer erlauben", damit Sie beim nächsten Mal nicht erneut gefragt werden.
Unterstützt: Chrome, Brave, Edge, Chromium, Vivaldi, Opera.
Fallback-Modi
# Specific browser
substack-mcp-setup --from-browser brave
# Playwright-based (often blocked by Substack — use --chrome instead)
substack-mcp-setup --browser
# Manual paste from DevTools
substack-mcp-setup --manualToken werden unter ~/Library/Application Support/substack-mcp/config.json mit 0600-Berechtigungen gespeichert.
Sicherheit
Das substack.sid-Cookie ist gleichbedeutend mit einem Passwort — jeder, der es besitzt, hat vollen Kontozugriff (Beiträge veröffentlichen, Abrechnung bearbeiten usw.). Behandeln Sie es entsprechend.
Wo das Token gespeichert wird
macOS:
~/Library/Application Support/substack-mcp/config.json(Modus0600)Linux:
~/.config/substack-mcp/config.json(Modus0600)Oder über Umgebungsvariablen:
SUBSTACK_PUBLICATION_URL+SUBSTACK_SESSION_TOKEN(Umgebungsvariablen werden von untergeordneten Prozessen geerbt — seien Sie vorsichtig beim Starten von Unterprozessen)
Die .gitignore schließt config.json aus; committen Sie diese niemals. Das MCP schreibt außerdem eine temporäre Cookie-Datei über tempfile.mkstemp (Modus 0600) und löscht sie in einem finally-Block — siehe auth.py:write_cookie_file.
Wenn ein Token geleakt wurde
Von allen Sitzungen abmelden: Substack → Einstellungen → Sicherheit → "Von allen Sitzungen abmelden". Dies macht jedes existierende
substack.sidsofort ungültig.Melden Sie sich in Ihrem Browser wieder bei Substack an.
Führen Sie
substack-mcp-setuperneut aus, um das neue Cookie zu erfassen.
Sicherheit beim Hochladen von Bildern
upload_image akzeptiert nur:
HTTP(S)-URLs, oder
Lokale Dateien mit Bild-Endungen (
.png,.jpg,.jpeg,.gif,.webp,.heic,.heif), die sich nicht unter sensiblen Systempfaden befinden (/etc,/System,~/.ssh,~/.aws,~/Library/Keychainsusw.)
Dies schützt davor, dass ein Assistent (durch Prompt-Injection in abgerufenen Inhalten) dazu verleitet wird, z. B. einen privaten SSH-Schlüssel in das CDN von Substack hochzuladen.
Bekannte Einschränkung: Markdown-Bildsyntax  innerhalb von create_draft wird von python-substack verarbeitet und umgeht diese Validierung. Wenn Sie nicht vertrauenswürdiges Markdown übergeben, bereinigen Sie die Bildpfade zuerst.
Abhängigkeiten
Versionen sind mit ~= fixiert (kompatible Version, keine Major-Updates). Insbesondere das Update von python-substack sollte überprüft werden — es kommuniziert mit der privaten API von Substack und liegt außerhalb der offiziellen Oberfläche von Substack.
Hinweise
audienceakzeptiert:everyone(Standard),only_paid,founding,only_free.Markdown-Bildsyntax
lädt lokale Dateien automatisch hoch, wenn Siecreate_draftaufrufen.Das Titelbild (festgelegt über
set_cover_image) ist das Bild, das auf Ihrer Publikations-Startseite und bei Social-Media-Shares erscheint. Wenn Sie keines explizit festlegen, verwendet Substack normalerweise das erste Bild im Textkörper.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nanameru/substack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server