返回市场
markdown转pdf-mcp

markdown转pdf-mcp

作者:2b3pro20 星标更新:2025-10-08

项目介绍

MseeP.ai 安全评估徽章

Markdown2PDF MCP 服务器 (markdown2pdf-mcp)

这是一个用于将 Markdown 文档转换为 PDF 文件的 MCP 服务器。该服务器提供了一种简单高效的方法,可以从 Markdown 内容生成 PDF,支持语法高亮、自定义样式、可选页码以及灵活的水印放置(仅限首页或所有页面)。

灵感来源于 Alan Shaw 的 markdown-pdf

功能

  • 使用单个命令将 Markdown 转换为 PDF
  • 代码块的语法高亮
  • 自定义 CSS 样式用于 PDF 输出
  • 支持标准 Markdown 格式
  • Mermaid 图表渲染
  • 使用 Chrome 渲染引擎进行现代 PDF 生成
  • 对现代 Web 特性和字体有很好的支持
  • 可靠的资源加载和渲染
  • 通过 PDF 尾部可选页码
  • 可配置范围的水印(首页或所有页面)

限制

以下 Markdown 元素不被支持:

  • LaTeX 数学公式(例如,$x^2$$$\sum_{i=1}^n x_i$$
  • 复杂的数学公式或科学记号

请使用以下支持的 Markdown 元素:

  • 所有级别的标题
  • 文本格式化(粗体、斜体、删除线)
  • 列表(有序和无序)
  • 带语法高亮的代码块
  • 表格
  • 引用框
  • 链接
  • 图像(本地文件和外部 URL)
  • 任务列表
  • Mermaid 图表

Mermaid 图表

要渲染 Mermaid 图表,请使用 mermaid 代码块:

```mermaid
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

如果您的图表中有语法错误,错误信息将在 PDF 中显示,帮助您调试。

## 安装(从源代码)

```bash
# 克隆仓库
git clone https://github.com/2b3pro/markdown2pdf-mcp.git

# 导航到项目目录
cd markdown2pdf-mcp

# 安装依赖
npm install

# 构建项目
npm run build

安装(通过 npm)

npm install markdown2pdf-mcp

使用方法

启动服务器

npm start

使用 MCP 工具

服务器提供了一个单一工具 create_pdf_from_markdown,带有以下参数:

{
  // 必需参数
  markdown: string;    // 要转换的 Markdown 内容

  // 可选参数及其默认值
  outputFilename?: string;  // PDF 文件名(例如,“output.pdf”)
  paperFormat?: string;     // 'letter'(默认),'a4','a3','a5','legal','tabloid'
  paperOrientation?: string; // 'portrait'(默认),'landscape'
  paperBorder?: string;     // '2cm'(默认),接受带 CSS 单位的十进制值(例如,'1.5cm','2.5mm','0.5in','10.5px')
  watermark?: string;       // 可选水印文本(最多 15 个字符,大写)
  watermarkScope?: 'all-pages' | 'first-page'; // 默认为 'all-pages'
  showPageNumbers?: boolean; // 默认为 false
}

带有选项的例子:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Hello World\n\n这是测试文档。",
    outputFilename: "output.pdf",
    paperFormat: "a4",
    paperOrientation: "landscape",
    paperBorder: "1.5cm",
    watermark: "草稿",
    watermarkScope: "first-page",
    showPageNumbers: true,
  },
});

最小使用例子:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Hello World\n\n这是测试文档。",
    outputFilename: "output.pdf",
  },
});

按需运行与 npx

您可以请求 npx 抓取最新包并执行其入口点,从而无需永久本地安装即可运行服务器:

npx -y markdown2pdf-mcp@latest

此命令将包安装到临时工作区,然后通过捆绑的 CLI 启动 MCP 服务器。指向您的 MCP 意识客户端(如 Cline 或 Claude Desktop)以按需启动服务器。

配置

输出目录

您可以在 MCP 设置文件中配置输出目录,例如 Cline 或 Claude 应用程序。如果没有配置,它将保存文件到 $HOME:

{
  "mcpServers": {
    "markdown2pdf": {
      "args": ["/path/to/markdown2pdf-mcp/build/index.js"],
      "env": {
        "M2P_OUTPUT_DIR": "/path/to/output/directory"
      }
    }
  }
}

工具会自动处理文件名冲突,通过追加递增数字(例如,output.pdf,output-1.pdf,output-2.pdf)。

大文件支持

工具会自动处理大型 Markdown 文件:

  • 动态超时:根据内容大小自动调整(对于非常大的文件可达 5 分钟)
  • 内存限制:为 Chrome 分配 4GB 内存以处理复杂文档
  • 大小验证:最大 10MB 文件大小,并附带清晰的错误消息
  • 进度跟踪:显示内容大小和预计处理时间

对于非常大的文件(1300+ 行),工具将:

  1. 提醒您处理时间延长
  2. 自动增加超时
  3. 在响应中显示内容大小
  4. 如果处理失败,提供详细的错误消息

详细日志记录

启用详细日志记录以进行调试:

{
  "mcpServers": {
    "markdown2pdf": {
      "command": "node",
      "args": ["/path/to/markdown2pdf-mcp/build/index.js"],
      "env": {
        "M2P_OUTPUT_DIR": "/path/to/output/directory",
        "M2P_VERBOSE": "true"
      }
    }
  }
}

这将把处理步骤的日志记录到 stderr,而不干扰 MCP 通信。

更喜欢本地构建版本?将 "command" 回调到 node 并将 "args" 指向编译的 build/index.js 路径,而不是使用 npx,例如:"args": ["/path/to/markdown2pdf-mcp/build/index.js"]

依赖项

Chrome 版本

此包使用 Chrome v131.0.6778.204 来在所有安装中一致地生成 PDF。当您运行 npm install 时,此版本会自动安装。

  • tmp - 临时文件处理

开发

# 构建项目
npm run build

# 启动服务器
npm start

许可证

MIT

贡献

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m '添加一些精彩的功能')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开拉取请求