关于 markdown-notes-mcp
markdown-notes-mcp 是面向 Claude、VS Code 和 Antigravity 等 MCP 主机的本地文档转换服务,可将多种文件转为便于模型阅读的 Markdown。文档默认在本机处理,不上传;图像 OCR 也可在设备上运行。
主要功能
- 01转换多种文档格式为 Markdown
- 02在本机进行图像 OCR
- 03批量转换文件夹中的文件
- 04将摘要保存到文档旁
- 05长文档仅返回简短预览
适用场景
- 01让 AI 助手读取 EPUB 或演示文稿
- 02将扫描图像转换为可读文本
- 03批量整理文档为 Markdown
MCP 相关
提供 MCP 工具,用于转换文件、处理文件夹、保存摘要及查看支持格式。可连接 Claude Desktop、VS Code 和 Antigravity 等 MCP 主机。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y suprasuta-markdown-mcpMARKDOWN_MCP_ROOTSSemicolon-separated folders the server may read. Omit to allow any path.GEMINI_API_KEY密钥Optional. Enables cloud image recognition, which can also describe charts. Images are sent to Google only when cloud mode is chosen.ASSEMBLYAI_API_KEY密钥Optional. Enables audio transcription, the only feature that cannot run locally.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 要转换文件的绝对路径。 |
| save | boolean | 否 | 设为 false 可跳过 .md 文件的写入。默认值为 true——无需用户提出要求,文件就会保存在原文件旁边。 |
| save_to | string | 否 | 要写入 .md 文件的绝对路径,用于覆盖默认的原文件旁路径。 |
| ocr_mode | enum | 否 | 仅适用于图像。"offline"(默认值)在此设备上运行,不会上传任何内容。"cloud" 会将图像发送到 Google Gemini,准确度更高,并能描述图表;此模式需要 GEMINI_API_KEY。offline | cloud |
| overwrite | boolean | 否 | 设为 true 可替换同名的现有 .md 文件。默认值为 false;此时会改用带编号的文件名,以免覆盖文件。 |
| return_content | enum | 否 | "auto"(默认值)在文档较短时返回全文,否则返回预览和保存路径。"full" 始终返回所有内容——仅当用户确实需要在对话中查看全文时使用,因为长文档可能有数万个 token。"none" 仅保存并报告路径;用户只需要文件时,这是成本最低的选项。auto | full | none |
详细介绍
Suprasūtā Markdown Notes — MCP server
让 Claude、VS Code 和 Antigravity 读取你设备上的任意文档,无需上传。
**许可证:**可免费用于个人非商业用途。请参阅 LICENSE.md。
功能介绍
AI 助手可以读取纯文本,有些还可以读取 PDF。但它们都无法读取 EPUB、OpenDocument、PowerPoint 或扫描图像,而且都会先将文件上传到服务 器。
此工具会在你自己的设备上转换文档,并返回经过整理、便于大模型阅读的 Markdown——将表格转换为真正的 Markdown 表格、简化深层缩进,并正确标记代码块。
| 文档 | PDF、Word .docx、Excel .xlsx/.xls/.xlsm、PowerPoint .pptx、OpenDocument .odt/.ods、EPUB、CSV、TSV、纯文本 |
| 图像 | 在设备上进行 OCR,无需密钥,也无需联网 |
| 音频 | 转录——这是唯一无法在本地运行的功能 |
工具
| 工具 | 功能 |
|---|---|
convert_to_markdown | 转换单个文件,并自动将 .md 文件保存在原文件旁边 |
convert_folder_to_markdown | 将多个文件转换到指定目录 |
save_summary | 将助手撰写的摘要以 <name>.summary.md 的形式保存在文档旁边 |
list_supported_formats | 列出支持的扩展名,以及已配置的可选云端功能 |
关于令牌
转换不会产生任何费用——所有操作都在本地完成。但将长文档返回到对话中确实会消耗令牌,费率与手动粘贴相同。
因此,较长的转换结果会保存到磁盘,只返回简短预览。50 页的 PDF 大约消耗 400 个令牌,而不是 30,000 个。短文档会完整返回,因为无论如何消耗都很少。使用 return_content: "full" 可覆盖此行为。
安装
Claude Desktop — 简便方式
从 Releases 下载 .mcpb 文件,然后双击。Claude Desktop 会安装它,并询问允许读取哪些文件夹,以及是否提供 API 密钥。无需 Node、终端或 JSON。
Claude Desktop — 从源码安装
npm install
npm run build
node scripts/install-claude-desktop.mjs --roots "D:\your\documents"
然后彻底重启 Claude Desktop。该脚本会修改现有配置,而不是替换配置,并会先写入带时间戳的备份。
--roots 为可选参数,但建议使用:它会限制 MCP 服务可以读取的文件夹。不使用时,助手请求的任何路径都允许访问。
如需移除:node scripts/install-claude-desktop.mjs --remove
从 npm 安装 — 适用于任何 MCP 宿主
npm install -g suprasuta-markdown-mcp
然后将宿主指向 suprasuta-markdown-mcp 命令,或直接运行而不安装:
{
"servers": {
"suprasuta-markdown": {
"command": "npx",
"args": ["-y", "suprasuta-markdown-mcp"],
"env": { "MARKDOWN_MCP_ROOTS": "D:\\your\\documents" }
}
}
}
VS Code 和 Antigravity
两者都读取标准 MCP 配置——上方的配置块可直接使用。
Antigravity 会读取 ~/.gemini/config/mcp_config.json,或工作区内的
.agents/mcp_config.json。
如果要运行本地检出版本,而不是已发布的软件包,请将 command 和
args 替换为 node 和 dist/server.js 的绝对路径。
可选云端功能
只有提供密钥后,这两项功能才会启用。其他所有功能无需密钥即可使用。
| 变量 | 启用的功能 | 离开你设备的内容 |
|---|---|---|
GEMINI_API_KEY | 云端 OCR,也可描述图表和示意图 | 图像会发送给 Google |
ASSEMBLYAI_API_KEY | 音频转录 | 音频文件会发送给 AssemblyAI |
密钥从环境变量中读取,绝不会写入磁盘或记录到日志中。
设置只会在启动时读取一次。 MCP 服务是长期运行的进程,因此在运行期间保存的密钥或文件夹设置,只有宿主重启后才会生效。如果刚输入的密钥显示为未配置,请先重启宿主,再排查其他问题。
开发
npm install # .npmrc sets include=dev — do not delete it
npm run build # stages the OCR engine, then bundles with esbuild
npm test # 19 tests against the built bundle
npm run smoke # converts every file in samples/ and reports
npm run typecheck
为什么构建使用 esbuild 而不是 tsc
src/lib/convert/ 与 Windows、Web 和 Android 应用中的副本保持字节级一致,这样就能及时发现差异,而不是等到问题暴露后才发现。这些文件使用了无扩展名导入和一个 Vite 专用的 ?url 导入,而 Node 自带的解析器都无法处理。esbuild 可以解析这两者,因此共享文件无需为适配 Node 而修改。
运行时钩子
浏览器和 Node 之间确实有三处差异,src/lib/convert/runtime.ts 会询问宿主环境,而不是通过检查 process 来判断:
| 钩子 | 原因 |
|---|---|
tesseractPaths | 浏览器需要 URL 和自己的工作线程;Node 需要文件系统路径,且绝不能传入浏览器工作线程 |
docxSource | mammoth 在浏览器中读取 arrayBuffer,在 Node 中读取 buffer |
ocrImageInput | tesseract 的 Node 构建无法解码 Blob;它需要 Buffer |
其他部分都是共享的。src/runtime/node.ts 提供 Node 所需的值,并且只对一个浏览器全局对象 DOMParser 提供垫片。
一个惨痛教训:该文件以前也定义了
document,结果导致 OCR 出错。tesseract.js 检测到 DOM 后走了浏览器分支,最终因window is not defined而崩溃。半套浏览器环境比没有更糟——只提供最低限度的垫片。
确保副本保持一致
npm run sync:check # list differences against all three apps
npm run sync:pull web # bring the web app's version in
node scripts/sync-converters.mjs --push web
此软件包是规范副本:它是唯一包含运行时钩子的副本,能让相同文件在两种环境中运行,因此修复从这里开始,再向外同步。sync:check 会报告差异并以零状态码退出——差异是信息,不是构建失败。
隐私政策
本软件不会收集任何信息。没有账户、分析、遥测,也没有自有服务器——文档转换完全在你的设备上进行。
两项可选功能会向第三方发送数据,且仅在你提供自己的 API 密钥时才会发送:云端图像识别会将图像发送给 Google,音频转录会将音频发送给 AssemblyAI。未配置密钥时,软件不会建立任何网络连接。API 密钥从环境中读取,不会写入磁盘,也不会记录到日志中。
完整政策涵盖数据收集、存储、保留、与第三方共享及联系方式:PRIVACY.md。
相关项目
| Windows 应用 | Microsoft Store · 源代码 |
| Web 应用 | markdown-notes-psi.vercel.app · 源代码 |
| Android | 通过 Chrome 安装 Web 应用 · 较早的原生版本,已不再维护 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。