mcp-pandoc 是一个用于文档格式转换的 Model Context Protocol(MCP)服务器,基于 Pandoc 实现。该项目已正式收录于 Model Context Protocol 开源服务器项目。需要说明的是,mcp-pandoc 目前处于早期开发阶段,PDF 支持仍在开发中,其功能与可用工具可能随持续改进而发生变化或扩展。项目使用 Pandoc Python 包进行文档转换,这是整个项目的基础。
用途
该服务器提供在不同文档格式之间转换内容的工具,转换过程中尽可能保留格式与结构。它适用于需要自动化文档格式转换的开发、写作及工作流场景。
主要能力
核心工具 convert-contents 可在支持的格式之间转换内容。
输入参数包括:
- contents(字符串):要转换的源内容(未提供 input_file 时必填)
- input_file(字符串):输入文件的完整路径(未提供 contents 时必填)
- input_format(字符串):源格式,默认为 markdown
- output_format(字符串):目标格式,默认为 markdown
- output_file(字符串):输出文件的完整路径(对于 pdf、docx、rst、latex、epub、odt、pptx 格式为必填)
- reference_doc(字符串):用于样式设置的参考文档路径(支持 docx、odt 和 pptx 输出;文件必须与输出格式匹配)
- defaults_file(字符串):包含转换选项的 Pandoc 默认文件(YAML)路径
- filters(数组):转换期间应用的 Pandoc 过滤器路径列表
支持格式及方向:
- markdown:可读可写
- html:可读可写
- docx:可读可写
- odt:可读可写
- rst:可读可写
- latex:可读可写
- epub:可读可写
- ipynb:可读可写
- txt:可读可写
- pdf:不可读,可写
- pptx:不可读,可写
注意:对于 pdf、docx、rst、latex、epub、odt、pptx 等高级格式,必须提供 output_file 路径。PDF 与 PPTX 为仅可写格式:Pandoc 从未提供 PDF 读取器;Pandoc 在 3.8.3 版本(2025-12-01 发布)中加入了 PowerPoint 读取器,但本项目未声明最低 Pandoc 版本,且 Ubuntu 24.04 仍随附 Pandoc 3.1.3,因此不提供 pptx 输入。PPTX 输出不需要特定 Pandoc 版本,PowerPoint 写入器自 Pandoc 2.0.5 起就已存在。
高级功能
可使用 defaults 文件创建具有一致格式的可复用转换模板,例如:"Convert paper.md to PDF using defaults academic-paper.yaml and save as paper.pdf"。 可应用自定义过滤器进行增强处理,例如:"Convert docs.md to HTML with filters ['/path/to/mermaid-filter.py'] and save as docs.html"。 更多示例与工作流参见 CHEATSHEET.md。
使用方式与配置
使用前需先安装下文所列的必需软件包。
Pandoc 安装(必需,核心文档转换引擎):
- macOS:brew install pandoc
- Ubuntu/Debian:sudo apt-get install pandoc
- Windows:从 https://pandoc.org/installing.html 下载安装程序
- 验证:pandoc --version
UV 包安装(必需,包含 uvx 命令):
- macOS:brew install uv
- Windows/Linux:pip install uv
- 验证:uvx --version
PDF 转换前置条件(仅在需要转换并保存 PDF 时):必须先安装 TeX Live。
- Ubuntu/Debian:sudo apt-get install texlive-xetex
- macOS:brew install texlive
- Windows:从 https://miktex.org/ 或 https://tug.org/texlive/ 安装 MiKTeX 或 TeX Live
文件路径要求:保存或转换文件时,必须提供包含文件名和扩展名的完整文件路径。该工具不会自动生成文件名或扩展名。 若未指定输出路径:基础格式会在聊天中显示转换后的内容;高级格式可能会保存在系统临时目录(Unix 系统为 /tmp/)。
手动配置:可通过 claude_desktop_config.json 配置文件安装。
- macOS:打开 ~/Library/Application\ Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%/Claude/claude_desktop_config.json 配置分两种情况:a) 仅用于本地开发与向本仓库贡献(需替换为本地克隆的项目路径);b) 已发布服务器的配置,使用者应使用此配置。如遇到问题,请直接使用"已发布服务器配置"而非 CLI。若要在本地配置 mcp-pandoc,请遵循"开发/未发布服务器配置"步骤。
适用场景
适用于需要在 Markdown、HTML、DOCX、ODT、RST、LaTeX、EPUB、IPYNB、TXT 等格式之间进行文档转换的场景;需要在转换时套用统一样式模板或自定义过滤器的场景;以及需要将转换流程集成到 MCP 客户端工作流中的开发者与写作者。
限制与注意事项
- 项目处于早期开发阶段,功能与工具可能变化。
- PDF 与 PPTX 仅支持输出,不支持作为输入读取。
- 高级格式必须提供完整的 output_file 路径。
- reference_doc 仅支持 DOCX、ODT、PPTX 输出,且参考文档必须与输出格式一致。Pandoc 本身不检查这一点:对于 DOCX 输出,不匹配的参考文档会被静默忽略;对于 ODT 输出,则会产生无法打开的 ODT 文件。创建参考文档的方式:pandoc -o reference.docx --print-default-data-file reference.docx,reference.odt 或 reference.pptx 同理。
- 常见错误及解决:PDF 转换报错 "xelatex not found",需先安装 TeX Live;文件转换报错 "Invalid file path",需提供包含文件名和扩展名的完整路径,例如 /path/to/document.pdf 而非仅 /path/to/;格式转换报错 "Unsupported format",需仅使用支持的格式;参考文档报错 "Reference document not found",需确保参考文档路径存在且可访问。
- 由于 MCP 服务器通过 stdio 运行,调试可能较困难,推荐使用 MCP Inspector 进行调试。可通过 npm 命令启动 MCP Inspector,启动后会显示一个 URL,可在浏览器中访问以开始调试。
该项目欢迎贡献:可在 GitHub Issues 页面报告问题或提交功能请求;也可通过创建拉取请求改进代码库或添加功能。