substack-publisher-mcp
This server lets you query and analyze Substack publication data using the official Publisher API. It supports the following capabilities:
List Publications – View all configured Substack publications (useful when managing multiple).
List Posts – Browse published posts with filtering by date range, post type (newsletter, podcast, video), and sort order; supports pagination.
Get Post Details – Retrieve full metadata for a specific post (title, subtitle, audience, publish date, etc.) using its URL slug.
Get Post Stats – Fetch engagement analytics for a specific post, including opens, clicks, views, recipients, new free/paid subscriptions, and estimated revenue.
Get Subscriber Counts – Pull daily subscriber counts broken down by subscription type (free, paid, trial, comp, gift, lifetime, founding) over a specified date range — useful for tracking growth and churn.
Look Up a Subscriber – Search for an individual subscriber by email to see their subscription type, status, and social handles.
All tools (except list_publications) support an optional publication parameter for targeting a specific publication when multiple are configured.
Provides tools for managing and analyzing Substack publications via the official Publisher API, including listing posts, retrieving subscriber counts, and fetching post engagement stats.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@substack-publisher-mcpShow my recent posts with stats"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
substack-publisher-mcp
MCP server for Substack's official Publisher API
Note: This is an unofficial, community-developed tool and is not affiliated with, endorsed by, or supported by Substack, Inc.
The first MCP server for Substack's official Publisher API. Query post analytics, subscriber counts, and publication data directly from Claude, Cursor, or any MCP client.

Why this server?
substack-publisher-mcp | Other Substack MCP servers | |
API | Official Publisher API | Unofficial internal API |
Auth | API key (stable) | Browser cookies (fragile) |
Stability | Official, documented API | Breaks when Substack changes internals |
Multi-publication | Built-in support | Not available |
Related MCP server: substack-mcp
Prerequisites
Node.js 18+. Check with
node --version; install from nodejs.org if missing.Substack Publisher API key. Generate one from your publication's Substack dashboard. If you don't see a Publisher API option there, it may not be enabled for your publication yet; see the Publisher API docs for availability.
Quick Start
1. Install
git clone https://github.com/dkships/substack-publisher-mcp.git
cd substack-publisher-mcp
npm install && npm run build2. Configure your MCP client
Add to your client's MCP config file (create the file if it doesn't exist):
Client | Config file |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Claude Code |
|
Cursor |
|
{
"mcpServers": {
"substack": {
"command": "node",
"args": ["/path/to/substack-publisher-mcp/dist/index.js"],
"env": {
"SUBSTACK_API_KEY": "your-api-key-here"
}
}
}
}Claude Code users: Add
"type": "stdio"to the server config.
Restart your MCP client after editing the config — servers load at startup.
3. Start using it
Ask Claude (or your MCP client):
"Which Substack publications do I have configured?"
"Show me my posts from the last month"
"Pull up my post with the slug my-latest-post"
"How many opens and clicks did my latest post get?"
"What are my subscriber counts for the last 30 days?"
"Look up subscriber jane@example.com"
Installing through an AI agent or registry? See llms-install.md for a condensed, machine-readable setup guide.
Tools
Tool | Description | Key Parameters |
| List configured publications | None |
| List published posts |
|
| Get a specific post by URL slug |
|
| Get engagement stats for a post |
|
| Get daily subscriber counts by type |
|
| Look up a subscriber by email |
|
All tools except list_publications accept an optional publication parameter when multiple publications are configured.
Example responses
[
{
"date": "2025-01-15",
"total_email_subscribers": 25000,
"paid_subscribers": 500,
"free_trial_subscribers": 10,
"comp_subscribers": 50,
"gift_subscribers": 15,
"lifetime_subscribers": 0,
"founding_subscribers": 25
}
]{
"clicks": 320,
"opens": 5400,
"post_id": 12345678,
"recipients": 10000,
"views": 6100,
"new_free_subscriptions": 80,
"new_paid_subscriptions": 5,
"estimated_revenue_increase": 400
}{
"posts": [
{
"title": "My Latest Post",
"audience": "only_paid",
"subtitle": "A deep dive into the topic",
"postDate": "2025-01-15T12:00:00.000Z",
"urlSlug": "my-latest-post",
"coverImage": "https://substackcdn.com/image/..."
}
],
"next": "abc123cursor"
}Multiple publications
If you manage multiple Substack publications, configure a separate API key for each using the SUBSTACK_API_KEY_<NAME> pattern:
{
"mcpServers": {
"substack": {
"command": "node",
"args": ["/path/to/substack-publisher-mcp/dist/index.js"],
"env": {
"SUBSTACK_API_KEY_MAIN": "your-main-blog-key",
"SUBSTACK_API_KEY_TECH": "your-tech-newsletter-key",
"SUBSTACK_API_KEY_COMPANY": "your-company-updates-key"
}
}
}
}Then specify which publication to query:
"Show me subscriber counts for main" "List recent posts from the tech publication"
Use list_publications to see all configured publication names.
Troubleshooting
Issue | Solution |
| Verify your API key is correct. The key goes directly in the |
| Only configure env vars for publications you have keys for. Remove the rest. |
Server won't start | Make sure you ran |
| Set |
Server doesn't appear in your client | Check the config file is valid JSON (no trailing commas), then restart the client. |
| Node.js isn't installed or isn't on your PATH. Check |
Still stuck | Check your client's MCP logs. Claude Desktop on macOS: |
API Reference
This server wraps the Substack Publisher API. See Substack's documentation for details on available data and rate limits.
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT License. See LICENSE for details.
Substack is a trademark of Substack, Inc. This project is not affiliated with Substack, Inc. Use of the Substack name is for descriptive purposes only.
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
- 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/dkships/substack-publisher-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server