ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

substack-ops

โดย 06ketanรุ่น 0.3.5i★ –iรันบนเครื่อง
ชื่อใน registryio.github.06ketan/substack-ops

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

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

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เครื่องมือนักพัฒนา
  • ต้องใส่ค่าเหล่านี้: SUBSTACK_SESSION_TOKEN

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: SUBSTACK_PUBLICATION_URL, SUBSTACK_USER_ID, SUBSTACK_SESSION_TOKEN, SUBSTACK_OPS_MCP_PATH, SUBSTACK_OPS_LLM_CMD

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • PyPIติดตั้ง uv ของ Python (มีคำสั่ง uvx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "substack-ops": {
      "command": "uvx",
      "args": [
        "substack-ops",
        "mcp",
        "serve"
      ],
      "env": {
        "SUBSTACK_PUBLICATION_URL": "ใส่ค่าของคุณ",
        "SUBSTACK_USER_ID": "ใส่ค่าของคุณ",
        "SUBSTACK_SESSION_TOKEN": "ใส่ค่าของคุณ",
        "SUBSTACK_OPS_MCP_PATH": "ใส่ค่าของคุณ",
        "SUBSTACK_OPS_LLM_CMD": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add substack-ops --env SUBSTACK_PUBLICATION_URL='ใส่ค่าของคุณ' --env SUBSTACK_USER_ID='ใส่ค่าของคุณ' --env SUBSTACK_SESSION_TOKEN='ใส่ค่าของคุณ' --env SUBSTACK_OPS_MCP_PATH='ใส่ค่าของคุณ' --env SUBSTACK_OPS_LLM_CMD='ใส่ค่าของคุณ' -- uvx substack-ops mcp serve

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "substack-ops": {
      "command": "uvx",
      "args": [
        "substack-ops",
        "mcp",
        "serve"
      ],
      "env": {
        "SUBSTACK_PUBLICATION_URL": "ใส่ค่าของคุณ",
        "SUBSTACK_USER_ID": "ใส่ค่าของคุณ",
        "SUBSTACK_SESSION_TOKEN": "ใส่ค่าของคุณ",
        "SUBSTACK_OPS_MCP_PATH": "ใส่ค่าของคุณ",
        "SUBSTACK_OPS_LLM_CMD": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "substack-ops": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "substack-ops",
        "mcp",
        "serve"
      ],
      "env": {
        "SUBSTACK_PUBLICATION_URL": "ใส่ค่าของคุณ",
        "SUBSTACK_USER_ID": "ใส่ค่าของคุณ",
        "SUBSTACK_SESSION_TOKEN": "ใส่ค่าของคุณ",
        "SUBSTACK_OPS_MCP_PATH": "ใส่ค่าของคุณ",
        "SUBSTACK_OPS_LLM_CMD": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • SUBSTACK_PUBLICATION_URL env
    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 env
    Your Substack numeric user id. Optional if set in ~/.cursor/mcp.json.
  • SUBSTACK_SESSION_TOKEN ความลับ env
    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 env
    Override path to the mcp.json file the auth layer reads. Defaults to ~/.cursor/mcp.json.
  • SUBSTACK_OPS_LLM_CMD env
    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.

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub 06ketan ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi

  • ดาวมากกว่า 0% ของอีก 4917 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 12% ของอีก 4917 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 4917 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

substack-ops ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: SUBSTACK_SESSION_TOKEN

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.3.5) เข้า registry 6 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

GitHub

โดย github

server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้

บนเครื่องหรือคลาวด์★ 34,245MITอัปเดต 4 วันที่ผ่านมา
ติดตั้ง

Desktop Commander

โดย wonderwhy-er

MCP server for terminal commands, file operations, and process management

รันบนเครื่อง★ 10,225MITอัปเดต 17 วันที่ผ่านมา
ติดตั้ง

Cloudflare MCP

โดย cloudflare

Cloudflare MCP servers

รันบนคลาวด์★ 4,446Apache-2.0อัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

substack-ops

Standalone Substack CLI + 26-tool MCP server for Cursor MCP, Claude MCP, OpenCode MCP, and any stdio MCP host. Your IDE drafts the replies. Zero AI API keys.

Site → [substack-ops.chavan.in](https://substack-ops.chavan.in) · Source → [06ketan/substack-ops](https://github.com/06ketan/substack-ops) · Glama → [mcp/servers/06ketan/substack-ops](https://glama.ai/mcp/servers/06ketan/substack-ops)

Posts, notes, comments, replies, reactions, restacks, recommendations, search, profiles, feeds, automations, MCP server, Textual TUI. One Python install, one binary, MIT licensed.

TL;DR — MCP-native (no API key, one command)

uvx substack-ops mcp install cursor          # or claude-desktop, claude-code, opencode, print

Restart your host. Then in chat:

"list unanswered comments on post 193866852"

"draft a warm reply to comment 12345"

"post that draft"

Your host's LLM (Cursor's, Claude's) does the drafting via the propose_reply / confirm_reply tools. No ANTHROPIC_API_KEY / OPENAI_API_KEY needed.

Wrong install?

This project is `substack-ops` on [PyPI](https://pypi.org/project/substack-ops/) — install with `uv` / `uvx`, not unrelated `npx` packages that appear when searching “Substack MCP”. Canonical listing: [Glama — 06ketan/substack-ops](https://glama.ai/mcp/servers/06ketan/substack-ops).

Works with (MCP)

These rows help discovery (search keywords); confirm each host’s current MCP docs before upgrading.

Open source–oriented hosts
HostDocumentationTypical wire-up
OpenCodeOpenCode MCP serversuvx substack-ops mcp install opencode
ContinueContinueuvx substack-ops mcp install print — paste the snippet into Continue’s MCP settings
ZedZedConfigure stdio MCP per Zed’s docs
ClineClineMCP setup per extension / marketplace docs
GooseGooseMCP extensions per Goose docs
Large commercial stacks
HostDocumentationTypical wire-up
CursorCursor MCPuvx substack-ops mcp install cursor
Claude (Desktop / Code)Claude Desktop, Claude Codemcp install claude-desktop / claude-code
GitHub CopilotCopilotMCP in VS Code / Copilot where supported — use print + host docs
ChatGPTOpenAIDeveloper / connector flows — often REST (Slideshot API) for tools without MCP
Google GeminiGeminiGemini CLI / IDE features per Google docs — stdio where supported
OpenCode (copy-paste)

Auto-install:

uvx substack-ops mcp install opencode

Manual (~/.config/opencode/opencode.json):

{

"mcp": { "substack-ops": { "type": "local", "command": ["uvx", "substack-ops", "mcp", "serve"], "enabled": true } } }

Optional version pin: use ["uvx", "substack-ops==0.3.5", "mcp", "serve"] (replace with current PyPI release).

Setup (dev / from source)

git clone https://github.com/06ketan/substack-ops && cd substack-ops

uv sync uv sync --extra mcp # mcp SDK for the MCP server (recommended) uv sync --extra tui # textual for the TUI uv sync --extra chrome # pycryptodome + keyring for Chrome cookie auto-grab

Auth defaults to ~/.cursor/mcp.json's mcpServers.substack-api.env. Override with env or .env. Or use one of the auth flows in auth login / auth setup.

uv run substack-ops auth verify

uv run substack-ops quickstart # 20-step tour

Command surface

Grouped by intent. Every write defaults to --dry-run; flip with --no-dry-run (and --yes-i-mean-it for the irreversible ones). All writes land in .cache/audit.jsonl and are dedup-checked against .cache/actions.db.

Auth (4)
CommandWhat it does
auth verifyConfirm the cookie works; print authed user/pub.
auth testSame as verify, exit non-zero on failure (CI-friendly).
`auth login --browser chrome\brave`Auto-grab cookie from local Chromium browser via macOS Keychain.
auth login --email me@x.comEmail magic-link → paste-the-link interactive flow.
auth setupInteractive paste of connect.sid cookie.
Read — Posts (8)
CommandWhat it does
`posts list [--pub] [--limit] [--sort new\top]`List posts from a publication (yours by default).
posts show [--pub]Post metadata (title, dates, reactions, comment count).
posts get --slug [--pub]Same as show but slug-only.
posts content [--md] [--pub]HTML body (auth-aware for paywalled). --md converts to Markdown.
posts stats Engagement counts — reactions, comments.
posts search [--pub] [--limit]Substack-side full-text search.
posts paywalled [--pub]Boolean: is this post paywalled?
posts react [--off] [--pub]Add (or remove with --off) a reaction. Defaults to ❤.
posts restack [--off]Restack a post (Substack does not support unrestack).
Read — Notes (5)
CommandWhat it does
notes list [--limit]Your published Notes.
notes show One note + its reply tree.
notes publish [--no-dry-run]Publish a top-level Note.
notes react [--off]React on any Note.
notes restack [--off]Restack a Note.
Read + Write — Comments (5)
CommandWhat it does
comments tree [--pub]Full nested comment tree as table.
comments export --out file.json [--pub]Same tree as JSON.
comments add [--pub] [--no-dry-run]New top-level comment.
`comments react --kind post\note [--off]`React on a comment.
`comments delete --kind post\note [--no-dry-run]`Destructive — your own comments only.
Reply engine (6)
CommandWhat it does
reply template --template thanksRule-based replies (no LLM).
reply review LLM drafts each, you [a]ccept / [e]dit / [s]kip / [q]uit.
reply bulk --out drafts.jsonDraft every comment to a file. Edit, set action: "approved".
reply note-bulk --out drafts.jsonSame for replies under a Note.
reply bulk-send drafts.json [--no-dry-run]Posts only approved rows. Dedup-checked.
reply auto --no-dry-run --yes-i-mean-itDraft + post immediately. 30s rate limit.
Read — Discovery (8)
CommandWhat it does
`feed list --tab for-you\subscribed\category-{slug}`Reader feed (the Substack app feed).
profile me / profile get Profile.
users get / users subscriptions Public user info + their subs.
podcasts list [--pub]Audio posts.
recommendations list [--pub]Pub's recommended publications.
authors list [--pub]Pub's contributor list.
categories list / categories get --name Substack's category taxonomy.
Automations (3)
CommandWhat it does
auto presetsList built-in YAML rules.
auto run One-shot run a preset.
auto daemon --interval 60Loop forever; logs to audit.
Operations + safety (3)
CommandWhat it does
audit search [--kind] [--target] [--status] [--since 7d]Query the JSONL audit log.
audit dedup-statusCounts in the dedup SQLite DB.
quickstart20-step interactive tour.
MCP server (3)
CommandWhat it does
mcp install [--dry-run]Auto-merge config into your host.
mcp servestdio MCP server (26 tools).
mcp list-toolsPrint the tool registry.
Other (1)
CommandWhat it does
tuiTextual TUI — 6 tabs (Notes, Posts, Comments, Feed, Auto, Profile).

Multi-publication

Every read command accepts --pub . Defaults to your own publication.

substack-ops posts list --pub stratechery --limit 5

substack-ops posts search "ai" --pub stratechery substack-ops recommendations list --pub stratechery

Reply modes

ModeWhat it doesSafety
templateYAML keyword/regex rules under src/substack_ops/templates/*.yamldry-run default
reviewLLM drafts each reply, you [a]ccept / [e]dit / [s]kip / [q]uitdry-run default + manual gate per comment
bulkLLM drafts every comment to drafts.json. Edit file, set action: "approved"offline review, dedup-checked on send
bulk-sendPosts only items with action: "approved"dry-run default; dedup DB prevents the M2 31-dup-replies regression
autoLLM drafts and posts immediatelyrequires --no-dry-run --yes-i-mean-it, 30s rate limit

After every live note-reply the engine re-fetches the new comment and asserts ancestor_path is non-empty. If empty, the audit row's result_status is flipped to "orphaned" (the M2 bug where parent_comment_id was silently dropped — now caught).

Automations

Built-in presets (auto presets):

  1. like-back — when someone reacts to your note, react to their latest note.
  2. auto-reply — same trigger, but post a templated thank-you.
  3. auto-restack — when a watchlist handle posts a new note, restack it.
  4. follow-back — when someone follows you, follow them back.

Custom YAML rules under ~/.config/substack-ops/auto/*.yaml. Loop with auto daemon --interval 60.

MCP server

substack-ops mcp install opencode          # auto-add to ~/.config/opencode/opencode.json

substack-ops mcp install cursor # auto-add to ~/.cursor/mcp.json substack-ops mcp install claude-desktop # auto-add to claude_desktop_config.json substack-ops mcp install claude-code

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx