pdf-reporter-mcp
Click on "Install 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/alexmakeev/pdf-reporter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server