Substack Ops logo

Substack Ops

by 06ketan

Manage Substack posts, Notes, comments, replies, reactions, restacks, feeds, profiles, and discovery through MCP.

Install Substack Ops

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "06ketan-substack-ops": {
      "command": "uvx",
      "args": [
        "substack-ops"
      ]
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

uvx substack-ops

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 1mo ago.

Overview

06ketan/substack-ops MCP server exposes Substack operations to MCP-compatible hosts through a local Python stdio process. It supports reading and writing posts, Notes, comments, replies, reactions, restacks, profiles, feeds, recommendations, and related content. Drafting is handled by the host LLM through proposal and confirmation tools, so no OpenAI or Anthropic API key is required. Reach for it when an agent needs authenticated Substack workflows with dry-run safeguards, deduplication, and an audit trail.

Use cases

  • List and inspect Substack posts
  • Draft and review replies to comments
  • Publish Notes and add comments
  • Export nested comment trees
  • Browse feeds, profiles, and recommendations

Key features

  • 26-tool Substack MCP interface
  • Host-LLM reply drafting without AI API keys
  • Dry-run defaults for write actions
  • SQLite action deduplication
  • JSONL audit logging
  • Cookie and magic-link authentication flows

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

43/43 checks healthy over the last 88d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 15d ago via OSV.dev · substack-ops (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars1Stargazers on the source repository.
Last commit5mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Directory activity7 viewsConfig copies, upvotes, and views on AllMCPs.

How Substack Ops works

What 06ketan/substack-ops MCP server does

06ketan/substack-ops MCP server connects an MCP host to Substack workflows through the substack-ops Python package. The project describes a 26-tool MCP interface covering publication posts, Notes, comments, replies, reactions, restacks, recommendations, search, profiles, feeds, and automations. It also provides a standalone CLI and a Textual-based terminal interface, although this listing focuses on the MCP server.

Read operations include listing and inspecting posts, retrieving post content, checking engagement statistics, searching Substack content, inspecting paywall status, browsing Notes, viewing comment trees, exporting comments, reading feeds, and looking up profiles or subscriptions. Write operations include publishing Notes, adding or deleting comments, reacting to posts, Notes, and comments, and restacking supported content.

How it works

The server runs locally over stdio and is configured in an MCP host such as Cursor, Claude Desktop, Claude Code, or OpenCode. Authentication uses Substack account access rather than an AI provider key.

Reply workflows separate drafting from publication. The host model can call proposal and confirmation tools so it creates the text while Substack actions remain explicit. The CLI also supports rule-based templates, interactive review, bulk draft files, approval-based bulk sending, and an automatic reply mode with a stated 30-second rate limit.

Write actions use dry-run behavior by default. Actions that are actually sent are recorded in .cache/audit.jsonl, while .cache/actions.db is used to check for duplicates. Some irreversible operations require both the non-dry-run option and an explicit confirmation flag.

Setup and configuration

Install the package from PyPI with uv or uvx. The documented host setup command is:

bash
uvx substack-ops mcp install cursor

Equivalent installation targets are documented for Claude Desktop, Claude Code, and OpenCode; print can output a configuration snippet for hosts that require manual setup. The OpenCode example runs uvx substack-ops mcp serve as the local MCP process.

For development, the README uses uv sync, with optional extras for the MCP SDK, terminal UI, and browser-cookie support. Authentication can be checked with auth verify or auth test. Configuration defaults to the substack-api entry in ~/.cursor/mcp.json and can also be supplied through environment configuration or a .env file.

Tools and capabilities

06ketan/substack-ops MCP server is suited to tasks such as:

  • Finding unanswered comments on a post.
  • Drafting, reviewing, approving, and sending replies.
  • Exporting nested comment trees as JSON.
  • Publishing a top-level Note after disabling dry-run mode.
  • Searching posts and inspecting publication or reader feeds.
  • Applying or removing reactions and restacking content.

The available operations require an authenticated Substack session for account-specific or write actions. The host must support local stdio MCP servers and should follow its own current MCP configuration instructions.

Limitations and notes

The project does not supply an AI drafting API. Its documented design relies on the connected host's LLM for generated replies, which is why an ANTHROPIC_API_KEY or OPENAI_API_KEY is not needed for that workflow. It is also not a hosted MCP endpoint; the documented configuration launches the package locally.

Browser cookie extraction depends on the documented local browser and operating-system setup. Destructive or externally visible actions should be reviewed because dry-run is the default, and some commands require an additional confirmation flag.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Substack Ops

Run `uvx substack-ops mcp install cursor` for Cursor, or use the documented equivalent target for Claude Desktop, Claude Code, or OpenCode.

Yes.

No.

It uses Substack account authentication, including a `connect.sid` cookie setup flow, browser cookie retrieval, or an email magic-link flow.

No. Writes default to dry-run mode. Actual writes require disabling dry-run, and some irreversible actions also require an explicit confirmation flag.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewSubstack Ops AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/06ketan-substack-ops?style=directory)](https://allmcps.com/mcp/06ketan-substack-ops)
HTML Embed
<a href="https://allmcps.com/mcp/06ketan-substack-ops"><img src="https://allmcps.com/api/badge/06ketan-substack-ops?style=directory" alt="Substack Ops on AllMCPs" /></a>