Pandoc MCP服务器
 ](https://smithery.ai/server/@MaitreyaM/file-converter-mcp)
基于Python的MCP(模型上下文协议)服务器,通过Pandoc提供强大的文档转换功能。该服务器允许AI代理(如Claude通过LangChain/LangGraph)请求各种格式之间的文件转换,如Markdown、DOCX、HTML、PDF、EPUB等。
本项目使用:
- FastMCP: 一个用于轻松创建MCP服务器的Python库。
- 皮潘多克: Pandoc命令行工具周围的Python包装器。
- Pandoc: 通用文档转换器。
- (可选)Docker: 对于容器化部署,绑定所有依赖项(Python、Pandoc、LaTeX)。
特性
- 显示单个MCP工具:
convert_document. - 支持Pandoc处理的各种输入和输出格式。
- 允许指定输入格式(如果自动检测失败)和输出格式。
- 支持向Pandoc传递额外的命令行参数以进行高级控制(例如,目录、PDF边距、独立文件)。
- 包括Docker配置(
Dockerfile)用于创建一个自包含的服务器环境,包括Pandoc和用于PDF生成的必要LaTeX组件。 - 专为与MCP客户端集成而设计,特别是LangChain/LangGraph代理。
暴露的MCP工具
convert_document
使用Pandoc将文档从一种格式转换为另一种格式。
论据:
input_file_path(str, 必需的):路径 *可由服务器访问* 到输入文档文件。如果在Docker中运行卷挂载,这应该是路径 *集装箱内* (例如。,/data/my_doc.docx).output_file_path(str, 必需的):路径 *可由服务器访问* 转换后的输出文件应保存在何处。如果在Docker中运行,这应该是路径 *集装箱内* (例如。,/data/my_output.pdf).如果该目录不存在于服务器的可访问文件系统中,则将创建该目录。to_format(str, 必需的):转换的目标格式(例如,“markdown”、“docx”、“pdf”、“html”、“rst”、“epub”)。看 Pandoc文档 查看完整列表(--list-output-formats).from_format(str, *可选的*):输入文件的格式。如果None,pandoc将尝试从文件扩展名中猜测。指定扩展名是否不明确或缺失(例如,“md”、“docx”、“html”)。默认为None.extra_args(列表\[str\], *可选的*):直接传递给pandoc的附加命令行参数列表(例如。,['--toc'],['-V', 'geometry:margin=1.5cm'],['--standalone']).默认为None.
退货:
- (str):表示成功的消息(例如,“已成功将文档转换为'/data/my_output.pdf'”)或错误消息(例如:“错误:找不到输入文件…”,“转换过程中出错:Pandoc死亡…”)。
设置和运行
您可以在本地运行此服务器(需要手动安装依赖项),也可以使用提供的Docker配置(为便于使用和部署,建议使用)。
通过Smithery安装
通过以下方式自动安装克劳德桌面版Pandoc文档转换器 史密瑟里:
npx -y @smithery/cli install @MaitreyaM/file-converter-mcp --client claude选项1:使用Docker运行(推荐)
此方法将Python、Pandoc、LaTeX和所需库捆绑到一个容器中。 你只需要在本地安装Docker Desktop。
- 安装Docker: 下载并安装 对于您的操作系统。启动Docker桌面。
- 克隆存储库: 获取项目文件:
git clone https://github.com/your-username/pandoc-mcp-server.git # Replace with your repo URL
cd pandoc-mcp-server- 构建Docker镜像: 此命令使用以下命令构建映像
Dockerfile。它在映像中安装Pandoc、一个功能强大的TeX Live发行版(用于PDF支持)和Python依赖项。第一次执行此步骤可能需要几分钟。
docker build -t pandoc-converter-server .- 运行容器: 这将启动容器内的服务器。
- 在主机上选择一个目录 与输入/输出文件的容器共享(例如当前项目目录)。 - 运行容器,将主机目录映射到 /data 在集装箱内部和映射端口8000。 替换 /path/to/your/local/project 使用计算机上项目目录的实际绝对路径。
# Example using the current directory (.) as the host path:
docker run -it --rm -p 8000:8000 -v "$(pwd)":/data pandoc-converter-server
# Or using an absolute path (replace):
# docker run -it --rm -p 8000:8000 -v "/path/to/your/local/project":/data pandoc-converter-server- -it:以交互方式运行(显示日志,允许Ctrl+C)。 - --rm:停止时移除容器。 - -p 8000:8000:将主机上的端口8000映射到容器中的端口8000。 - -v "$(pwd)":/data:将主机上的当前工作目录装载到 /data 在容器内。放置在本地项目目录中的文件将显示在 /data 在容器内,文件保存到 /data 由服务器执行的命令将显示在您的本地项目目录中。 - pandoc-converter-server:您创建的图像的名称。
- 服务器正在运行: 您应该看到指示服务器已启动并正在SSE上侦听的日志(
http://0.0.0.0:8000).它已准备好接受来自MCP客户端(如LangChain代理)的连接。 - 从客户端连接: 配置您的MCP客户端(例如。,
MultiServerMCPClient)要连接到http://127.0.0.1:8000/sse随着transport: "sse". - 使用工具: 与代理/客户端交互时,请使用文件的路径引用文件 *集装箱内*,前缀为
/data/例如:convert /data/my_input.docx to pdf at /data/my_output.pdf。由于卷映射,输出文件将出现在本地项目目录中。
选项2:本地运行(手动依赖安装)
这要求您将Python、Pandoc和LaTeX发行版直接安装到主机上。
- 安装Python: 确保您已安装Python>=3.10。
- 安装Pandoc: 为您的操作系统安装Pandoc命令行工具。请遵循以下说明 pandoc.org/installing.html.通过运行验证
pandoc --version在一个新的终端。 - 安装LaTeX: 要生成PDF,请安装TeX发行版。
- macOS: brew install --cask mactex-no-gui (通过Homebrew推荐) - Debian/Ubuntu: sudo apt-get update && sudo apt-get install texlive-latex-base texlive-fonts-recommended texlive-latex-extra texlive-fonts-extra (或 texlive-full 一切,但大)。 - 窗户: 安装 MiKTeX 或 TeX直播.确保 bin 目录包含 pdflatex.exe 已添加到系统的PATH中。 - 通过运行验证 pdflatex --version 在一个新的终端。
- 克隆存储库:
git clone https://github.com/your-username/pandoc-mcp-server.git # Replace with your repo URL
cd pandoc-mcp-server- 创建虚拟环境(推荐):
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows*(或使用Conda: conda create --name pandoc-env python=3.11 && conda activate pandoc-env)*
- 安装Python依赖项:
pip install -r requirements.txt- 运行服务器:
python pandoc_mcp_server.py- 服务器正在运行: 它会继续听
http://127.0.0.1:8000/sse. - 从客户端连接: 配置您的MCP客户端以连接到
http://127.0.0.1:8000/sse. - 使用工具: 使用本地计算机上的常规路径参考文件(例如。,
convert my_input.docx to pdf at my_output.pdf,假设文件位于同一目录中,或使用绝对路径)。
代理交互示例(在Docker中运行服务器)
假设服务器容器正在运行卷装载:
You: convert /data/report.md to pdf
Agent: Thinking...
[Agent calls convert_document tool with input='/data/report.md', output='/data/report.pdf', to='pdf']
Agent: Successfully converted document to '/data/report.pdf'
[The bot may then attempt to upload report.pdf from the local project directory]文件
pandoc_mcp_server.py:MCP服务器的主要Python脚本。Dockerfile:构建Docker容器镜像的说明。requirements.txt:Docker容器(或本地venv)内需要Python依赖项。.gitignore:指定Git有意不跟踪的文件。README.md:这个文件。
贡献
欢迎投稿!请随时提交拉取请求或打开问题。

