File Format Converter (Pandoc) MCP server

Document format conversion using Pandoc, enabling transformation of content between PDF, HTML, Markdown, .docx, .rst, .epuc, .latex, and more.
Back to servers
Setup instructions
Provider
Vivek Vells
Release date
Dec 08, 2024
Language
Python
Package
Stats
15.1K downloads
285 stars

The mcp-pandoc server provides document format conversion capabilities through the Model Context Protocol, allowing you to transform content between various file formats while preserving formatting and structure.

Installation Requirements

Core Dependencies

Before using mcp-pandoc, you need to install these critical components:

  1. Pandoc - The core document conversion engine:

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

    Verify installation with: pandoc --version

  2. UV Package - Required for the uvx command:

    # macOS
    brew install uv
    
    # Windows/Linux
    pip install uv
    

    Verify installation with: uvx --version

  3. TeX Live - Required only if you need PDF conversion:

    # 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/
    

Configuration

Setting Up Claude Desktop

Configure your Claude Desktop to use mcp-pandoc by editing the configuration file:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json

Add this configuration:

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

Automated Installation

Alternatively, install via Smithery:

npx -y @smithery/cli install mcp-pandoc --client claude

Usage Guide

Supported Formats

mcp-pandoc supports bidirectional conversion between these formats:

  • Markdown (md)
  • HTML
  • Plain Text (txt)
  • Word (docx)
  • PDF (output only)
  • reStructuredText (rst)
  • LaTeX
  • EPUB
  • Jupyter Notebook (ipynb)
  • OpenDocument Text (odt)

Basic Conversion Examples

Converting Content Between Formats

Convert this markdown text to HTML:

# My Document
This is a **bold** statement with *italic* emphasis.

Converting Files

Convert /path/to/input.md to HTML and save as /path/to/output.html

Using Reference Documents for Styling

Convert this text to DOCX using /path/to/custom-reference.docx as reference and save as /path/to/styled-output.docx

Important Usage Notes

  1. File Path Requirements:

    • Always provide complete file paths including filename and extension
    • Example: /path/to/document.pdf (not just /path/to/)
  2. Format Categories:

    • Basic formats (md, html, txt, ipynb, odt): No special requirements
    • Advanced formats (docx, pdf, rst, latex, epub): Must specify output file path
  3. PDF Conversion:

    • PDF is an output-only format (cannot convert from PDF)
    • Requires TeX Live installation
    • Always requires an output file path

Troubleshooting

Common Issues

  1. PDF Conversion Fails

    • Error: "xelatex not found"
    • Solution: Install TeX Live first
  2. File Conversion Fails

    • Error: "Invalid file path"
    • Solution: Provide complete path including filename and extension
  3. Format Conversion Fails

    • Error: "Unsupported format"
    • Solution: Use only supported formats from the list above
  4. Reference Document Issues

    • Error: "Reference document not found"
    • Solution: Ensure the reference document path exists and is accessible
    • Note: Reference documents only work with DOCX output format
    • Create a reference: pandoc -o reference.docx --print-default-data-file reference.docx

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "mcp-pandoc" '{"command":"uvx","args":["mcp-pandoc"]}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

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

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

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

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later