<a href="https://glama.ai/mcp/servers/xyzzgaj9bk"><img width="380" height="200" src="https://gips2.baidu.com/it/u=631493287,2776456145&fm=3081&app=3081&f=PNG?w=760&h=400" />
正式包含在 模型上下文协议服务器 开源项目中。🎉
这是一个使用 pandoc 进行文档格式转换的模型上下文协议服务器。此服务器提供了工具,可以在不同的文档格式之间转换内容,同时保留格式和结构。
请注意,mcp-pandoc 目前处于早期开发阶段。PDF 支持正在开发中,功能和可用工具可能会随着我们继续改进服务器而发生变化和扩展。
致谢:此项目使用了 Pandoc Python 包进行文档转换,构成了该项目的基础。
新用户? 查看 📖 CHEATSHEET.md 获取:
非常适合快速查找和快速上手!
<details> <summary>截图</summary> <img width="2407" alt="2024-12-26 下午3点33分54秒的屏幕截图" src="https://gips2.baidu.com/it/u=3897668692,806518913&fm=3081&app=3081&f=PNG?w=4814&h=2190" /> <img width="2052" alt="2024-12-26 下午3点38分24秒的屏幕截图" src="https://gips0.baidu.com/it/u=2343300352,3149093030&fm=3081&app=3081&f=PNG?w=4104&h=1912" /> <img width="1498" alt="2024-12-26 下午3点40分51秒的屏幕截图" src="https://gips0.baidu.com/it/u=3658562636,46690296&fm=3081&app=3081&f=PNG?w=2996&h=2290" /> <img width="760" alt="2024-12-26 下午3点41分20秒的屏幕截图" src="https://gips2.baidu.com/it/u=1889545660,570950129&fm=3081&app=3081&f=PNG?w=1520&h=1434" /> <img width="1493" alt="2024-12-26 下午3点50分27秒的屏幕截图" src="https://gips3.baidu.com/it/u=1977031172,1811478704&fm=3081&app=3081&f=PNG?w=2986&h=1924" /> </details>
更多内容即将推出...
convert-contents
contents(字符串):要转换的源内容(如果未提供 input_file,则需要)input_file(字符串):输入文件的完整路径(如果未提供 contents,则需要)input_format(字符串):内容的源格式(默认为 markdown)output_format(字符串):目标格式(默认为 markdown)output_file(字符串):输出文件的完整路径(对于 pdf、docx、rst、latex、epub 格式是必需的)reference_doc(字符串):用于样式的参考文档路径(仅支持 docx 输出格式)defaults_file(字符串):包含转换选项的 Pandoc 默认文件路径(YAML)filters(数组):在转换过程中应用的 Pandoc 过滤器路径列表使用默认文件创建可重复使用的转换模板,以保持一致的格式:
# academic-paper.yaml
from: markdown
to: pdf
number-sections: true
toc: true
metadata:
title: "学术论文"
author: "研究团队"
示例用法:"将 paper.md 转换为 PDF,使用 defaults academic-paper.yaml,并保存为 paper.pdf"
应用自定义过滤器以增强处理:
示例用法:"将 docs.md 转换为 HTML,使用过滤器 ['/path/to/mermaid-filter.py'] 并保存为 docs.html"
💡 对于全面的示例和工作流程,请参阅 CHEATSHEET.md
| 从\到 | MD | HTML | TXT | DOCX | RST | LaTeX | EPUB | IPYNB | ODT | |
|---|---|---|---|---|---|---|---|---|---|---|
| Markdown | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| HTML | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TXT | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DOCX | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RST | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| LaTeX | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| EPUB | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| IPYNB | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ODT | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
此工具使用 pandoc 进行转换,允许从上述格式生成 PDF 文件。然而,从 PDF 转换为其他格式是不被支持的。因此,PDF 应被视为一个只输出的格式。
| 类别 | 格式 | 要求 |
|---|---|---|
| 基础 | MD, HTML, TXT, IPYNB, ODT | 无 |
| 高级 | DOCX, PDF, RST, LaTeX, EPUB | 必须指定 output_file 路径 |
| 样式化 | DOCX 带参考文档 | 自定义模板支持 ⭐ |
注意:对于高级格式:
brew install texlive)注意:确保完成安装以下“关键要求”中提到的所需包。
要使用已发布的版本
{
"mcpServers": {
"mcp-pandoc": {
"command": "uvx",
"args": ["mcp-pandoc"]
}
}
}
💡 快速开始:查看 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 转换之前必须安装 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
✅ 正确用法:
# 将内容转换为 PDF
"将此文本转换为 PDF 并保存为 /path/to/document.pdf"
# 在文件格式之间转换
"将 /path/to/input.md 转换为 PDF 并保存为 /path/to/output.pdf"
# 使用参考文档模板转换为 DOCX
"将 input.md 转换为 DOCX,使用 template.docx 作为参考,并保存为 output.docx"
# 分步参考文档工作流程
"首先创建一个参考文档:pandoc -o custom-reference.docx --print-default-data-file reference.docx" 或者如果你已经有了一个,使用那个
"然后使用自定义样式转换:将此文本转换为 DOCX,使用 /path/to/custom-reference.docx 作为参考,并保存为 /path/to/styled-output.docx"
❌ 错误用法:
# 缺少文件名和扩展名
"保存为 PDF 在 /documents/"
# 缺少完整路径
"转换为 PDF"
# 缺少扩展名
"保存为 /documents/story"
PDF 转换失败
文件转换失败
/path/to/document.pdf 而不是仅仅 /path/to/格式转换失败
参考文档问题
pandoc -o reference.docx --print-default-data-file reference.docxopen ~/Library/Application\ Support/Claude/claude_desktop_config.jsona) 仅用于本地开发及对此仓库的贡献
<details> <summary>开发/未发布服务器配置</summary>ℹ️ 用你的本地克隆项目路径替换 <DIRECTORY>
"mcpServers": {
"mcp-pandoc": {
"command": "uv",
"args": [
"--directory",
"<DIRECTORY>/mcp-pandoc",
"run",
"mcp-pandoc"
]
}
}
</details>
b) 发布服务器配置 - 消费者应使用此配置
"mcpServers": {
"mcp-pandoc": {
"command": "uvx",
"args": [
"mcp-pandoc"
]
}
}
注意:要使用本地配置的 mcp-pandoc,请遵循上述“开发/未发布服务器配置”步骤。
要运行综合测试套件并验证所有支持的双向转换,请使用以下命令:
uv run pytest tests/test_conversions.py
这确保了向后兼容性并验证了工具的核心功能。
要准备打包进行分发:
uv sync
uv build
这将在 dist/ 目录中创建源代码和轮子分布。
uv publish
注意:您需要通过环境变量或命令标志设置 PyPI 凭证:
--token 或 UV_PUBLISH_TOKEN--username/UV_PUBLISH_USERNAME 和 --password/UV_PUBLISH_PASSWORD由于 MCP 服务器通过标准 I/O 运行,调试可能会很困难。为了获得最佳的调试体验,我们强烈推荐使用 MCP Inspector。
你可以通过以下命令使用 npm 启动 MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory /Users/vivekvells/Desktop/code/ai/mcp-pandoc run mcp-pandoc
启动后,Inspector 将显示一个 URL,你可以在浏览器中访问该 URL 开始调试。
我们欢迎对 mcp-pandoc 的增强贡献!以下是参与的方式: