Markdown转PDF服务

一个将Markdown文档转换为PDF文件的服务器,支持语法高亮、自定义样式、页码和水印等功能。

  • by LAMENTIS1
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 LAMENTIS1/mcp_pdf

使用说明

Markdown2PDF MCP服务器(Markdown2PDF-MCP)

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

灵感来自Alan Shaw markdown pdf.

特性

  • 使用单个命令将Markdown转换为PDF
  • 代码块的语法高亮显示
  • PDF输出的自定义CSS样式
  • 支持标准Markdown格式
  • 美人鱼图渲染
  • 使用Chrome渲染引擎生成现代PDF
  • 对现代网络功能和字体的出色支持
  • 可靠的资源加载和渲染
  • 通过PDF页脚呈现的可选页码
  • 具有可配置范围的水印(第一页或所有页面)

局限性

不支持以下markdown元素:

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

坚持使用这些受支持的markdown元素:

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

美人鱼图

要渲染美人鱼图,请使用 mermaid 代码块:

降价

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

´´´

如果您的图表中有语法错误,错误消息将在PDF中呈现,帮助您进行调试。

安装(来源)

# Clone the repository
git clone https://github.com/2b3pro/markdown2pdf-mcp.git

# Navigate to the project directory
cd markdown2pdf-mcp

# Install dependencies
npm install

# Build the project
npm run build

安装(通过npm)

npm install markdown2pdf-mcp

用法

启动服务器

npm start

使用MCP工具

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

{
  // Required parameters
  markdown: string;    // Markdown content to convert

  // Optional parameters with defaults
  outputFilename?: string;  // Filename for the PDF (e.g., "output.pdf")
  paperFormat?: string;     // 'letter' (default), 'a4', 'a3', 'a5', 'legal', 'tabloid'
  paperOrientation?: string; // 'portrait' (default), 'landscape'
  paperBorder?: string;     // '2cm' (default), accepts decimal values with CSS units (e.g., '1.5cm', '2.5mm', '0.5in', '10.5px')
  watermark?: string;       // Optional watermark text (max 15 characters, uppercase)
  watermarkScope?: 'all-pages' | 'first-page'; // Defaults to 'all-pages'
  showPageNumbers?: boolean; // Defaults to false
}

带有选项的示例:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Hello World\n\nThis is a test document.",
    outputFilename: "output.pdf",
    paperFormat: "a4",
    paperOrientation: "landscape",
    paperBorder: "1.5cm",
    watermark: "DRAFT",
    watermarkScope: "first-page",
    showPageNumbers: true,
  },
});

最小使用示例:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Hello World\n\nThis is a test document.",
    outputFilename: "output.pdf",
  },
});

按需运行 npx

您可以在没有永久本地安装的情况下运行服务器,方法是: npx 获取最新包并执行其入口点:

npx -y markdown2pdf-mcp@latest

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

配置

输出目录

您可以在MCP设置文件中为使用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"
      }
    }
  }
}

这将在不干扰MCP通信的情况下将处理步骤记录到stderr。

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

依赖项

Chrome版本

此软件包使用Chrome v131.0.6778.204在所有安装中生成一致的PDF。运行时会自动安装此版本 npm install.

发展

# Build the project
npm run build

# Start the server
npm start

许可证

麻省理工学院

贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求