Pdf Reporter Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Pdf Reporter Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
:::type Title syntaxgit clone https://github.com/alexmakeev/pdf-reporter-mcp.git
cd pdf-reporter-mcp
npm install# 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 up{
"mcpServers": {
"pdf-reporter": {
"command": "node",
"args": ["/path/to/pdf-reporter-mcp/dist/server.js"]
}
}
}Pre-built Docker images are published to GitHub Container Registry on every push to main.
docker pull ghcr.io/alexmakeev/pdf-reporter-mcp:latest
docker run --rm -p 3000:3000 -e TRANSPORT=sse ghcr.io/alexmakeev/pdf-reporter-mcp:latest{
"mcpServers": {
"pdf-reporter": {
"url": "http://localhost:3000/sse"
}
}
}| Tag | Description |
|---|---|
latest | Latest build from main branch |
main | Same as latest |
v1.0.0 | Specific release version |
sha-abc1234 | Specific commit build |
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:latestRender a single Mermaid diagram to SVG.
Input Parameters:
mermaid (required, string) — Mermaid diagram definitionOutput:
{
"svg": "<svg>...</svg>"
}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>"
}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 with top, bottom, left, right (e.g. 17mm)Output:
{
"path": "/tmp/pdf-reporter-output/document-title.pdf",
"size": "2.4 MB",
"pages": 15
}List available report templates.
Output:
{
"templates": [
{
"name": "generic",
"description": "Universal report template with cover page, optional TOC, and markdown content"
}
]
}Get the input schema for a specific template.
Input:
template (required, string) — Template nameOutput:
{
"required": ["title", "html"],
"optional": ["subtitle", "logo", "options"]
}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 file:::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.
:::| Type | Emoji | Use Case |
|---|---|---|
info | ℹ️ | General information |
idea | 💡 | New ideas and suggestions |
automation | 🤖 | Automation features |
warning | ⚠️ | Warnings and cautions |
success | ✅ | Successful outcomes |
critical | 🔴 | Critical alerts |
business | 💰 | Business insights |
expert | 🔍 | Expert recommendations |
tip | 💎 | Tips and best practices |
See the demo report for a complete example featuring all capabilities.
Generated with examples/generate-demo.ts.
| Variable | Default | Description |
|---|---|---|
THEME_PRIMARY_COLOR | #4169E1 | Primary accent color (Royal Blue) |
THEME_COVER_COLOR | 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 devMCP Input
→ Mermaid Renderer (mmdc CLI → SVG)
→ Callout Parser (:::syntax → HTML)
→ Markdown Renderer (marked + highlight.js)
→ Template Engine (Handlebars)
→ PDF Generator (Puppeteer)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.
See docs/prod.md for Docker and Dokploy deployment instructions.
| 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 |
MIT © Alexander Makeev
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.