Connector guide4-minute read7 MCP tools7 languages

How to Connect Substack to Gemini — via MCP

Let Gemini read any Substack publication: search and read posts, comments and the RSS feed. No API key needed; set up in Gemini.ai, Desktop or Code.

HCBy HelpCode teamUpdated 4 min read Open-source on GitHub

No credit card · 7-day trial · Self-host alternative available

Substack

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.

tools

7

Region

INTL

Category

Publishing

Authentication

Public API

Required env vars

SUBSTACK_PUBLICATION_URL
Install in one click on Cloud

7-day free trial · No credit card

  • 7-day free trial
    No credit card required
  • GDPR & SOC 2 ready
    EU data residency, audit logs
  • Open-source on GitHub
    Open source · AGPL-3.0
  • Works with ChatGPT, Claude, Gemini
    Any MCP-compatible client

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.

Start free trial

Summary

Let Gemini read any Substack publication: search and read posts, comments and the RSS feed. No API key needed; set up in Gemini.ai, Desktop or Code.

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.

Substack · live via MCP
Share
Opus 4.7

Claude is AI and can make mistakes. Please double-check responses.

💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Substack, paste the publication's URL, and connect Gemini — done. No Docker, no git clone, no local server.

Substack + Gemini

Read a Substack publication from Gemini: posts, full-text search of the archive, comments and the RSS feed, through the same public endpoints Substack's own site uses. 7 tools, no API key and no Substack login.

What you can ask Gemini

  • "What are the ten latest posts, with date and whether each one is free or paid?" Uses substack_list_posts; each post carries its audience.
  • "Find every post in the archive that talks about pricing." Uses substack_search_posts.
  • "Summarise post 148234567 in five bullet points." Uses substack_get_post_by_id.
  • "What are readers saying under the latest post?" Uses substack_list_posts to find it, then substack_get_comments.
  • "Which of this year's posts are podcast episodes?" Uses substack_list_posts; each post carries its type (newsletter, podcast or thread).
  • "Give me the RSS feed so I can see what's new since Monday." Uses substack_get_rss_feed.

What you need

  • The publication's base URL, for example https://lennysnewsletter.substack.com, in SUBSTACK_PUBLICATION_URL. That's all.
  • No API key and no account: the connector reads public endpoints, so it sees what a logged-out visitor sees.
  • One publication per connector. To read a different one, change SUBSTACK_PUBLICATION_URL.

Step 1 — Set the publication URL

  1. There is no key and no Substack login. Set SUBSTACK_PUBLICATION_URL to the publication's home address, with nothing after the domain: https://yourname.substack.com or a custom domain such as https://www.lennysnewsletter.com.
  2. 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 link open.substack.com/pub/NAME/p/..., NAME is the subdomain: use https://NAME.substack.com.
  3. Start with substack_list_posts (newest first, or sort=top for the most liked), then substack_get_post_by_id or substack_get_post_by_slug (the part after /p/ in a post link) for the full text. substack_find_publication_by_handle turns 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.

Step 2 — Install the adapter

On Cloud, open Connectors → Substack and paste the URL. To self-host:

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

Step 3 — Add the connector in Gemini

Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide shows YOUR_SERVER_ID.

Gemini CLI reads MCP servers from ~/.gemini/settings.json (or %APPDATA%\gemini\settings.json on Windows). Add:

{
  "mcpServers": {
    "anythingmcp": {
      "httpUrl": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
      "headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
    }
  }
}
  1. Get your MCP API key from AnythingMCP → MCP Servers → your server → API keys.
  2. Save the file and restart gemini.
  3. Run /mcp inside the Gemini CLI — Substack should be listed as available.
  4. Vertex AI Studio: pass https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID to the tools array of your request with the same X-API-Key header.

Available tools

ToolWhat it does
substack_list_postsList recent posts from the publication
substack_search_postsSearch posts in the publication
substack_get_post_by_idFetch a single post by its numeric ID
substack_get_post_by_slugFetch 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_commentsGet top comments on a post
substack_get_rss_feedFetch the publication's RSS 2.0 feed (/feed): the most recent posts with title, link, publication date and HTML content
substack_find_publication_by_handleLook up a Substack writer by @handle (from a profile link substack.com/@handle) and return their name, bio and the publications they write…

Troubleshooting

  • Every tool fails. Check SUBSTACK_PUBLICATION_URL: it has to be the publication's home address, starting with https:// and with nothing after the domain. A profile (substack.com/@handle), note or post link does not work; open the publication from the profile and copy its address up to the domain.
  • A paid post comes back cut short. The connector does not log in, so it gets what a non-subscriber gets. Paid-only content is not unlocked.
  • A search returns nothing. substack_search_posts returns an empty list when no post matches. Try fewer or broader words.
  • Requests start failing after many calls in a row. Substack does not publish rate limits and throttles heavy traffic. Space out bulk reads, around one request per second.

FAQ

Does Gemini 1.5 Pro or 2.x support MCP? Yes — Gemini CLI ≥ 0.4 and Vertex AI tools API both accept MCP httpUrl connectors with custom headers.

Next steps

Was this guide helpful?

Your Substack agent is one click away.

Install the connector, paste the key, prompt Gemini. Free for 7 days, no credit card.

Related guides