Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Substack in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Read a Substack publication: list, search and open posts, read comments and the RSS feed, and find a writer's publication from their @handle. 7 read-only tools, no API key.
Try asking
Example prompts for Substack
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Substack, paste your credentials, mint an MCP API key — done. No Docker, no
git clone, no local server.
Substack
Read a Substack publication: list, search and open posts, read comments and the RSS feed, and find a writer's publication from their @handle. 7 read-only tools, no API key.
Setup
- There is no key and no Substack login. Set
SUBSTACK_PUBLICATION_URLto the publication's home address, with nothing after the domain:https://yourname.substack.comor a custom domain such ashttps://www.lennysnewsletter.com. - A profile link (
https://substack.com/@handle), a note link or a post link does not work. From a profile, open the publication shown there and copy the address bar up to the domain. In an app share linkopen.substack.com/pub/NAME/p/...,NAMEis the subdomain: usehttps://NAME.substack.com. - Start with
substack_list_posts(newest first, orsort=topfor the most liked), thensubstack_get_post_by_idorsubstack_get_post_by_slug(the part after/p/in a post link) for the full text.substack_find_publication_by_handleturns an @handle into the writer's publication address.
The connector reads the public JSON endpoints Substack's own site uses (Substack has no documented public API), so it sees what a signed-out visitor sees: paid posts show their preview only. Lists take limit (up to 50) and offset. A 404 on every tool means there is no publication at the configured address; an HTML page instead of JSON means the address is a profile or not a Substack site.
Prerequisites: SUBSTACK_PUBLICATION_URL
Install the connector locally
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, pick Substack and paste in the env vars listed under Prerequisites.
Available tools
| Tool | What it does |
|---|---|
substack_list_posts | List the publication's posts, newest first or most liked first |
substack_search_posts | Full-text search the publication's post archive |
substack_get_post_by_id | Fetch one post by its numeric id, with the full body_html (a preview only for paid posts), subtitle, post_date, audience, comment_count and… |
substack_get_post_by_slug | Fetch one post by its slug, the part after /p/ in a post link (for https://name.substack.com/p/my-first-post the slug is my-first-post) |
substack_get_comments | Get the comments on a post, as threads: each comment has id, name, handle, date, body, reaction_count and its replies under children |
substack_get_rss_feed | Fetch the publication's RSS 2.0 feed (/feed): the most recent posts with title, link, publication date and HTML content |
substack_find_publication_by_handle | Look up a Substack writer by @handle (from a profile link substack.com/@handle) and return their name, bio and the publications they write… |
Next steps
Was this guide helpful?