Skip to main content
Glama
wkbaran

Substack Reader MCP

by wkbaran

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SUBSTACK_SIDNoSession cookie value. Overrides the saved session, for containers or CI
SUBSTACK_COOKIENoA full `Cookie:` header to take `substack.sid` from
SUBSTACK_USERNAMENoWhen logged out, `list_subscriptions` shows this user's *public* subscriptions
SUBSTACK_READER_HOMENoConfig directory (default `~/.config/substack-reader`)~/.config/substack-reader
SUBSTACK_BROWSER_PATHNoA Chromium-based browser for `login`, if Chrome and Edge aren't installed
SUBSTACK_COOKIES_PATHNoA Cookie-Editor export from the original Python version, read as a fallback

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_statusA

Check whether a Substack session is configured and still valid, and which account it belongs to.

list_subscriptionsA

List every newsletter the logged-in user subscribes to (including subscriptions hidden from their public profile), with URL and membership state.

get_feedA

Recent posts across all subscriptions, newest first.

get_recent_postsC

Recent posts from one publication.

search_postsB

Search one publication's archive by keyword.

read_postA

Read the full content of a Substack post as Markdown. Paid posts are returned in full when the logged-in account has access. Long posts are paged: pass start from the previous response to continue.

list_chatsA

The user's Substack chat inbox: publication chats they belong to and direct messages, most recent first, with unread state. Use the returned id with get_chat_threads (publication_chat) or read_dm (direct_message).

get_chat_threadsA

Threads in a publication's chat, newest first, with reply counts. Pass before from a previous response to page back.

read_chat_threadB

A chat thread with its replies (and replies to replies) as a readable transcript.

read_dmA

Messages in one of the user's direct-message conversations. Only use when the user asks about their DMs.

subscribeA

Free-subscribe the logged-in account to a publication. Never starts a paid plan. Does nothing if already subscribed. Only use when the user explicitly asks to subscribe.

unsubscribeA

Remove one of the logged-in account's FREE subscriptions. Refuses paid subscriptions. Only use when the user explicitly asks to unsubscribe; if the name is ambiguous, ask them which one they mean.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 12 tools

Disambiguation4/5

Most tools map to distinct resources and actions: subscription management, feed reading, post retrieval, and chat/DMs. The only real confusion risk is get_feed versus get_recent_posts, though their descriptions clearly separate 'all subscriptions' from 'one publication.'

Naming Consistency4/5

The naming convention is largely verb_noun: list_subscriptions, get_feed, search_posts, read_post, subscribe, unsubscribe. Minor deviations such as auth_status instead of get_auth_status and the abbreviated read_dm prevent a perfect score.

Tool Count5/5

Twelve tools is well within the ideal range and each tool covers a distinct reader workflow: authentication, subscription management, post discovery/reading, and chat/DMs. No tool feels redundant or unnecessary.

Completeness5/5

The toolset covers the full Substack reader lifecycle: auth status, listing/subscribing/unsubscribing, feed and publication browsing, archive search, full post reading, and chat/DM threads. There are no obvious dead ends for the stated reader-focused purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues