Marketing#Social media automation#Data analysis

substack-mcp: draft Substack posts and read your stats

An MCP server for Substack writers: search your archive, draft and revise posts, read analytics and growth sources, publish Notes. Long-form posts stay drafts.

Project and installation docs

View project

https://github.com/conorbronsdon/substack-mcp

Running a newsletter means writing, and then constantly going back to the numbers: which post got opened, where new subscribers came from, whether you’ve covered a topic before. substack-mcp brings the Substack dashboard into the chat. The agent can search your archive, read stats and draft for you, but long-form posts always stop at draft, and publishing stays your call. It had about 40 stars as of 2026-10-06: small, and carefully built.

What it does

  • Archive and drafts: search_posts searches the archive, create_draft turns Markdown into a draft, preflight_draft checks title, audience, images and paywall placement, and plan_draft_update proposes changes before update_draft writes them.
  • Analytics: get_post_analytics shows views, opens and signups for a post, rank_posts sorts posts by a metric, and get_publication_stats and get_growth_sources cover overall trends and where subscribers come from.
  • Notes: create_note and create_note_with_link post short-form Notes. Notes have no draft state on Substack, so these publish immediately.
  • Subscribers: read counts and records; add_free_subscriber adds a reader who has opted in, runs as a dry run by default and needs consent evidence for a live add.

Who it’s for

  • Substack writers who want the agent to check what they’ve already written and which topics performed before drafting the next issue.
  • Teams running several publications from one server, switching with the publication parameter.
  • Content leads who want post stats rolled into a regular review.

Setup

You need Node.js 22+. Either sign in through a browser to save a session (requires Playwright), or copy your session token from the browser into the client config:

{
  "mcpServers": {
    "substack": {
      "command": "npx",
      "args": ["-y", "@conorbronsdon/substack-mcp"],
      "env": {
        "SUBSTACK_PUBLICATION_URL": "https://yourblog.substack.com",
        "SUBSTACK_SESSION_TOKEN": "your-session-token",
        "SUBSTACK_USER_ID": "your-user-id"
      }
    }
  }
}

Our take

It earns attention for thinking hard about what an agent should be allowed to do. Long-form posts can only be drafted, deleting and scheduling are left out on purpose, the one immediate-publish path (Notes) is flagged loudly, and adding subscribers defaults to a dry run. Few content servers draw lines this clearly. The risks: Substack has no public API, so this uses unofficial endpoints that can break whenever Substack changes them. Auth is a browser session cookie, which is effectively your logged-in account, so guard the token, and judge for yourself whether this use fits Substack’s terms. It’s a personal project, MIT-licensed.