mcpField
M
mcp-pandoc: A Document Conversion MCP Server

mcp-pandoc: A Document Conversion MCP Server

本地服务
pypi.org生产力58411 周前更新

关于 mcp-pandoc: A Document Conversion MCP Server

mcp-pandoc 是基于 pandoc 的文档格式转换 MCP 服务,可在 Markdown、HTML、DOCX、LaTeX、EPUB 等格式之间转换内容。它支持使用参考文档进行样式设置和 YAML 默认配置文件,目前仍处于早期开发阶段。

主要功能

  1. 01在多种文档格式之间转换内容
  2. 02支持参考文档设置 DOCX、ODT、PPTX 样式
  3. 03支持 YAML 默认配置文件与 pandoc 过滤器
  4. 04PDF 与 PPTX 仅支持输出

适用场景

  1. 01将 Markdown 笔记转换为 DOCX 或 EPUB
  2. 02使用模板文档统一输出样式
  3. 03将内容导出为 PDF 或 PPTX 文件

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 convert-contents 工具,用于按参数完成文档格式转换。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pandoc": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

下载量 CI

image

MseeP.ai 安全评估徽章 README 配图

mcp-pandoc:文档转换 MCP 服务

已正式纳入 Model Context Protocol 服务开源项目。🎉

概述

一个使用 pandoc 转换文档格式的 Model Context Protocol 服务。此服务提供工具,可在不同文档格式之间转换内容,同时保留格式和结构。

请注意,mcp-pandoc 目前仍处于早期开发阶段。PDF 支持仍在开发中,随着我们不断改进此服务,其功能和可用工具可能会发生变化并扩展。

致谢:本项目使用 Pandoc Python package 进行文档转换,它构成了本项目的基础。

📋 快速参考

刚开始使用 mcp-pandoc? 请查看 📖 CHEATSHEET.md,了解:

  • ⚡ 所有格式的复制粘贴示例
  • 🔄 双向转换矩阵
  • 🎯 常见工作流和实用技巧
  • 🌟 参考文档样式指南

非常适合快速查阅和快速入门!

演示

mcp-pandoc - v1:使用 MCP 服务为 Claude 无缝转换文档格式

🎥 在 YouTube 上观看

屏幕截图 屏幕截图 2024-12-26 at 3 33 54 PM 屏幕截图 2024-12-26 at 3 38 24 PM 屏幕截图 2024-12-26 at 3 40 51 PM 屏幕截图 2024-12-26 at 3 41 20 PM 屏幕截图 2024-12-26 at 3 50 27 PM

更多内容即将推出……

工具

  1. convert-contents
    • 在支持的格式之间转换内容

    • 输入:

      • contents (string):要转换的源内容(如果未提供 input_file,则为必填项)
      • input_file (string):输入文件的完整路径(如果未提供 contents,则为必填项)
      • input_format (string):内容的源格式(默认为 markdown)
      • output_format (string):目标格式(默认为 markdown)
      • output_file (string):输出文件的完整路径(pdf、docx、rst、latex、epub、odt、pptx 格式必填)
      • reference_doc (string):用于设置样式的参考文档路径(支持 docx、odt 和 pptx 输出;文件必须与输出格式一致)
      • defaults_file (string):包含转换选项的 Pandoc defaults 文件(YAML)路径
      • filters (array):转换时要应用的 Pandoc 筛选器路径列表
    • 按方向列出的支持格式:

      格式读取写入
      markdown✅✅
      html✅✅
      docx✅✅
      odt✅✅
      rst✅✅
      latex✅✅
      epub✅✅
      ipynb✅✅
      txt✅✅
      pdf❌✅
      pptx❌✅
    • 注意:对于高级格式(pdf、docx、rst、latex、epub、odt、pptx),必须提供 output_file 路径

🔧 高级功能
Defaults 文件(YAML 配置)

使用 defaults 文件创建可重复使用、格式一致的转换模板:

# academic-paper.yaml
from: markdown
to: pdf
number-sections: true
toc: true
metadata:
  title: "Academic Paper"
  author: "Research Team"

用法示例:"使用 defaults academic-paper.yaml 将 paper.md 转换为 PDF,并保存为 paper.pdf"

Pandoc 筛选器

应用自定义筛选器以增强处理效果:

用法示例:"使用筛选器 ['/path/to/mermaid-filter.py'] 将 docs.md 转换为 HTML,并保存为 docs.html"

💡 如需查看全面的示例和工作流,请参阅 CHEATSHEET.md

📊 支持的格式与转换

双向转换矩阵

行表示源格式,列表示目标格式。PDF 和 PPTX 没有对应的行,因为 pandoc 无法读取它们。

From\ToMDHTMLTXTDOCXODTRSTLaTeXEPUBIPYNBPDFPPTX
Markdown✅✅✅✅✅✅✅✅✅✅✅
HTML✅✅✅✅✅✅✅✅✅✅✅
TXT✅✅✅✅✅✅✅✅✅✅✅
DOCX✅✅✅✅✅✅✅✅✅✅✅
ODT✅✅✅✅✅✅✅✅✅✅✅
RST✅✅✅✅✅✅✅✅✅✅✅
LaTeX✅✅✅✅✅✅✅✅✅✅✅
EPUB✅✅✅✅✅✅✅✅✅✅✅
IPYNB✅✅✅✅✅✅✅✅✅✅✅
关于仅支持写入格式的说明

PDF 和 PPTX 可以生成,但无法读取。

Pandoc 从未提供过 PDF 读取器。Pandoc 在 3.8.3 版(于 2025-12-01 发布)中新增了 PowerPoint 读取器,但本项目未声明最低 pandoc 版本,而且 Ubuntu 24.04 仍随附 pandoc 3.1.3,因此不提供 pptx 输入。相关问题见 #54 和 #49。

PPTX 输出不需要特定的 pandoc 版本。PowerPoint 写入器自 pandoc 2.0.5 起便已存在。

格式类别
类别格式要求
基础MD、HTML、TXT、IPYNB无,直接返回
高级DOCX、ODT、PDF、PPTX、RST、LaTeX、EPUB必须指定 output_file 路径
带样式DOCX、ODT、PPTX(使用参考文档)支持自定义模板 ⭐
各格式的要求
  • PDF (.pdf) - 需要安装 TeX Live
  • DOCX (.docx)、ODT (.odt)、PPTX (.pptx) - 支持通过参考文档自定义样式,且参考文档必须与输出格式相同
  • 所有其他格式 - 无额外要求

注意:对于高级格式:

  1. 必须提供包含文件名和扩展名的完整文件路径
  2. 转换 PDF 需要安装 TeX Live(参见“关键要求”部分 -> 对于 macOS:brew install texlive)
  3. 未指定输出路径时:
    • 基础格式:在聊天中显示转换后的内容
    • 高级格式:可能会保存在系统临时目录中(Unix 系统上的 /tmp/)

使用与配置

注意:请确保完成下文“关键要求”中提到的必需软件包的安装。

使用已发布版本

{
  "mcpServers": {
    "mcp-pandoc": {
      "command": "uvx",
      "args": ["mcp-pandoc"]
    }
  }
}

💡 快速入门:请参阅 CHEATSHEET.md,了解可复制粘贴的示例和常见工作流。

⚠️ 重要说明
关键要求
  1. 安装 Pandoc
  • 必需:安装 pandoc——核心文档转换引擎

  • 安装:

    # macOS
    brew install pandoc
    
    # Ubuntu/Debian
    sudo apt-get install pandoc
    
    # Windows
    # Download installer from: https://pandoc.org/installing.html
    
  • 验证:pandoc --version

  1. 安装 UV 软件包
  • 必需:安装 uv 软件包(包含 uvx 命令)

  • 安装:

    # macOS
    brew install uv
    
    # Windows/Linux
    pip install uv
    
  • 验证:uvx --version

  1. **PDF 转换先决条件:**仅在需要转换并保存 PDF 时才需要
  • 尝试转换 PDF 前必须安装 TeX Live

  • 安装命令:

    # Ubuntu/Debian
    sudo apt-get install texlive-xetex
    
    # macOS
    brew install texlive
    
    # Windows
    # Install MiKTeX or TeX Live from:
    # https://miktex.org/ or https://tug.org/texlive/
    
  1. 文件路径要求
  • 保存或转换文件时,必须提供包含文件名和扩展名的完整文件路径
  • 此工具不会自动生成文件名或扩展名
示例

✅ 正确用法:

# Converting content to PDF
"Convert this text to PDF and save as /path/to/document.pdf"

# Converting between file formats
"Convert /path/to/input.md to PDF and save as /path/to/output.pdf"

# Converting to DOCX with a reference document template
"Convert input.md to DOCX using template.docx as reference and save as output.docx"

# Converting to ODT with a reference document template
"Convert input.md to ODT using template.odt as reference and save as output.odt"

# Converting to a branded PowerPoint deck
"Convert slides.md to PPTX using template.pptx as reference and save as deck.pptx"

# Step-by-step reference document workflow
"First create a reference document: pandoc -o custom-reference.docx --print-default-data-file reference.docx" or if you already have one, use that
"Then convert with custom styling: Convert this text to DOCX using /path/to/custom-reference.docx as reference and save as /path/to/styled-output.docx"

❌ 错误用法:

# Missing filename and extension
"Save this as PDF in /documents/"

# Missing complete path
"Convert this to PDF"

# Missing extension
"Save as /documents/story"
常见问题与解决方案
  1. PDF 转换失败

    • 错误:“找不到 xelatex”
    • 解决方案:先安装 TeX Live(参见上述安装命令)
  2. 文件转换失败

    • 错误:“文件路径无效”
    • 解决方案:提供包含文件名和扩展名的完整路径
    • 示例:使用 /path/to/document.pdf,而非仅使用 /path/to/
  3. 格式转换失败

    • 错误:“不支持的格式”
    • 解决方案:仅使用支持的格式:
      • 基础:txt、html、markdown
      • 高级:pdf、docx、rst、latex、epub
  4. 参考文档问题

    • 错误:“找不到参考文档”
    • 解决方案:确保参考文档路径存在且可访问
    • 错误:“当 output_format 为 'odt' 时,reference_doc 必须是 '.odt' 文件”
    • 解决方案:参考文档必须与输出格式相同。Pandoc 本身不会检查这一点:格式不匹配的参考文档在输出 DOCX 时会被静默忽略,而输出的 ODT 文件则无法打开
    • 注意:参考文档适用于 DOCX、ODT 和 PPTX 输出格式
    • 创建方法:pandoc -o reference.docx --print-default-data-file reference.docx,reference.odt 或 reference.pptx 也同理

快速入门

通过 claude_desktop_config.json 配置文件手动安装
  • 在 MacOS 上:open ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • 在 Windows 上:%APPDATA%/Claude/claude_desktop_config.json

a) 仅用于本地开发和为此仓库贡献代码

开发版/未发布服务配置

ℹ️ 将 替换为本地克隆的项目路径

"mcpServers": {
  "mcp-pandoc": {
    "command": "uv",
    "args": [
      "--directory",
      "<DIRECTORY>/mcp-pandoc",
      "run",
      "mcp-pandoc"
    ]
  }
}

b) 已发布服务配置——使用者应使用此配置

"mcpServers": {
  "mcp-pandoc": {
    "command": "uvx",
    "args": [
      "mcp-pandoc"
    ]
  }
}
  • 如果遇到问题,请直接使用上方的“已发布服务配置”,而不要使用此 cli。

注意:若要使用本地配置的 mcp-pandoc,请按照上方的“开发版/未发布服务配置”步骤操作。

开发

测试

要运行全面的测试套件并验证所有受支持的双向转换,请使用以下命令:

uv run pytest tests/test_conversions.py

这可确保向后兼容性,并验证工具的核心功能。

构建和发布

准备分发软件包:

  1. 同步依赖项并更新锁文件:
uv sync
  1. 构建软件包发行文件:
uv build

这将在 dist/ 目录中创建源代码发行包和 wheel 发行包。

  1. 发布到 PyPI:
uv publish

注意:你需要通过环境变量或命令行标志设置 PyPI 凭据:

  • 令牌:--token 或 UV_PUBLISH_TOKEN
  • 或用户名/密码:--username/UV_PUBLISH_USERNAME 和 --password/UV_PUBLISH_PASSWORD
调试

由于 MCP 服务通过 stdio 运行,调试可能颇具挑战。为了获得最佳调试体验,我们强烈建议使用 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 贡献代码,帮助改进它!以下是参与方式:

  1. 报告问题:发现 Bug 或有功能请求?请在我们的 GitHub Issues 页面提交问题。
  2. 提交拉取请求:创建拉取请求,改进代码库或添加功能。

评论

支持 Markdown

第一次接触 MCP?

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

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