MCP Integration
PaperQuire includes a built-in Model Context Protocol (MCP) server, letting AI agents generate branded, professional PDFs directly. Claude, ChatGPT, Copilot, and any MCP-compatible client can call PaperQuire as a tool.
How It Works
The MCP server runs as a CLI subcommand:
paperquire mcp-server
It communicates via JSON-RPC over stdio, following the MCP specification. The server reuses PaperQuire's Electron-based render pipeline (the same Chromium engine behind the desktop app) to produce identical output.
When an AI agent needs a PDF, the flow is:
- The agent generates Markdown content
- It calls the PaperQuire
rendertool with the Markdown and any options - PaperQuire renders it through a template, produces a PDF, and returns the file path
- The agent can report the result back to the user
Setup
PaperQuire must be installed on your machine. The MCP server is included in the app — no additional installation needed.
Claude Desktop
Add PaperQuire to your Claude Desktop MCP configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"paperquire": {
"command": "/Applications/PaperQuire.app/Contents/Resources/bin/paperquire",
"args": ["mcp-server"]
}
}
}
On Windows, use the full path to the PaperQuire executable instead.
Restart Claude Desktop. You should see "paperquire" listed in the MCP tools panel.
Claude Code
If paperquire is on your PATH (e.g. via Homebrew), add it to your project's .mcp.json:
{
"mcpServers": {
"paperquire": {
"command": "paperquire",
"args": ["mcp-server"]
}
}
}
VS Code (GitHub Copilot)
In your VS Code settings.json or workspace .vscode/mcp.json:
{
"mcp": {
"servers": {
"paperquire": {
"command": "paperquire",
"args": ["mcp-server"]
}
}
}
}
Homebrew Users
If you installed via Homebrew, the paperquire command is already on your PATH:
brew install --cask paperquire/paperquire/paperquire
You can use "command": "paperquire" directly in your MCP config.
Tools
The MCP server exposes four tools:
render
Convert Markdown to PDF (or HTML). Returns the output file path and size.
| Parameter | Type | Required | Description |
|---|---|---|---|
markdown | string | Yes | Markdown content to render |
outputPath | string | No | Output file path (default: ./output.pdf) |
template | string | No | Template ID (default: executive-report) |
title | string | No | Cover page title |
subtitle | string | No | Cover page subtitle |
author | string | No | Document author |
date | string | No | Document date |
company | string | No | Company name |
cover | boolean | No | Include cover page |
toc | boolean | No | Include table of contents |
pageSize | "Letter" | "A4" | No | Paper size |
primaryColor | string | No | Accent color (hex) |
watermark | string | No | Diagonal watermark text |
allowHtml | boolean | No | Allow raw HTML in Markdown |
format | "pdf" | "html" | No | Output format (default: pdf) |
Example response:
{
"path": "/Users/you/projects/output.pdf",
"format": "pdf",
"sizeKb": 59,
"template": "executive-report"
}
list_templates
Returns all available templates with IDs, names, and descriptions. No parameters.
Example response:
[
{ "id": "executive-report", "name": "Executive Report", "description": "Refined serif report..." },
{ "id": "technical-design", "name": "Technical Design Document", "description": "..." },
...
]
show_template
Returns full details of a specific template, including design tokens, cover style, and page configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
templateId | string | Yes | Template ID to look up |
batch_render Pro
Render multiple Markdown documents in a single call. Accepts an array of files (either inline Markdown or file paths) and shared render options.
| Parameter | Type | Required | Description |
|---|---|---|---|
files | array | Yes | Array of { markdown?, path?, outputPath? } |
template | string | No | Template ID for all documents |
title | string | No | Shared cover title |
author | string | No | Shared author |
company | string | No | Shared company name |
cover | boolean | No | Include cover page |
toc | boolean | No | Include table of contents |
pageSize | "Letter" | "A4" | No | Paper size |
primaryColor | string | No | Accent color (hex) |
Resources
paperquire://config
Returns the merged .paperquire.yml configuration for the current working directory. This lets AI agents discover project-level defaults (template, branding, metadata) before rendering.
Example Workflows
Generate a report from a prompt
Ask your AI agent:
"Write a project status report for Q2 2026 and render it as a PDF with the executive-report template."
The agent will generate the Markdown, then call the render tool to produce the PDF.
Discover templates before rendering
"What document templates are available? Show me the details of the technical design template, then render my spec as a PDF using it."
The agent calls list_templates, then show_template to inspect the template, then render with that template ID.
Batch render documentation
"Render all the markdown files in my docs/ folder as branded PDFs."
The agent reads the directory, then calls batch_render with the file paths.
Free Tier Limits
The free tier allows 3 renders per day via MCP (same limit as the CLI and desktop app). Upgrade to Pro for unlimited renders.
Troubleshooting
Server not found
Make sure the command path in your MCP config points to the actual PaperQuire binary. Run it directly to verify:
paperquire version
Server times out on first call
The first tool call takes a few seconds because PaperQuire initializes a Chromium renderer. Subsequent calls reuse the same renderer and are much faster.
Tools not appearing
Restart your MCP client (Claude Desktop, VS Code) after updating the config. Check the client's MCP logs for connection errors.