Skip to main content
Glama

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_email schaltet 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 der upload_image URL).

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-mcp

Starten 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 --manual

Token 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 (Modus 0600)

  • Linux: ~/.config/substack-mcp/config.json (Modus 0600)

  • 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

  1. Von allen Sitzungen abmelden: Substack → Einstellungen → Sicherheit → "Von allen Sitzungen abmelden". Dies macht jedes existierende substack.sid sofort ungültig.

  2. Melden Sie sich in Ihrem Browser wieder bei Substack an.

  3. Führen Sie substack-mcp-setup erneut 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/Keychains usw.)

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 ![alt](path) 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

  • audience akzeptiert: everyone (Standard), only_paid, founding, only_free.

  • Markdown-Bildsyntax ![alt](path/or/url) lädt lokale Dateien automatisch hoch, wenn Sie create_draft aufrufen.

  • 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.

Install Server
A
license - permissive license
A
quality
C
maintenance

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