Home › Communication › substack-ops

substack-ops

Substack CLI + 26-tool MCP server. Your IDE drafts replies via propose_reply. No API keys.

Python Local
★ 1 stars Last pushed 2026-05-24 License: MIT

Topics: Social Media

Connect

Review any command before running it. Package names and URLs come from the server's own registry entry.

Package (pypi 0.3.5)

uvx substack-ops

Or add to your MCP client config:

{
  "mcpServers": {
    "substack-ops": {
      "command": "uvx",
      "args": [
        "substack-ops"
      ],
      "env": {
        "SUBSTACK_PUBLICATION_URL": "<YOUR_VALUE>",
        "SUBSTACK_USER_ID": "<YOUR_VALUE>",
        "SUBSTACK_SESSION_TOKEN": "<YOUR_VALUE>",
        "SUBSTACK_OPS_MCP_PATH": "<YOUR_VALUE>",
        "SUBSTACK_OPS_LLM_CMD": "<YOUR_VALUE>"
      }
    }
  }
}
  • SUBSTACK_PUBLICATION_URL — Your Substack publication URL (e.g. https://you.substack.com/). Optional if set in ~/.cursor/mcp.json's mcpServers.substack-api.env.
  • SUBSTACK_USER_ID — Your Substack numeric user id. Optional if set in ~/.cursor/mcp.json.
  • SUBSTACK_SESSION_TOKEN secret — Your Substack session cookie value (the s%3A... string). Required for authenticated calls. Easier path: run `substack-ops auth login --browser chrome` and the cookie is auto-grabbed.
  • SUBSTACK_OPS_MCP_PATH — Override path to the mcp.json file the auth layer reads. Defaults to ~/.cursor/mcp.json.
  • SUBSTACK_OPS_LLM_CMD — Optional: override the host CLI used by the unattended daemon path (default: auto-detect claude / cursor-agent / codex on PATH). Use {prompt} placeholder if your CLI takes the prompt as an arg.

This server takes extra arguments — see its repository.

Related servers

Listed in punkpeye/awesome-mcp-servers (MIT)

Data from the Official MCP Registry