servers / substack-mcp

substack-mcp

communitystdiolocalwrite capablehealthy

MCP server for Substack — read publication data, manage drafts. Posts are draft-only by design; only short-form Notes publish. Proportionate review as trust infrastructure for agents.


01Tools · 14

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
list_drafts
List draft posts. Returns title, creation date, and audience for each draft.
readfalseunknown
get_sections
List your publication's sections (categories). Returns each section's id and name. Use a section id as `section_id` when creating or updating a draft to file it under that section.
readfalseunknown
list_published_posts
List published posts with pagination. Returns title, date, slug, and URL for each post.
readfalseunknown
get_post_comments
Get comments on a published post. Returns commenter name, comment body, date, and reaction counts.
writetrueunknown
get_draft
Get the full content of a draft post by ID. Returns title, body, metadata.
readfalseunknown
list_scheduled_posts
List posts scheduled for future publication, soonest first. Read-only visibility into what's queued — scheduling itself is done in Substack's editor (this server does not schedule, publish, or delete long-form posts). Returns id, title, audience, and scheduled time (`trigger_at`).
readfalseunknown
get_subscriber_count
Get the current subscriber count for your Substack publication. Returns `precision`: 'exact' when the API reports a true count, 'approximate' when only Substack's rounded value is available (the real number is that or higher — render it hedged, e.g. '1,000+'), or 'unavailable' with count -1. Never treat an approximate value as exact.
readfalseunknown
get_post
Get the full content of a published post by ID. Returns title, body HTML, metadata.
writetrueunknown
get_post_analytics
Get performance stats (views, emails sent/delivered/opened, signups, subscribes, estimated value, comments, reactions) for a published post by ID. Substack has no per-post stats endpoint, so this searches your 500 most recent published posts for the ID; returns a not-found note if it isn't among them.
writetrueunknown
create_draft
Create a new draft post. Accepts markdown body which is converted to Substack's format. Does NOT publish — creates a draft only.
writetrueunknown
create_note_with_link
Create a Substack Note with a link attachment, displayed as a rich card below the note text. PUBLISHES IMMEDIATELY to your public Notes feed — same caveats as create_note: no draft state, no undo from this server.
writetrueunknown
update_draft
Update an existing draft post. Only works on unpublished drafts. Accepts markdown body.
writetrueunknown
upload_image
Upload an image to Substack's CDN. Provide exactly one of `image_base64` (a base64 data URI) or `image_path` (a local file path). Returns a hosted image URL that is publicly fetchable by anyone with the link (an unlisted asset — not attributed to you or added to your feed).
writetrueunknown
create_note
Create a Substack Note (short-form content). Accepts markdown text. PUBLISHES IMMEDIATELY to your public Notes feed — Notes have no draft state on Substack, and this server has no delete tools, so there is no undo from here.
writetrueunknown

02Install & source
npx -y @conorbronsdon/substack-mcp
npx

03Access granted
Manage docs & notes · write

The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.


05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-08-18 09:34Z
next_check2026-08-19 14:19Z
cadenceevery 29h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex9 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. substack-mcp MCP — as seen on mcpexplorer.com

[![substack-mcp MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/substack-mcp.svg)](https://mcpexplorer.com/servers/substack-mcp)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →
substack-mcp — MCPExplorer