Remote MCP server that provides tools to read a Substack user's notes and recent activity when given a public profile name.
get_user_notes: Fetch recent notes for a profile slug (for example,onor@on)get_user_activity: Fetch recent posts and notes, merged and sorted by date
- Node.js 18+
- A valid
substack.sidcookie value (used asSUBSTACK_TOKEN) - A reachable HTTP host/port for the MCP endpoint
This project accesses Substack data using authentication cookies and is intended only for accounts and content you are authorized to access. Make sure your use complies with Substack's terms, applicable privacy rules, and any consent requirements for the data you retrieve.
The server may use AI-assisted processing when returning or summarizing results. AI-generated output can be incomplete, inaccurate, or stale, so verify important information before relying on it.
-
Install dependencies:
npm install
-
Create your environment file:
cp .env.example .env
-
Set
SUBSTACK_TOKENin.env. -
Optionally set
HOSTandPORTin.env.
Development mode:
npm run devBuild and run:
npm run build
npm startThe server listens on http://0.0.0.0:3000/mcp by default and exposes a health check at /healthz.
Add this remote MCP endpoint to your client config:
{
"mcpServers": {
"substack": {
"url": "http://your-host:3000/mcp"
}
}
}profile(string): Public profile slug, with or without@limit(number, optional): Maximum items to return (default10, max50)