Markdown转PDF服务

一个基于Node.js和Playwright的MCP服务器,能够将Markdown文件或内容转换为格式精美的PDF文档,适用于AI助手如Claude的集成使用。

  • by warrenandre
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 warrenandre/MCP_MD_TO_PDF

使用说明

Markdown转PDF MCP服务器

A. 模型上下文协议(MCP)服务器 这使得像克劳德这样的人工智能助手能够将Markdown文件和内容转换为格式精美的PDF文档。使用Node.js和Playwright构建,用于基于浏览器的高质量PDF生成。

这是什么?

此MCP服务器为Claude Desktop和其他兼容MCP的AI助手添加了PDF转换功能。只需让Claude“将我的markdown文件转换为PDF”,它就会使用此服务器处理转换。

特性

  • 🎨 美丽的默认值:GitHub风格的markdown开箱即用渲染
  • 🎯 自定义样式:完全控制自定义CSS
  • 📄 多种格式:支持A4、Letter、Legal等格式
  • 🔄 灵活输入:从文件转换或直接标记内容
  • 🖨️ 打印选项:横向/纵向、边距、背景图形
  • ⚡ 快:由剧作家的Chromium引擎提供动力

安装

您可以通过两种方式使用此MCP服务器:

选项1:直接从GitHub使用(推荐)

无需克隆! 使用 npx 直接从GitHub存储库运行。

配置

编辑您的Claude Desktop配置文件:

视窗: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "pdf-generator": {
      "command": "npx",
      "args": ["-y", "github:warrenandre/MCP_MD_TO_PDF"]
    }
  }
}

就是这样! 你第一次使用它时, npx 将自动下载并设置服务器。未来的使用会更快,因为它会缓存安装。

优点:

  • 无需本地安装
  • 始终使用GitHub上的最新版本
  • 最小设置
  • 适用于任何使用Node.js的机器

选项2:本地运行(用于开发/定制)

如果要修改服务器或在本地运行它:

步骤1:克隆存储库

git clone https://github.com/warrenandre/MCP_MD_TO_PDF.git
cd MCP_MD_TO_PDF

步骤2:安装依赖项

npm install

步骤3:安装Playwright

剧作家需要下载Chromium(仅限第一次):

npx playwright install chromium

步骤4:配置Claude桌面

编辑您的Claude Desktop配置文件:

视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "MD_TO_PDF": {
      "command": "node",
      "args": ["C:\\path\\to\\MCP_MD_TO_PDF\\index.js"]
    }
  }
}

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "MD_TO_PDF": {
      "command": "node",
      "args": ["/path/to/MCP_MD_TO_PDF/index.js"]
    }
  }
}

重要提示: 将路径替换为您的实际绝对路径 index.js 文件。


最后一步(两种选择)

重新启动克劳德桌面 以使配置生效。

测试一下: 打开克劳德并尝试:

Convert sample.md to output.pdf

如何使用

配置后,只需让Claude使用自然语言将markdown转换为PDF:

基本转换

Convert document.md to document.pdf

自定义页面格式

Convert report.md to report.pdf using Letter format in landscape mode

使用自定义CSS

Convert notes.md to styled-notes.pdf with custom CSS:
body { font-family: Georgia, serif; font-size: 14pt; }
h1 { color: #2c3e50; }

直接内容转换

Create a PDF from this markdown content: 
# Meeting Notes
- Item 1
- Item 2

Save as meeting.pdf

获取默认样式

Show me the default CSS for PDF generation

MCP工具参考

此服务器提供了Claude可以使用的三个工具:

1. convert_markdown_to_pdf

将Markdown文件转换为PDF。

参数:

  • markdownPath (必需):输入.md文件的路径
  • outputPath (必填):保存PDF的路径
  • customCss (可选):自定义CSS样式
  • format (可选):纸张格式-“A4”、“Letter”、“Legal”、“A3”、“A5”、“Tabloid”(默认:“A4”)
  • landscape (可选):使用横向(默认值:false)
  • printBackground (可选):打印背景图形(默认值:true)

请求示例:

Convert README.md to documentation.pdf

2. convert_markdown_content_to_pdf

无需读取文件,即可将markdown内容直接转换为PDF。

参数:

  • markdownContent (必填):要转换的Markdown文本
  • outputPath (必填):保存PDF的路径
  • customCss (可选):自定义CSS样式
  • format (可选):纸张格式(默认:“A4”)
  • landscape (可选):使用横向(默认值:false)
  • printBackground (可选):打印背景图形(默认值:true)

请求示例:

Convert this markdown to PDF: # Hello World\n\nThis is a **test**.
Save it as output.pdf

3. get_default_css

获取用于样式设置的默认CSS模板。

使用此功能:

  • 查看默认样式
  • 用作定制的起点
  • 了解可用的CSS类

请求示例:

Show me the default CSS for PDF generation

默认CSS样式

默认情况下,服务器包含GitHub风格的markdown CSS:

  • 使用系统字体进行干净的排版
  • 代码块的语法高亮显示
  • 样式表、区块行情和列表
  • 响应式图像
  • 带边框的专业标题

使用 get_default_css 工具查看完整的默认样式表。

PDF选项

纸张格式

  • A4:210毫米×297毫米(默认)
  • 信:8.5英寸×11英寸
  • 法律:8.5英寸×14英寸
  • A3号纸:297毫米×420毫米
  • A5型:148毫米×210毫米
  • 小报:11英寸×17英寸

边距

默认边距:四周1cm

自定义边距 customCss:

@page {
  margin: 2cm 1.5cm;
}

故障排除

服务器未在Claude中显示

对于GitHub安装(选项1):

  1. 确保已安装Node.js(node --version)
  2. 检查配置文件语法是否正确(有效的JSON)
  3. 完全重新启动克劳德桌面
  4. 检查克劳德日志是否有错误(见下面的位置)

对于本地安装(选项2):

  1. 验证配置中的路径是否正确且绝对
  2. 确保 index.js 存在于该位置
  3. 完全重新启动克劳德桌面
  4. 检查Claude日志中的启动错误

克劳德日志位置:

  • 视窗: %APPDATA%\Claude\logs\
  • macOS: ~/Library/Logs/Claude/

剧作家未安装

错误:“可执行文件不存在于…”

解决方案:

npx playwright install chromium

这通常只影响本地安装(选项2),因为GitHub安装会自动处理依赖关系。

找不到文件错误

错误:“ENOENT:没有这样的文件或目录”

解决:

  • 使用绝对路径(例如。, C:\Users\...\file.md)
  • 确保文件存在并具有读取权限
  • 检查文件扩展名是否为 .md

PDF看起来与预期不同

解决:

  • 让Claude显示默认CSS: Show me the default CSS
  • 使用自定义CSS进行测试以覆盖默认值
  • 启用 printBackground: true 用于颜色和背景
  • 尝试不同的纸张格式(信纸、A4等)

权限不足

错误:“EACCES:权限被拒绝”

解决:

  • 确保输出目录存在并且可写
  • 检查输出路径上的文件权限
  • 尝试保存到其他位置(例如,桌面)

技术细节

建筑

这是一个 模型上下文协议(MCP)服务器 即:

  1. 注册AI助手可以发现和使用的工具
  2. 通过标准输入/输出进行通信
  3. 接收JSON格式的工具调用请求
  4. 执行请求的PDF转换
  5. 将结果返回给AI助手

技术栈

  • Node.js (ES模块)-运行时环境
  • @模型上下文协议/sdk -MCP协议实现
  • 剧作家 (Chromium)-用于PDF生成的无头浏览器
  • 标记 -Markdown到HTML解析器

转换过程

  1. 解析:Markdown→ HTML(通过标记库)
  2. 风格:应用CSS(默认或自定义)
  3. 渲染:在无头Chromium中加载HTML(通过Playwright)
  4. 生成:使用指定选项将渲染页面导出为PDF

为什么是剧作家?

剧作家提供:

  • 真正的浏览器渲染(与Chrome相同)
  • 完整的CSS支持,包括打印媒体查询
  • 高质量PDF生成
  • 支持复杂的布局、字体和图形

了解有关MCP的更多信息: 模型上下文协议.io

发展

在本地运行以进行测试

如果您已经克隆了存储库(选项2):

node index.js

服务器将启动并通过stdio进行通信。您可以使用MCP客户端进行测试。

与Claude一起测试

  1. 创建测试标记文件:

    echo "# Test Document\n\nThis is a **test**." > test.md
    
  2. 问克劳德:

    Convert test.md to test.pdf
    
  3. 检查工作目录中的输出PDF。

修改服务器

  • 更改默认CSS:编辑 DEFAULT_CSS 恒常 index.js
  • 添加新工具:添加到中的工具数组 ListToolsRequestSchema 处理器
  • 自定义PDF选项:修改 htmlToPdf 功能
  • 更新依赖关系:运行 npm update

贡献

欢迎投稿!请随时提交问题或拉取请求 GitHub.

许可证

麻省理工学院

链接

  • GitHub存储库: https://github.com/warrenandre/MCP_MD_TO_PDF
  • 模型上下文协议: https://modelcontextprotocol.io
  • 剧作家: https://playwright.dev
  • 标记: https://marked.js.org

问题或议题? 请打开一个问题 GitHub.