Substack MCP
@kembec/substack-mcp · Model Context Protocol Server
Install
npm install -g @kembec/substack-mcp publish_post is irreversible and emails all subscribers by default. Always verify your draft with list_drafts before publishing.
Read posts, profiles, and comments from any public Substack, and publish content to your own. Authenticate with your connect.sid session cookie — credentials are read from environment variables only and never written to disk. Supports creating and editing drafts, publishing posts with optional email delivery, posting notes, and liking content. Ships as a single static binary with no Node.js or Python dependency.
What you can do
Draft and publish Substack posts from Claude without opening a browser
Read posts and comments from any publication for research or summarization
Manage content drafts and edits through natural language
Post notes to your Substack profile from a chat interface
Requirements
- Substack account with a publication for draft and publish tools
- connect.sid session cookie from substack.com → DevTools → Application → Cookies
- SUBSTACK_PUBLICATION_URL only required for draft, update, and publish tools
Configuration
{
"mcpServers": {
"substack": {
"command": "npx",
"args": ["-y", "@kembec/substack-mcp"],
"env": {
"SUBSTACK_SID": "s:your-connect-sid-value",
"SUBSTACK_PUBLICATION_URL": "https://yourname.substack.com"
}
}
}
}
[mcp_servers.substack]
command = "npx"
args = ["-y", "@kembec/substack-mcp"]
enabled = true
[mcp_servers.substack.env]
SUBSTACK_SID = "s:your-connect-sid-value"
SUBSTACK_PUBLICATION_URL = "https://yourname.substack.com"
Tools 11
get_profile Fetch a writer's public profile by slug
get_posts List published posts from any publication with pagination
get_post Get a single post with full content by slug
get_comments List comments on a post by post ID
get_notes List a user's notes by user ID
create_note Post a note to your profile — requires SUBSTACK_SID
like_post Like a post — requires SUBSTACK_SID
list_drafts List unpublished drafts — requires SUBSTACK_SID + SUBSTACK_PUBLICATION_URL
create_draft Create a new draft with title and body — requires SUBSTACK_SID + SUBSTACK_PUBLICATION_URL
update_draft Edit an existing draft by ID — requires SUBSTACK_SID + SUBSTACK_PUBLICATION_URL
publish_post Publish a draft. Irreversible — sends emails to all subscribers when send_email is true (default). Requires SUBSTACK_SID + SUBSTACK_PUBLICATION_URL.