Substack MCP vs Orchyn

A side-by-side look at the Substack MCP and Orchyn MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Substack MCP logoSubstack MCPSocial Media · Local subprocess (stdio)MCP server for Substack — read posts, manage drafts, publish Notes, get comments, and upload images. Safe by design: cannot publish or delete posts.68GreatAuth: otherOrchyn logoOrchynSocial Media · Local subprocess (stdio)Social intelligence for 8 networks: read posts, creators and trends, then create from them.57GoodAuth: not declared

Verdict: choose Substack MCP for social media work as a local process; choose Orchyn for social media as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Substack MCP logoChoose Substack MCP when

  • You need dedicated capabilities in the Social Media domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: other.
  • You have the keys it needs: SUBSTACK_PUBLICATION_URL, SUBSTACK_SESSION_TOKEN, SUBSTACK_USER_ID, SUBSTACK_MCP_HOME.
  • You want tools like get_subscriber_count, list_published_posts, list_drafts.
Explore Substack MCP

Orchyn logoChoose Orchyn when

  • You need dedicated capabilities in the Social Media domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: NOOTICR_BASE_URL.
  • You want tools like get_social_media, get_post_transcript, get_post_frames.
Explore Orchyn

Feature & specification comparison

Rows where the two servers differ are marked.

SpecSubstack MCP logoSubstack MCPOrchyn logoOrchyn
CategorySocial MediaSocial Media
Quality signal68/100 · Great57/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthotherNot declared
PricingFreeNot declared
Required env varsSUBSTACK_PUBLICATION_URLSUBSTACK_SESSION_TOKENSUBSTACK_USER_IDSUBSTACK_MCP_HOMENOOTICR_BASE_URL
Verified ownerCommunity listingCommunity listing
GitHub stars440
Directory activity 6 views 0 installs 0 upvotes 0 views 0 installs 0 upvotes
Tools1480

Tools & capabilities

Substack MCP tools 14

  • get_subscriber_countGet the current subscriber count for your Substack publication. Returns `precision`: 'exact' when the API reports a true count, 'approximate' when only Substack's rounded value is available (the real number is that or higher — render it hedged, e.g. '1,000+'), or 'unavailable' with count -1. Never treat an approximate value as exact.
  • list_published_postsList published posts with pagination. Returns title, date, slug, and URL for each post.
  • list_draftsList draft posts. Returns title, creation date, and audience for each draft.
  • get_postGet the full content of a published post by ID. Returns title, body HTML, metadata.
  • get_draftGet the full content of a draft post by ID. Returns title, body, metadata.
  • get_post_commentsGet comments on a published post. Returns commenter name, comment body, date, and reaction counts.
  • get_sectionsList your publication's sections (categories). Returns each section's id and name. Use a section id as `section_id` when creating or updating a draft to file it under that section.
  • get_post_analyticsGet performance stats (views, emails sent/delivered/opened, signups, subscribes, estimated value, comments, reactions) for a published post by ID. Substack has no per-post stats endpoint, so this searches your 500 most recent published posts for the ID; returns a not-found note if it isn't among them.
  • list_scheduled_postsList posts scheduled for future publication, soonest first. Read-only visibility into what's queued — scheduling itself is done in Substack's editor (this server does not schedule, publish, or delete long-form posts). Returns id, title, audience, and scheduled time (`trigger_at`).
  • create_draftCreate a new draft post. Accepts markdown body which is converted to Substack's format. Does NOT publish — creates a draft only.
  • update_draftUpdate an existing draft post. Only works on unpublished drafts. Accepts markdown body.
  • upload_imageUpload an image to Substack's CDN. Provide exactly one of `image_base64` (a base64 data URI) or `image_path` (a local file path). Returns a hosted image URL that is publicly fetchable by anyone with the link (an unlisted asset — not attributed to you or added to your feed).
  • +2 more on the listing page

Orchyn tools 80

  • get_social_mediaThe post's facts and media — contentType, title, caption, author, stats, direct media URLs, plus an inline thumbnail. Use when you want the post itself and nothing interpreted.
  • get_post_transcriptThe words actually spoken. Where the platform publishes a caption track (TikTok, Douyin, YouTube) it is read as-is — exact rather than inferred, without processing the video; everywhere else, and where a caption track is missing, the post's own audio is transcribed on the same call (posts up to 30…
  • get_post_framesFrames sampled evenly across a post's video, returned as **images you can actually look at** — not a description of them. ffmpeg opens the stream directly rather than downloading it, so HLS works and an expired link is re-resolved on the spot. Verified live at 3/3 on TikTok, YouTube, Instagram, Dou…
  • get_post_commentsTop comments plus the themes the platform clusters them into, with which ones the creator pinned or liked. Use when you want to read what people wrote.
  • analyze_post_fastThe post's transcript, caption and stats — everything but the pictures. Two fetches: `get_social_media` (1) and `get_post_transcript` (1). Use when the words and numbers answer the question.
  • analyze_postFrames sampled across the video, as **images your model can actually look at**, plus the transcript. Two fetches: `get_post_frames` (2) and `get_post_transcript` (1). Use when the visuals are the point — framing, editing, on-screen text.
  • understand_social_postThe same two fetches, asked for a description of what physically happens on screen rather than why it works. Use when you need the events, not the strategy.
  • summarize_post_commentsThe comment section, every comment with a stable id, and the taxonomy to label them with — sentiment, and whether each is praise, a complaint, a bug report, a question, a request, a comparison or spam. The same `get_post_comments` call, at the same price as reading them directly. Pass `verbatim: tr…
  • show_comment_reviewDraws the classifications your model produced — every comment with its sentiment and category, filterable and selectable. Makes no requests; it only renders what you pass it.
  • show_post_analysisDraws the analysis your model wrote from `analyze_post`/`analyze_post_fast`/`understand_social_post` — hook strength, script structure, quotable lines, suggested hashtags and more, whichever fields you produced. Makes no requests; it only renders what you pass it.
  • compare_social_postsThe first of two to five posts, fetched with its stats, and the comparison left to you. Fetch the rest with `get_social_media` at 1 credit each. Use when performance differs and you need to know why.
  • show_compared_postsDraws the comparison your model wrote from `compare_social_posts` — each post scored, the winner marked, what differed and the next test worth running. Makes no requests; it only renders what you pass it.
  • +68 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Substack MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "conorbronsdon-substack-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@conorbronsdon/substack-mcp"
      ],
      "env": {
        "SUBSTACK_PUBLICATION_URL": "YOUR_SUBSTACK_PUBLICATION_URL_HERE",
        "SUBSTACK_SESSION_TOKEN": "YOUR_SUBSTACK_SESSION_TOKEN_HERE",
        "SUBSTACK_USER_ID": "YOUR_SUBSTACK_USER_ID_HERE",
        "SUBSTACK_MCP_HOME": "YOUR_SUBSTACK_MCP_HOME_HERE"
      }
    }
  }
}

Orchyn

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "orchyn": {
      "command": "npx",
      "args": [
        "-y",
        "@nooticr/mcp"
      ],
      "env": {
        "NOOTICR_BASE_URL": "YOUR_NOOTICR_BASE_URL_HERE"
      }
    }
  }
}

Frequently asked questions

Substack MCP is categorized under Social Media and uses a local stdio subprocess. Orchyn belongs to Social Media and uses a local stdio subprocess. Pick Substack MCP for social media work and Orchyn for social media.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Substack MCP is listed as free. Auth: other. Orchyn has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add conorbronsdon-substack-mcp and orchyn as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Substack MCP has a quality signal of 68/100 (Great) with 6 views, 0 installs and 44 GitHub stars. Orchyn has 57/100 (Good) with 0 views, 0 installs and 0 GitHub stars.