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
79.8K downloads
406 stars

mcp-pandoc is a document conversion server implementing the Model Context Protocol (MCP) that leverages Pandoc to transform content between various document formats while maintaining formatting and structure. It allows AI assistants like Claude to handle document conversions directly within conversations.

Installation Requirements

Core Dependencies

Before using mcp-pandoc, ensure you have these essential components installed:

# 1. Install Pandoc (core conversion engine)
# macOS
brew install pandoc

# Ubuntu/Debian
sudo apt-get install pandoc

# Windows
# Download installer from: https://pandoc.org/installing.html
# 2. Install UV package (includes uvx command)
# macOS
brew install uv

# Windows/Linux
pip install uv
# 3. Install TeX Live (required only for 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/

Setting Up Claude Desktop Configuration

Configure Claude Desktop to use mcp-pandoc:

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

Add this configuration:

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

Supported Formats

mcp-pandoc supports bidirectional conversion between these formats:

Category Formats Requirements
Basic MD, HTML, TXT, IPYNB, ODT None
Advanced DOCX, PDF, RST, LaTeX, EPUB Must specify output_file path

Note: PDF is an output-only format. Converting from PDF to other formats is not supported.

Using mcp-pandoc

Basic Content Conversion

To convert content directly in the conversation:

Convert this text to HTML:

# Sample Heading
This is a test paragraph with **bold** and *italic* formatting.
- List item 1
- List item 2

File Conversion

For converting between file formats:

Convert /path/to/input.md to PDF and save as /path/to/output.pdf

Using Reference Documents for Styling

For DOCX output with custom styling:

Convert input.md to DOCX using template.docx as reference and save as output.docx

To create a reference document:

pandoc -o custom-reference.docx --print-default-data-file reference.docx

Advanced Configuration with Defaults Files

Create YAML configuration files for consistent formatting:

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

Use with:

Convert paper.md to PDF using defaults academic-paper.yaml and save as paper.pdf

Important Usage Notes

  1. Complete File Paths: Always provide full paths with filename and extension for file operations
  2. PDF Requirements: TeX Live must be installed for PDF conversion
  3. Reference Documents: Only work with DOCX output format
  4. Output File Requirement: Advanced formats (PDF, DOCX, RST, LaTeX, EPUB) require specifying an output file path

Troubleshooting

Common Issues

  1. PDF Conversion Fails

    • Error: "xelatex not found"
    • Solution: Install TeX Live
  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
  4. Reference Document Issues

    • Error: "Reference document not found"
    • Solution: Ensure the reference document path exists and is accessible

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