pdf-reporter-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pdf-reporter-mcpGenerate a PDF report with a diagram and callout blocks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PDF Reporter MCP
Multi-purpose MCP server for generating SVG diagrams and PDF documents. Render Mermaid diagrams to SVG, compose Markdown content with callout blocks, and produce styled PDF reports — all through standard MCP tools.
Features
Mermaid to SVG — Render Mermaid diagrams to clean SVG via dedicated MCP tool
Markdown to PDF — Convert Markdown content with custom callout blocks to styled PDF documents
Callout Blocks — 9 callout types (idea, automation, warning, success, info, critical, business, expert, tip) using
:::type TitlesyntaxPastel Theme — Professional styling with configurable pastel color palette
Harmonious Diagrams — Pastel fills with tonal text and borders for visual consistency
MCP Protocol — Standard MCP server with stdio and SSE transports
Related MCP server: claude-mermaid
Quick Start
Installation
git clone https://github.com/alexmakeev/pdf-reporter-mcp.git
cd pdf-reporter-mcp
npm installUsage
# Development
npm run dev
# Production
npm run build && npm start
# Docker (pre-built image)
docker run --rm -p 3000:3000 -e TRANSPORT=sse ghcr.io/alexmakeev/pdf-reporter-mcp:latest
# Docker (build locally)
docker compose upMCP Client Configuration
{
"mcpServers": {
"pdf-reporter": {
"command": "node",
"args": ["/path/to/pdf-reporter-mcp/dist/server.js"]
}
}
}Docker
Pre-built Docker images are published to GitHub Container Registry on every push to main.
Pull and Run
docker pull ghcr.io/alexmakeev/pdf-reporter-mcp:latest
docker run --rm -p 3000:3000 -e TRANSPORT=sse ghcr.io/alexmakeev/pdf-reporter-mcp:latestMCP Client Configuration (Docker)
{
"mcpServers": {
"pdf-reporter": {
"url": "http://localhost:3000/sse"
}
}
}Available Tags
Tag | Description |
| Latest build from |
| Same as |
| Specific release version |
| Specific commit build |
Custom Configuration
docker run --rm \
-p 3000:3000 \
-e TRANSPORT=sse \
-e THEME_PRIMARY_COLOR="#E81E63" \
-v $(pwd)/output:/app/output \
ghcr.io/alexmakeev/pdf-reporter-mcp:latestMCP Tools
1. render_diagram
Render a single Mermaid diagram to SVG.
Input Parameters:
mermaid(required, string) — Mermaid diagram definition
Output:
{
"svg": "<svg>...</svg>"
}2. render_content
Render Markdown content with callouts and diagram placeholders to HTML.
Input Parameters:
content(required, string) — Markdown content with optional callout syntaxdiagrams(optional, object) — Pre-rendered SVG diagrams:{ [name]: string }
Output:
{
"html": "<article>...</article>"
}3. generate_pdf
Generate a PDF document from HTML content.
Input Parameters:
title(required, string) — Document title for cover pagehtml(required, string) — Rendered HTML contentsubtitle(optional, string) — Document subtitlelogo(optional, string) — Logo as data URI or file pathtemplate(optional, string, default:generic) — Template nameoptions(optional, object) — PDF generation options:pageSize(string, default:A4) — Page size (e.g.A4,Letter)toc(boolean, default:false) — Generate table of contentsheaderTemplate(string or false) — Custom header template HTMLfooterTemplate(string or false) — Custom footer template HTMLmargins(object) — Page margins withtop,bottom,left,right(e.g.17mm)
Output:
{
"path": "/tmp/pdf-reporter-output/document-title.pdf",
"size": "2.4 MB",
"pages": 15
}4. list_templates
List available report templates.
Output:
{
"templates": [
{
"name": "generic",
"description": "Universal report template with cover page, optional TOC, and markdown content"
}
]
}5. get_template_schema
Get the input schema for a specific template.
Input:
template(required, string) — Template name
Output:
{
"required": ["title", "html"],
"optional": ["subtitle", "logo", "options"]
}Workflow
The typical workflow is three steps:
1. render_diagram → Mermaid source → SVG string
2. render_content → Markdown + SVGs → HTML
3. generate_pdf → HTML + metadata → PDF fileCallout Syntax
:::info Important Note
This is an informational callout block.
Supports **markdown** inside.
:::
:::warning Caution
Be careful with this operation.
:::
:::success Achievement Unlocked
All systems operational.
:::Supported Callout Types
Type | Emoji | Use Case |
| ℹ️ | General information |
| 💡 | New ideas and suggestions |
| 🤖 | Automation features |
| ⚠️ | Warnings and cautions |
| ✅ | Successful outcomes |
| 🔴 | Critical alerts |
| 💰 | Business insights |
| 🔍 | Expert recommendations |
| 💎 | Tips and best practices |
Example
See the demo report for a complete example featuring all capabilities.
Generated with examples/generate-demo.ts.
Theme Configuration
Variable | Default | Description |
|
| Primary accent color (Royal Blue) |
| same as primary | Cover page accent color |
The server auto-generates a pastel palette from the primary color for backgrounds, table headers, and cover elements. All text remains dark for readability.
Example:
export THEME_PRIMARY_COLOR="#E81E63"
export THEME_COVER_COLOR="#880E4F"
npm run devArchitecture
MCP Input
→ Mermaid Renderer (mmdc CLI → SVG)
→ Callout Parser (:::syntax → HTML)
→ Markdown Renderer (marked + highlight.js)
→ Template Engine (Handlebars)
→ PDF Generator (Puppeteer)Development
npm run dev # Start dev server
npm test # Run 164 tests
npm run test:watch # Watch mode
npm run test:mutation # Mutation testing (Stryker)
npm run build # TypeScript compilationSee docs/dev.md for the full developer guide.
Deployment
See docs/prod.md for Docker and Dokploy deployment instructions.
Testing
164 unit tests across 8 test suites (vitest)
94.21% mutation score via Stryker (minimum 89% per module)
All tests run offline with mocked dependencies
Tech Stack
Component | Technology |
Runtime | Node.js 20+, TypeScript (strict) |
Puppeteer (headless Chrome) | |
Diagrams | @mermaid-js/mermaid-cli |
Templates | Handlebars |
Markdown | marked + highlight.js |
MCP | @modelcontextprotocol/sdk |
Tests | vitest + Stryker |
License
MIT © Alexander Makeev
This server cannot be deployed
Maintenance
Related MCP Connectors
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
HTML-to-PDF MCP server — render pixel-faithful PDFs from HTML.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
MCP server for Api2Pdf — generate PDFs & images from HTML, URLs or office files; merge, barcodes.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.1234 npm234MIT
- AlicenseAqualityAmaintenanceMCP Server to previewing mermaid diagrams. https://github.com/veelenga/claude-mermaid/2355 npm205MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for rendering Mermaid diagrams and generating source-code diagrams, with tools to render text/files and produce dependency/class diagrams.47 npmMIT
- MIT