mcpField
P
PolyDoc

PolyDoc

本地服务
polydoc.tech生产力02 天前更新

关于 PolyDoc

PolyDoc 是面向需要文档渲染和发票生成的客户端的 MCP 服务,通过 PolyDoc REST API 执行操作。它可将 HTML、URL 或模板转换为 PDF 和图像,并可验证 PDF/A 与 PDF/UA 输出。

主要功能

  1. 01将 HTML、URL 或模板转为 PDF
  2. 02截取 PNG、JPEG 和 WebP 图像
  3. 03生成 Factur-X 和 ZUGFeRD 电子发票
  4. 04生成符合 PDF/A 和 PDF/UA 目标的文件
  5. 05使用 veraPDF 验证标准符合性
  6. 06将文件交付至本地、云存储或 Webhook

适用场景

  1. 01制作归档或无障碍 PDF
  2. 02将网页截取为图像
  3. 03根据结构化数据生成电子发票

MCP 相关

将 PolyDoc REST API 的转换和发票生成功能作为工具提供给 MCP 客户端。结果可保存至本地,也可交付到云存储或 Webhook。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"tech-polydoc-polydoc": {
"command": "npx",
"args": [
"-y",
"polydoc-mcp"
],
"env": {
"POLYDOC_API_KEY": "<POLYDOC_API_KEY>",
"POLYDOC_SANDBOX": "<POLYDOC_SANDBOX>",
"POLYDOC_BASE_URL": "<POLYDOC_BASE_URL>",
"POLYDOC_OUTPUT_DIR": "<POLYDOC_OUTPUT_DIR>"
}
}
}
}
启动命令npx -y polydoc-mcp
需要配置的环境变量
POLYDOC_API_KEY密钥API key from dashboard.polydoc.tech.
POLYDOC_SANDBOXDefault sandbox mode (watermarked, does not use production quota). A tool call can override per request. Defaults to false.
POLYDOC_BASE_URLOverride for self-hosted or staging use. Defaults to https://api.polydoc.tech.
POLYDOC_OUTPUT_DIRDirectory downloads are written to. Defaults to the OS temp dir + /polydoc.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmpolydoc-mcp0.1.9

工具

4

收录的工具列表 · 更新于 1 天前

参数类型必填说明
tagstring否用于日志记录和分析的标签(最多 30 个字符)。
urlstring否要渲染的公开 URL。请在 url、html 或 templateId 中任选其一。
htmlstring否要渲染的内嵌 HTML。请在 url、html 或 templateId 中任选其一。
sandboxboolean否为本次调用覆盖服务器默认值。沙盒输出带有水印并受速率限制(约 5 次请求/秒)。
timeoutinteger否转换超时时间,单位为毫秒。
webhookobject否Webhook 配置;当 delivery 为 webhook 时必填。结构:{ url, async?, method?, headers?, retries? }。
advancedobject否深度合并到请求正文中的原始字段,用于指定此处未公开的 API 选项(例如 pdf.watermark、render、request)。
deliveryenum否download 将文件写入本地;cloudStorage 将文件上传到预签名 URL;webhook 将文件发送到 URL。download | cloudStorage | webhook
filenamestring否输出文件名。文件将写入已配置的输出目录(仅限基本文件名)。
pdfOptionsobject否页面布局和 PDF 合规性选项。
pdfOptions.pdfaobject否生成可归档的 PDF/A 输出。除非设置 verify,否则仅尽力实现。
pdfOptions.pdfa.levelenum是归档目标。除非下游系统要求使用 "2b" 或 "1b",否则请使用 "3b"。1b | 2b | 3b
pdfOptions.pdfa.verifyboolean否使用 veraPDF 验证输出;如果不符合要求,则使请求失败(422)。
pdfOptions.pdfuaobject否生成符合无障碍规范的 PDF/UA-1(ISO 14289-1)输出;强制进行带标签的渲染。除非设置了 verify,否则尽力而为。
pdfOptions.pdfua.verifyboolean否使用 veraPDF 验证输出;如果不符合要求,则使请求失败(422)。
pdfOptions.scalenumber否
pdfOptions.formatenum否A3 | A4 | A5 | Ledger | Legal | Letter | Tabloid
pdfOptions.taggedboolean否生成带标签(无障碍)的 PDF。
pdfOptions.outlineboolean否根据 HTML 标题生成 PDF 书签。
pdfOptions.landscapeboolean否
pdfOptions.marginTopstring否例如:"10mm"。
pdfOptions.marginLeftstring否
pdfOptions.pageRangesstring否例如:"1-5, 8, 11-13"。
pdfOptions.marginRightstring否
pdfOptions.marginBottomstring否
pdfOptions.printBackgroundboolean否
templateIdstring否已保存的 PolyDoc 模板 ID。必须且只能提供 url、html 或 templateId 其中之一。
presignedUrlstring否预签名 PUT URL;当 delivery 为 cloudStorage 时必填。
returnBase64boolean否同时在结构化输出中以 base64 格式返回文件(开销较大;适用于没有文件系统的客户端)。
templateDataobject否Liquid 模板的变量(与 templateId 配合使用)。

详细介绍

polydoc-mcp

适用于 PolyDoc 的 MCP 服务。PolyDoc 是一个 REST API,可将 HTML 或 URL 转换为 PDF、捕获屏幕截图,并生成符合欧盟要求的电子发票(Factur-X / ZUGFeRD 混合 PDF/A-3)。它让 MCP 客户端(Claude Desktop、Claude Code、Cursor 等)可以直接驱动 PolyDoc。

PDF 输出可以采用 PDF/A(归档)和 PDF/UA-1(无障碍,ISO 14289-1)标准。默认情况下,两者均尽力生成符合标准的文件;对任一选项设置 verify,即可使用 veraPDF 验证结果,并在文件不符合标准时失败,而不是返回该文件。

工具

  • polydoc_html_to_pdf - 将 HTML、URL 或已保存的模板转换为 PDF(布局、边距、页面格式、页面范围、书签、带标签的 PDF、PDF/A 和 PDF/UA 合规性)。
  • polydoc_screenshot - 将 HTML、URL 或模板转换为 PNG / JPEG / WebP,并可控制视口和设备像素比。图像较小时,会以内嵌预览的形式返回。
  • polydoc_generate_einvoice - 根据结构化发票数据生成 Factur-X 或 ZUGFeRD 混合 PDF/A-3,支持 basic、en16931 和 extended 配置文件。
  • polydoc_test_credentials - 使用最简沙盒渲染验证配置的 API 密钥(不会消耗生产环境配额)。

内容可以来自 URL、内联的 HTML 字符串或已保存的模板(使用 Liquid templateData)。下载文件会写入本地目录,并返回文件路径;也可以将文件传送到云存储(预签名 URL)或通过 webhook 传送。

安装

需要 Node.js >= 20.15。此项目已发布到 npm,因此客户端可以使用 npx 运行:

npx -y polydoc-mcp

服务完全通过环境变量进行配置(见下文)。

配置

变量必需默认值说明
POLYDOC_API_KEY是-来自 dashboard.polydoc.tech 的 API 密钥。
POLYDOC_SANDBOX否false默认沙盒模式(带水印、受速率限制)。工具调用可以按请求覆盖此设置。
POLYDOC_BASE_URL否https://api.polydoc.tech用于可自托管实例或预发布环境的覆盖值。
POLYDOC_OUTPUT_DIR否OS 临时目录 + /polydoc下载文件的写入位置。输出文件不会写到此文件夹以外。

客户端设置

Claude Desktop

将以下内容添加到 claude_desktop_config.json(Settings > Developer > Edit Config):

{
  "mcpServers": {
    "polydoc": {
      "command": "npx",
      "args": ["-y", "polydoc-mcp"],
      "env": {
        "POLYDOC_API_KEY": "your-key",
        "POLYDOC_OUTPUT_DIR": "/Users/you/Documents/polydoc"
      }
    }
  }
}
Claude Code
claude mcp add polydoc -e POLYDOC_API_KEY=your-key -- npx -y polydoc-mcp
Cursor

使用与 Claude Desktop 相同的 mcpServers 配置块,添加到 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)。

输出和传送

  • 下载(默认):文件会写入 POLYDOC_OUTPUT_DIR,并返回绝对路径以及元数据(大小、转换 ID、额度)。屏幕截图也会返回内嵌图像块。传入 returnBase64: true 还可以将字节以 base64 形式返回(数据量较大;适用于没有文件系统的客户端)。
  • 云存储:设置 delivery: "cloudStorage" 和 presignedUrl。系统会返回上传 URL。
  • Webhook:设置 delivery: "webhook" 和一个 webhook 对象({ url, async?, method?, headers? })。

PDF/A 和 PDF/UA

polydoc_html_to_pdf 在 pdfOptions 中接受两个合规性目标:

{
  "pdfOptions": {
    "pdfa": { "level": "3b", "verify": true },
    "pdfua": { "verify": true }
  }
}

pdfa.level 可以是 1b、2b 或 3b。设置 pdfua 会强制进行带标签的渲染,因此无需同时设置 tagged。

如果未设置 verify,输出将尽力符合标准:目标是符合标准,但如果工具链无法满足所有可由机器检查的规则,请求仍会成功。如果设置 verify: true,veraPDF 将验证结果;如果文件不符合标准,系统会返回 422,而不是返回该文件。当下游系统无论如何都会拒绝不合格文件时,请使用此选项。

工具的架构中没有的选项?

每个转换工具都有一个 advanced 对象,会与请求正文进行深度合并,因此任何未作为带类型字段公开的 API 功能(例如 pdf.watermark、pdf.encryption、render、request)仍可使用。请参阅 docs.polydoc.tech 中的字段参考。

示例

每种方案的工具输入示例都位于 examples/:使用模板生成的品牌 PDF、URL 截图,以及 ZUGFeRD / EN 16931 电子发票。

开发

  • yarn install
  • yarn build - 编译到 dist/
  • yarn lint
  • yarn test - 单元测试(请求构建器、输出隔离、工具处理程序)和内存中的 MCP 往返测试
  • POLYDOC_API_KEY=your-key yarn test:integration - 针对沙盒运行实时冒烟测试
  • yarn scrub:check - 检查源代码和文档中是否有破折号

直接运行构建好的服务进行快速检查:

POLYDOC_API_KEY=your-key node dist/index.js

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。