文档转换服务

一个基于Python的MCP服务器,通过Pandoc提供强大的文档转换功能,支持多种格式如Markdown、DOCX、HTML、PDF、EPUB等。

  • by MaitreyaM
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 MaitreyaM/FILE-CONVERTER-MCP

使用说明

Pandoc 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。

  1. 安装Docker: 下载并安装 Docker桌面 对于您的操作系统。启动Docker桌面。
  2. 克隆存储库: 获取项目文件:
    git clone https://github.com/your-username/pandoc-mcp-server.git # Replace with your repo URL
    cd pandoc-mcp-server
    
  3. 构建Docker镜像: 此命令使用以下命令构建映像 Dockerfile。它在映像中安装Pandoc、一个功能强大的TeX Live发行版(用于PDF支持)和Python依赖项。第一次执行此步骤可能需要几分钟。
    docker build -t pandoc-converter-server .
    
  4. 运行容器: 这将启动容器内的服务器。
    • 在主机上选择一个目录 与输入/输出文件的容器共享(例如当前项目目录)。
    • 运行容器,将主机目录映射到 /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:您创建的图像的名称。
  5. 服务器正在运行: 您应该看到指示服务器已启动并正在SSE上侦听的日志(http://0.0.0.0:8000).它已准备好接受来自MCP客户端(如LangChain代理)的连接。
  6. 从客户端连接: 配置您的MCP客户端(例如。, MultiServerMCPClient)要连接到 http://127.0.0.1:8000/sse 随着 transport: "sse".
  7. 使用工具: 与代理/客户端交互时,请使用文件的路径引用文件 集装箱内,前缀为 /data/例如: convert /data/my_input.docx to pdf at /data/my_output.pdf。由于卷映射,输出文件将出现在本地项目目录中。

选项2:本地运行(手动依赖安装)

这要求您将Python、Pandoc和LaTeX发行版直接安装到主机上。

  1. 安装Python: 确保您已安装Python>=3.10。
  2. 安装Pandoc: 为您的操作系统安装Pandoc命令行工具。请遵循以下说明 pandoc.org/installing.html.通过运行验证 pandoc --version 在一个新的终端。
  3. 安装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 在一个新的终端。
  4. 克隆存储库:
    git clone https://github.com/your-username/pandoc-mcp-server.git # Replace with your repo URL
    cd pandoc-mcp-server
    
  5. 创建虚拟环境(推荐):
    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)
  6. 安装Python依赖项:
    pip install -r requirements.txt
    
  7. 运行服务器:
    python pandoc_mcp_server.py
    
  8. 服务器正在运行: 它会继续听 http://127.0.0.1:8000/sse.
  9. 从客户端连接: 配置您的MCP客户端以连接到 http://127.0.0.1:8000/sse.
  10. 使用工具: 使用本地计算机上的常规路径参考文件(例如。, 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:这个文件。

贡献

欢迎投稿!请随时提交拉取请求或打开问题。