Markdown转PDF服务

一个将包含Mermaid图表的Markdown文件转换为PDF文档的服务,同时支持将独立的Mermaid图表转换为PNG或PDF格式。

  • by aoprisan
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 aoprisan/mcp-md-mmd-pdf

使用说明

Markdown+Mermaid到PDF MCP服务器

MCP(模型上下文协议)服务器,可将包含Mermaid图的Markdown文件转换为PDF文档,也可将独立的Mermaid图表转换为PNG或PDF。服务器使用混合方法:将Markdown转换为HTML,将Mermaid图渲染为SVG图形,然后使用Puppeteer生成输出。

特性

  • 将带有美人鱼图的Markdown文件转换为PDF
  • 将独立的Mermaid图代码转换为PNG图像
  • 将独立的Mermaid图代码转换为PDF文件
  • 自动将Mermaid图渲染为高质量的SVG图形
  • 干净、专业的默认样式
  • 支持自定义CSS样式(用于Markdown转换)
  • 简单的MCP工具界面

安装

npm install
npm run build

用法

作为MCP服务器

将此服务器添加到您的MCP客户端配置中(例如,Claude Desktop):

{
  "mcpServers": {
    "md-mmd-pdf": {
      "command": "node",
      "args": ["/absolute/path/to/md-mmd-pdf/build/index.js"]
    }
  }
}

工具: convert_md_to_pdf

将带有Mermaid图的Markdown文件转换为PDF。

参数:

  • input_path (必填):输入Markdown文件的绝对路径
  • output_path (可选):保存PDF的绝对路径。如果未提供,则使用与输入相同的名称 .pdf 扩展
  • custom_css (可选):应用于PDF的其他CSS样式

例子:

{
  "input_path": "/path/to/document.md",
  "output_path": "/path/to/output.pdf"
}

工具: convert_mermaid_to_png

将独立的Mermaid图代码转换为PNG图像文件。

参数:

  • mermaid_code (必填):原始美人鱼图代码为字符串
  • output_path (必填):PNG文件应保存的绝对路径

例子:

{
  "mermaid_code": "graph TD\n  A[Start] --> B[Process]\n  B --> C[End]",
  "output_path": "/path/to/diagram.png"
}

工具: convert_mermaid_to_pdf

将独立的Mermaid图代码转换为PDF文件。

参数:

  • mermaid_code (必填):原始美人鱼图代码为字符串
  • output_path (必填):PDF文件应保存的绝对路径

例子:

{
  "mermaid_code": "sequenceDiagram\n  Alice->>Bob: Hello\n  Bob->>Alice: Hi!",
  "output_path": "/path/to/diagram.pdf"
}

运作原理

  1. Markdown解析:使用 marked 图书馆
  2. HTML生成:将Markdown转换为HTML,同时保留Mermaid代码块
  3. 美人鱼渲染:注入Mermaid.js库,在浏览器中将图表渲染为SVG
  4. PDF导出:使用Puppeteer(无头Chrome)生成最终的PDF,并渲染所有内容

Markdown示例

看 example.md 查看带有Mermaid图的示例文档。

发展

# Install dependencies
npm install

# Build
npm run build

# Watch mode for development
npm run dev

# Run the server
npm start

需求

  • Node.js 18或更高版本
  • 足够的内存让Puppeteer运行无头Chrome

许可证

麻省理工学院