 ](https://github.com/alexmakeev/pdf-reporter-mcp/actions/workflows/docker.yml)     ](https://nodejs.org/)
PDF报告器MCP
多用途MCP服务器,用于生成SVG图表和PDF文档。将Mermaid图渲染为SVG,用标注块组合Markdown内容,并生成样式化的PDF报告——所有这些都是通过标准的MCP工具完成的。
特性
- 美人鱼到SVG --通过专用的MCP工具将Mermaid图渲染为干净的SVG
- Markdown转PDF --将带有自定义标注块的Markdown内容转换为带样式的PDF文档
- 标注块 --9种调用类型(想法、自动化、警告、成功、信息、关键、业务、专家、提示)
:::type Title语法 - 柔和主题 --专业风格,可配置柔和调色板
- 和谐图 --粉彩填充色调文本和边框,以实现视觉一致性
- MCP协议 --带stdio和SSE传输的标准MCP服务器
快速开始
安装
git 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 upMCP客户端配置
{
"mcpServers": {
"pdf-reporter": {
"command": "node",
"args": ["/path/to/pdf-reporter-mcp/dist/server.js"]
}
}
}码头工人
每次推送时,预构建的Docker镜像都会发布到GitHub容器注册表 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:latestMCP客户端配置(Docker)
{
"mcpServers": {
"pdf-reporter": {
"url": "http://localhost:3000/sse"
}
}
}可用标签
| 标签 | 描述 |
|---|---|
latest | 最新构建自 main 分支机构 |
main | 与 latest |
v1.0.0 | 具体发布版本 |
sha-abc1234 | 特定提交构建 |
自定义配置
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:latest______________________________________________________________________
MCP工具
1.渲染图
将单个Mermaid图渲染为SVG。
输入参数:
mermaid(必填,字符串)--美人鱼图定义
输出:
{
"svg": "..."
}2.渲染内容
将带有标注和图表占位符的Markdown内容渲染为HTML。
输入参数:
content(必填,字符串)——带可选标注语法的Markdown内容diagrams(可选,对象)--预渲染的SVG图:{ [name]: string }
输出:
{
"html": "
...
"
}3.generate.pdf
从HTML内容生成PDF文档。
输入参数:
title(必填,字符串)--封面的文档标题html(必填,字符串)--渲染的HTML内容subtitle(可选,字符串)--文档副标题logo(可选,字符串)--徽标作为数据URI或文件路径template(可选,字符串,默认值:generic)--模板名称options(可选,对象)--PDF生成选项:
- pageSize (字符串,默认值: A4)--页面大小(例如。 A4, Letter) - toc (布尔值,默认值: false)--生成目录 - headerTemplate (string或false)--自定义标头模板HTML - footerTemplate (string或false)--自定义页脚模板HTML - margins (object)--页边距 top, bottom, left, right (例如。 17mm)
输出:
{
"path": "/tmp/pdf-reporter-output/document-title.pdf",
"size": "2.4 MB",
"pages": 15
}4.列表模板
列出可用的报告模板。
输出:
{
"templates": [
{
"name": "generic",
"description": "Universal report template with cover page, optional TOC, and markdown content"
}
]
}5.get_template_schema
获取特定模板的输入模式。
输入:
template(必填,字符串)--模板名称
输出:
{
"required": ["title", "html"],
"optional": ["subtitle", "logo", "options"]
}工作流程
典型的工作流程分为三个步骤:
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.
:::支持的标注类型
| 类型 | 表情符号 | 用例 |
|---|---|---|
info | ℹ️ | 一般信息 |
idea | 💡 | 新想法和建议 |
automation | 🤖 | 自动化功能 |
warning | ⚠️ | 警告和注意事项 |
success | ✅ | 成功的结果 |
critical | 🔴 | 严重警报 |
business | 💰 | 商业洞察 |
expert | 🔍 | 专家建议 |
tip | 💎 | 提示和最佳实践 |
示例
看 演示报告 以获取具有所有功能的完整示例。
生成于 示例/生成demo.ts.
主题配置
| 变量 | 默认值 | 描述 |
|---|---|---|
THEME_PRIMARY_COLOR | #4169E1 | 主色调(皇家蓝) |
THEME_COVER_COLOR | 与主 | 封面强调色相同 |
服务器自动从背景、表头和封面元素的原色生成柔和的调色板。为了可读性,所有文本都保持深色。
例子:
export THEME_PRIMARY_COLOR="#E81E63"
export THEME_COVER_COLOR="#880E4F"
npm run dev建筑
MCP 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 compilation看 docs/dev.md 查看完整的开发人员指南。
部署
看 docs/prod.md 了解Docker和Dokploy部署说明。
测试
- 164个单元测试 跨越8个测试套件(vitest)
- 94.21%突变评分 通过史赛克(每个模块最低89%)
- 所有测试都在离线状态下运行,并模拟依赖关系
技术栈
| 组件 | 技术 |
|---|---|
| 运行时 | Node.js 20+,TypeScript(严格) |
| 木偶(无头Chrome) | |
| 图表 | @mermaid js/mermaid cli |
| 模板 | 把手 |
| Markdown | 标记+高亮.js |
| MCP | @modelcontextprotocol/sdk |
| 测试 | vitest+史赛克 |
许可证
麻省理工学院 ©亚历山大Makeev
