Token导航 LogoToken导航

MCP Server · 开发工具

Presskit MCP

一个用于将Markdown内容发布到Medium和Substack的Python FastMCP服务器和CLI工具。

stdio官方级别未说明来源级核验工具 15
多平台支持PythonClaude开发工具Claude Desktop

快速开始

作者 / 组织
almoore
提供方
almoore

工具数量

15

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Presskit MCP 属于开发工具类 MCP Server,公开资料标注 15 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude,有可以直接复制的安装命令;接入前要先准备 访问 Token。

分类

开发工具

传输方式

stdio

认证方式

访问 Token

部署方式

公开资料未说明

安装与配置

安装命令

pip install -e .

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 15 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

印刷套件mcp

用于发布到Medium和Substack的Python FastMCP服务器和CLI。

稳定性警告:这两种集成都依赖于非官方/弃用的访问路径。 Medium的REST API已冻结(未颁发新令牌)。两个平台的内部 端点没有文档记录,可能会在不通知的情况下更改。

______________________________________________________________________

安装

pip install -e .

这将安装两个命令:

  • presskit --CLI用于从终端直接发布
  • publishing-mcp --与克劳德桌面/Claude代码一起使用的MCP服务器

______________________________________________________________________

CLI使用情况(presskit)

发布标记文件

# Publish to Medium as a draft
presskit publish medium --file docs/drafts/my-article.md

# Publish to Substack as a draft
presskit publish substack --file docs/drafts/my-article.md

# Publish to both platforms at once
presskit publish both --file docs/drafts/my-article.md

# Publish live (not draft)
presskit publish medium --file article.md --status public --tags "python,automation"

# Substack: publish to web only (no subscriber email)
presskit publish substack --file article.md --status public --no-email

CLI从markdown文件中读取YAML frontmatter:

---
title: "My Article Title"
subtitle: "Optional subtitle for Substack"
tags: [python, automation, infrastructure]
---

# My Article Title

Article body here...

如果没有正面 title 存在,第一个 # Heading 使用。

列出帖子

# List your Medium posts
presskit list medium --username alexander.g.moore1

# List Substack posts
presskit list substack --subdomain alexgmoore

# List Substack drafts
presskit drafts substack

CLI选项参考

presskit publish 
 [options]
  --file, -f       Markdown file to publish (required)
  --status, -s     draft | public | unlisted (default: draft)
  --tags, -t       Comma-separated tags, e.g. "python,devops" (Medium)
  --subtitle       Post subtitle (Substack)
  --no-email       Publish to web only, skip subscriber email (Substack)

presskit list 
 [options]
  --username, -u   Medium username without @ (Medium)
  --subdomain, -d  Substack subdomain (Substack)
  --limit, -n      Max results (default: 10)

presskit drafts substack

______________________________________________________________________

MCP服务器使用情况

运行服务器

# Direct
python server.py

# Or via installed entry point
publishing-mcp

添加到Claude代码(项目级)

创建 .claude/mcp.json 在您的项目中:

{
  "mcpServers": {
    "publishing": {
      "command": "python3",
      "args": ["/absolute/path/to/presskit-mcp/server.py"],
      "env": {
        "MEDIUM_SESSION_COOKIE": "your_sid_cookie",
        "MEDIUM_AUTH_STATE_FILE": "/path/to/medium-auth.json",
        "SUBSTACK_EMAIL": "you@example.com",
        "SUBSTACK_PASSWORD": "your_substack_password",
        "SUBSTACK_PUBLICATION_URL": "https://yourpub.substack.com"
      }
    }
  }
}

添加到克劳德桌面

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (Mac):

{
  "mcpServers": {
    "publishing": {
      "command": "python",
      "args": ["/absolute/path/to/presskit-mcp/server.py"],
      "env": {
        "MEDIUM_SESSION_COOKIE": "your_sid",
        "MEDIUM_AUTH_STATE_FILE": "/path/to/medium-auth.json",
        "SUBSTACK_EMAIL": "you@example.com",
        "SUBSTACK_PASSWORD": "your_password",
        "SUBSTACK_PUBLICATION_URL": "https://yourpub.substack.com"
      }
    }
  }
}

添加配置后重新启动Claude Desktop/Code。

______________________________________________________________________

FastMCP开发与测试

presskit mcp是基于 FastMCP。以下是在开发过程中如何使用它。

交互式检查工具

MCP检查器打开一个浏览器UI,您可以在其中调用任何工具、查看输入/输出和调试:

# Using the mcp CLI (installed with mcp[cli])
mcp dev server.py

这将启动服务器并在以下位置打开一个交互式检查器 http://localhost:5173。您可以:

  • 浏览所有15个已注册的工具
  • 填写参数并执行
  • 实时查看JSON响应
  • 测试错误处理

使用stdio传输运行服务器(默认)

# FastMCP defaults to stdio transport (what Claude Desktop/Code expects)
python server.py

使用SSE传输运行(用于远程/HTTP访问)

# Start as an HTTP server on port 8000
mcp run server.py --transport sse --port 8000

然后使用以下命令从任何MCP客户端连接 http://localhost:8000/sse.

直接通过调用工具 mcp call

# One-shot tool invocation without starting a persistent server
echo '{"username": "alexander.g.moore1", "limit": 5}' | \
  mcp call server.py medium_list_posts

列出所有已注册的工具

mcp tools server.py

测试环境变量

# Medium (session-based — no integration token needed)
export MEDIUM_SESSION_COOKIE="your_sid_value"
export MEDIUM_AUTH_STATE_FILE="/path/to/medium-auth.json"

# Medium (REST API — only if you have an existing token)
export MEDIUM_INTEGRATION_TOKEN="your_token"

# Substack
export SUBSTACK_EMAIL="you@example.com"
export SUBSTACK_PASSWORD="your_password"
export SUBSTACK_PUBLICATION_URL="https://yourpub.substack.com"

运行测试

python3 -m unittest discover -s tests -v

测试使用 sys.modules 修补存根第三方deps——不需要外部服务。

______________________________________________________________________

工具参考

中等(6个工具)

工具验证方法
medium_get_current_user集成令牌REST API
medium_get_publications集成令牌REST API
medium_create_post集成令牌REST API
medium_create_post_session会话cookieGraphQL+Delta OT
medium_list_posts会话cookie非官方GraphQL
medium_get_post_stats会话cookie非官方GraphQL

子工具包(9个工具)

工具验证方法
substack_get_publication_info电子邮件/密码或cookiepython子堆栈
substack_get_all_publications电子邮件/密码或cookiepython子堆栈
substack_list_posts无(公共)原始HTTP
substack_get_post无(公共)原始HTTP
substack_search_publications无(公共)原始HTTP
substack_get_subscriber_count电子邮件/密码或cookiepython子堆栈
substack_list_drafts电子邮件/密码或cookiepython子堆栈
substack_create_draft电子邮件/密码或cookiepython子堆栈
substack_publish_post电子邮件/密码或cookiepython子堆栈

______________________________________________________________________

凭证

中期会话cookie

介质不再发布API令牌。基于会话的工具使用浏览器Cookie:

  1. 在浏览器中登录medium.com
  2. 提取 sid 来自DevTools的cookie→ 应用→ Cookie
  3. 要获得完整功能,请使用以下命令保存完整的浏览器状态 playwright-cli state-save medium-auth.json 并设置 MEDIUM_AUTH_STATE_FILE

子堆栈

直接使用您的Substack电子邮件和密码。如果您的帐户仅使用魔术链接:

  1. 退出Substack
  2. 点击“使用密码登录”
  3. 点击“设置新密码”

______________________________________________________________________

建筑

presskit-mcp/
├── server.py          # FastMCP server entry point (15 tools)
├── cli.py             # CLI entry point (presskit command)
├── medium/
│   ├── client.py      # REST API + GraphQL + Delta OT HTTP layer
│   └── tools.py       # 6 MCP tools with Pydantic input models
├── substack/
│   ├── client.py      # python-substack wrapper + raw HTTP
│   └── tools.py       # 9 MCP tools with Pydantic input models
├── tests/
│   └── test_static.py # Unit tests (no external deps needed)
├── pyproject.toml     # pip installable, entry points
└── config.yaml        # Credential reference (not loaded by code)

Medium session发布的工作原理

Medium的web编辑器通过基于增量的Operational Transform系统保存内容,而不是GraphQL或REST medium_create_post_session 工具复制了这一点:

  1. 图查询语言 createPost → 创建空草稿,返回 post_id
  2. POST /p/{post_id}/deltas → 将标题+段落作为OT增量
  3. 图查询语言 setPostTags → 最多设置5个标签
  4. 图查询语言 publishPost → 发布(可选)

这是通过反编译Medium的Android APK并从网络编辑器中捕获网络流量而发现的。

______________________________________________________________________

已知限制

  • 中期会话Cookie过期 --您需要刷新 medium-auth.json 定期(通过浏览器重新登录)
  • 中等REST API --没有新的集成令牌。只有现有持有人可以使用 medium_create_post
  • 中等内联格式 -API中的粗体/斜体标记位置需要精确的字符偏移;当前的markdown解析器发送纯文本段落
  • 子堆栈 -没有官方API。所有端点都经过逆向工程。将请求保持在1/秒以下
  • 图像 --这两个平台都不支持通过这些工具进行程序化内联图像上传

工具与能力

工具数量

15

资源数量

0

提示词数量

0

能力标签

内容发布Python本地部署自动化工具多平台支持Markdown处理开发者工具

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 工具数量 15 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 需要自备访问 Token,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到访问 Token的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Presskit MCP

MCP World · 本页

15stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Presskit MCP 怎么安装?

公开资料给出的安装命令是 pip install -e .,运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Presskit MCP 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Presskit MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Presskit MCP 需要 API Key 吗?

公开资料标注的认证方式是访问 Token,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Presskit MCP 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP