pandoc-mcp-server
pandoc-mcp-server
An MCP server that exposes pandoc document conversion as tools, deployable to Render.
Tools
Tool | Description |
| Convert a document between formats using pandoc. Supports text and binary (base64) input/output. |
| List the input and output formats supported by the installed pandoc. |
| Return the installed pandoc version. |
convert parameters
Parameter | Type | Description |
| string | Source document content (text, or base64 when |
| string | Pandoc source format (e.g. |
| string | Pandoc target format (e.g. |
| bool | Emit a complete standalone document ( |
| string[] | Extra pandoc options (e.g. |
| bool | Treat |
| bool | Return output base64-encoded (binary outputs). Falls back to base64 automatically if the result is not valid UTF-8. |
Note on PDF:
Run locally
pip install -r requirements.txt
python server.pyThe server listens on http://localhost:8000 (or $PORT if set):
MCP endpoint:
http://localhost:8000/mcpHealth check:
http://localhost:8000/health
Deploy to Render
Push this repo to GitHub/GitLab/Bitbucket.
In the Render dashboard, choose New > Blueprint and select your repo. Render detects
render.yamland creates a Docker web service.After the first deploy, your server is live at
https://<service-name>.onrender.com/mcp.
Connect from an MCP client (Devin CLI)
devin mcp add pandoc https://<service-name>.onrender.com/mcpConfiguration
Env var | Default | Description |
|
| Port the server binds to (set automatically by Render). |
|
| Path to the pandoc executable. |
|
| Per-conversion timeout in seconds. |
| unset | Comma-separated allowed Host header values. When unset, DNS-rebinding protection is disabled (safe behind Render's reverse proxy). Set this to your custom domain for production, e.g. |
| unset | Comma-separated allowed Origin header values for browser clients. |