PDF报告生成工具

一个多功能的MCP服务器,用于生成SVG图表和PDF文档,支持Mermaid图表渲染和Markdown内容转换。

  • by alexmakeev
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alexmakeev/pdf-reporter-mcp

使用说明

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 up

MCP客户端配置

{
  "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:latest

MCP客户端配置(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": "<svg>...</svg>"
}

2.渲染内容

将带有标注和图表占位符的Markdown内容渲染为HTML。

输入参数:

  • content (必填,字符串)——带可选标注语法的Markdown内容
  • diagrams (可选,对象)--预渲染的SVG图: { [name]: string }

输出:

{
  "html": "<article>...</article>"
}

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(严格)
PDF 木偶(无头Chrome)
图表 @mermaid js/mermaid cli
模板 把手
Markdown 标记+高亮.js
MCP @modelcontextprotocol/sdk
测试 vitest+史赛克

许可证

麻省理工学院 ©亚历山大Makeev