mcpField
P
postmd-mcp-server

postmd-mcp-server

远程服务
github.com/reinlainer生产力04 周前更新
代码仓库

关于 postmd-mcp-server

postmd-mcp-server 让助手将 Markdown 发布为可分享的 PostMD 网页,并管理文档。它支持文档图谱、备注和分组;发布与基础阅读无需账户或 API 密钥。

主要功能

  1. 01将 Markdown 发布为可分享网页
  2. 02读取、更新和删除文档
  3. 03上传 Markdown 文件并支持批量处理
  4. 04按分组整理文档
  5. 05添加备注和段落高亮
  6. 06支持文档密码与主题

适用场景

  1. 01通过链接分享 Markdown 文档
  2. 02批量发布多个本地 Markdown 文件
  3. 03将已发布文档归入分组
  4. 04讨论或高亮引用段落

MCP 相关

它向 MCP 客户端提供 PostMD 发布、读取、编辑和整理文档的工具。远程服务提供 5 个工具,本地运行可使用完整的 20 个工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://postmd.turink.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmpostmd-mcp-server2.6.1

工具

5
参数类型必填说明
titlestring否在查看器和链接预览中显示。默认为不带 .md 的 fileName。
groupIdnumber否将文档归入此群组,而非默认群组(需要 API 密钥)。
fileNamestring否上传文件名,必须以 .md 结尾。默认值为 document.md。
markdownstring是完整 Markdown 文档,作为一个 UTF-8 字符串(完整源文档,不是摘要)。可包含 HTML 注释中的图表数据,由查看器绘制;格式见 /docs/graph。
passwordstring否读者必须提供此密码才能查看内容。
viewerStylestring否查看器主题:readable(默认)、github、minimal、report、pamphlet 或 dark。未知值将回退到 readable。

详细介绍

PostMD MCP 服务

PostMD 的模型上下文协议服务端——发布 Markdown 文档,获取可通过链接分享的网页,并添加文档图谱供查看器绘制:阅读顺序、文档提及的实体和规则,以及分布在各章节中的流程。支持可选的分组、文档密码和查看器主题。此服务端封装了 PostMD 的公共 API(/api/v1),让助手能够发布、读取、更新和整理文档。

发布无需账户和密钥。 无需任何配置,此服务端即可将 Markdown 转换为可分享的网页;托管服务端 https://postmd.turink.com/mcp 也无需安装。API 密钥可用于管理文档:将文档整理到分组中,以及添加备注。

保留 30 天。 文档的保留期限为 30 天(data.retainedUntil);每次读取都会延长 30 天(每天最多延长一次)。没有密码的文档可由任何人更新或删除;受密码保护的文档则需要密码或所有者的 API 密钥。

相关文档: /llms.txt 列出了服务的功能,以及各项内容对应的页面;请从这里开始。/docs/api 是 HTTP 参考文档,/api-docs 是机器可读的规范。

托管或本地

托管本地
地址https://postmd.turink.com/mcpnpx -y postmd-mcp-server
需要无Node.js 20 或更高版本
工具5 个全部 20 个
API 密钥不接受可选,用于需要成员权限的工具
客户端任意客户端,包括仅支持 Web 的客户端,如 ChatGPT 和 claude.ai任意可运行本地进程的客户端

托管服务端无法接收 API 密钥,因此只提供无需密钥的工具。分组、备注以及读取磁盘文件的工具仅限本地使用。

配置

仅限本地使用——托管服务端不会读取这些变量。它们均为可选项。

变量说明
POSTMD_BASE_URL默认为 https://postmd.turink.com。用于可自托管/本地实例。仅填写源地址,不带末尾斜杠。
POSTMD_API_KEY用于下方标注了权限范围的工具,格式为 pmk_…。登录 postmd.turink.com,打开 账户 → API 密钥,选择所需权限范围——读取和写入权限彼此独立;出现 403 通常意味着缺少所需权限。
POSTMD_DEBUG设置为 1/true/yes → 在 stderr 中输出额外日志。

加载顺序:此仓库的 .env(如果存在)会通过 dotenv 加载,且不会覆盖主机已设置的变量(例如 MCP env)。请勿提交 .env 或密钥。

工具

以下所有工具都可在本地服务端使用。托管服务端提供其中 5 个: postmd_create_document、postmd_get_document、postmd_get_document_raw、postmd_update_document 和 postmd_delete_document。

发布和读取——无需密钥:

工具用途
postmd_create_document发布 Markdown,获取 docCode 和分享 URL
postmd_create_document_from_file功能相同,但由此服务端读取本地 filePath(适用于大型文件)
postmd_get_document根据 docCode 获取元数据
postmd_get_document_raw获取存储的 Markdown 正文(可选提供 password)

管理文档——需要拥有 documents:write 权限的密钥(对于不属于任何人的无密码文档,也可使用密码或不提供凭据):

工具用途
postmd_update_document替换内容和/或元数据;可清除密码
postmd_update_document_from_file功能相同,正文从本地 filePath 读取
postmd_delete_document删除文档(无法撤销)
postmd_create_documents_from_files在一次调用中批量发布多个 .md 文件
postmd_move_document_to_group将文档移入分组
图表

PostMD 文档可以包含图表数据,由查看器绘制,以展示文档各部分之间的关系。这里没有工具可以创建或编辑图表,因为没有对应的端点:数据以 HTML 注释的形式存放在 Markdown 中,并随正文一起传递。

因此,要为现有文档添加图表,需要使用 postmd_get_document_raw 读取文档,插入注释,再使用 postmd_update_document 发送完整正文。发布带有图表的新文档则只需进行常规的 postmd_create_document 调用。

格式见 https://postmd.turink.com/docs/graph。确定节点以及它们之间的连接方式需要读取文档,这是调用方 Agent 的工作;PostMD 只会绘制它找到的内容。

将代码保存在文件中

Markdown 文件可以在顶部通过标记为 postmd:document 的 HTML 注释,保存其发布时对应的文档代码。之后打开该文件的会话无需提供地址,就能知道要更新哪个文档。格式见 https://postmd.turink.com/docs/api 中的“将代码保存在文件中”。这里没有工具会写入该注释;调用方 Agent 需要编辑自己的文件。

替换带有注释的文档内容

注释根据其引用的文本定位,而非根据存储的位置定位。因此,替换文档正文会改变或丢失注释的指向位置:引用内容已不存在的注释会失去在正文中的位置;引用内容现在出现在其他位置的注释则会指向那里。无论哪种情况,注释本身(包括引用文本)都会保留。

发送新内容时,两个更新工具都要求提供 notesOnReplace。

值效果
keep替换内容,并保持注释不变
abort如果文档有锚定在文本上的注释,则拒绝操作,并说明注释数量

仅更新元数据时无需提供该参数。

注释和高亮 — 使用 documents:read / documents:write 权限。注释是锚定到引用段落的文本;高亮是仅带有颜色的同类对象。可见范围由所有权决定:在密钥持有者自己的文档中,注释为 PRIVATE 或 SHARED;在其他人的文档中,注释始终为 SHARED。无人拥有的文档 — 匿名上传和服务所有的页面 — 不接受注释:

工具用途
postmd_list_notes查看文档上的注释:你自己的注释以及所有 SHARED 注释
postmd_add_note为引用段落添加注释或仅带颜色的高亮
postmd_update_note编辑你撰写的注释
postmd_resolve_note将 SHARED 讨论标记为已解决,或重新开启讨论
postmd_delete_note删除你自己的注释,或删除你文档上的 SHARED 注释
postmd_list_my_notes查看你在所有文档上的注释

群组 — 使用 groups:read / groups:write 权限:

工具用途
postmd_list_groups查看密钥可见的群组(分页)
postmd_list_group_documents查看群组中的文档(分页、可搜索、可排序)
postmd_create_group创建群组
postmd_update_group重命名群组
postmd_delete_group删除群组(文档会保留)

上传时:可以将完整的 Markdown 作为 markdown 参数传入,也可以只传入本地 filePath,由此 MCP 服务读取文件。该路径必须存在于运行 MCP 服务的机器上。

客户端配置

托管式

Claude Code:

claude mcp add --transport http postmd https://postmd.turink.com/mcp

支持 JSON 配置的客户端:

{
  "mcpServers": {
    "PostMD": {
      "type": "http",
      "url": "https://postmd.turink.com/mcp"
    }
  }
}

在 ChatGPT 中,将其添加到 Settings → Apps;在 claude.ai 中,将其添加到 Settings → Connectors。 无需进行任何授权。

本地

无需安装:npx 会获取软件包,客户端会启动它。

Claude Code:

claude mcp add postmd -- npx -y postmd-mcp-server

Cursor(~/.cursor/mcp.json)和大多数其他 stdio 客户端:

{
  "mcpServers": {
    "PostMD": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "postmd-mcp-server"],
      "env": { "POSTMD_API_KEY": "pmk_…" }
    }
  }
}

若要运行本地检出版本——修改代码,或针对本地 PostMD 进行调试—— 请让客户端指向该文件。

git clone https://github.com/reinlainer/postmd-mcp-server.git
cd postmd-mcp-server && npm ci
claude mcp add postmd-dev -- node "$PWD/src/index.js"

用于发布或只读时,请完全省略 env。也可以运行 cp .env.example .env——服务会加载自己的 .env。

手动运行 npx -y postmd-mcp-server 只能检查它是否能启动。它通过 stdin 和 stdout 进行 MCP 通信,因此会一直等待客户端连接。

冒烟测试

针对运行中的服务执行完整写入流程,并在结束后清理。需要具有全部四种权限范围的密钥。

export POSTMD_API_KEY=pmk_…
npm run smoke

它会创建一个分组和一个设有密码的文档,读取文档、更新文档、清除密码,然后删除两者。它还会在没有凭据的情况下发布一个文档,并在不使用令牌的情况下将其删除。

技术栈

@modelcontextprotocol/sdk 1.30.0、dotenv。许可证: MIT。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。