Substack API MCP
Substack API MCP
Substack does not provide a native public API for publishing posts.
But authors who want to draft, publish, and schedule from AI agents (Cursor, Claude, and other MCP hosts) still need a way out. This is the MCP server to publish to Substack via any agent.
Will not start without a valid APISUBSTACK_API_KEY (ask_*). Get API key here: apisubstack.com.
Why this exists
Reality | What we built |
No official Substack write/publish API for authors | A posting MCP so agents can create drafts, publish now, and schedule |
Authors live in the browser editor | Authors publish through their agents instead |
Session-cookie auth is the practical path today |
|
Examples
Tools
Tool | Description |
| Verify |
| Create draft / publish now / schedule (+ optional tags) |
| Fetch draft by id |
| Pangram AI-text / AI-slop check on a draft |
| Update draft fields |
| Publish existing draft |
| Schedule existing draft |
| Delete draft |
| List publication tags |
| Create tag |
| Ensure + attach tags |
| List tags on a post/draft |
| Create a Substack Note (optional link attachment) |
| Delete a Substack Note by id |
Install
cd /path/to/Substack-API-MCP
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Auth env
Sign in at apisubstack.com, start the free trial, generate an
ask_*API key.Copy your Substack
substack.sidcookie:Open Chrome and sign in to Substack.
Open DevTools → Application → Cookies.
Select
https://substack.com(or your publication host, e.g.https://yourname.substack.com).Find the cookie named
substack.sidand copy its Value.
Export:
export APISUBSTACK_API_KEY="ask_YOUR_KEY"
export SUBSTACK_PUBLICATION_URL="https://yourname.substack.com"
export SUBSTACK_SID="YOUR_SUBSTACK_SID_VALUE"
# optional
# export SUBSTACK_USER_ID="123456"Cookies expire. If you get 401/403, refresh substack.sid and try again.
Run
substack-api-mcp
# or
python -m substack_api_mcpCursor / Claude Desktop config
See mcp.example.json:
{
"mcpServers": {
"substack-api": {
"command": "/ABSOLUTE/PATH/TO/Substack-API-MCP/.venv/bin/substack-api-mcp",
"args": [],
"env": {
"APISUBSTACK_API_KEY": "ask_YOUR_KEY",
"SUBSTACK_PUBLICATION_URL": "https://yourname.substack.com",
"SUBSTACK_SID": "YOUR_SUBSTACK_SID_VALUE"
}
}
}
}Use absolute paths. Restart the host after config changes.
License
Attribution-or-Royalty (source available). See LICENSE and COMMERCIAL_LICENSE.md.
Non-commercial use: allowed (keep copyright + license notice).
Commercial use: either visible attribution everywhere the software is used, or a paid royalty / commercial license via apisubstack.com.
Use at your own risk. Not affiliated with Substack. Built so authors can publish through their agents when Substack itself does not offer a native publishing API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/alxgntv/substack-api-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server