PolyDoc について
PolyDoc は、ドキュメントのレンダリングや請求書生成を必要とするクライアント向けの MCP サーバーで、PolyDoc REST API を利用します。HTML、URL、テンプレートを PDF や画像に変換し、PDF/A と PDF/UA の検証にも対応します。
主な機能
- 01HTML、URL、テンプレートから PDF を生成
- 02PNG、JPEG、WebP のスクリーンショット取得
- 03Factur-X と ZUGFeRD の電子請求書生成
- 04PDF/A と PDF/UA を指定した出力
- 05veraPDF による規格適合性の検証
- 06ローカル、クラウドストレージ、Webhook への出力
活用シーン
- 01長期保存用またはアクセシブルな PDF の作成
- 02Web ページの画像キャプチャ
- 03構造化データから電子請求書を生成
MCP 対応
PolyDoc REST API の変換機能と請求書生成機能を、MCP クライアント向けのツールとして公開します。結果はローカルに保存するほか、クラウドストレージや Webhook に送信できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y polydoc-mcpPOLYDOC_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
4掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| tag | string | いいえ | ログ記録と分析用のラベル(最大 30 文字)。 |
| url | string | いいえ | レンダリングする公開 URL。url、html、templateId のいずれか 1 つを指定してください。 |
| html | string | いいえ | レンダリングするインライン HTML。url、html、templateId のいずれか 1 つを指定してください。 |
| sandbox | boolean | いいえ | この呼び出しでサーバーのデフォルト設定を上書きします。サンドボックス出力には透かしが入り、レート制限が適用されます(約 5 リクエスト/秒)。 |
| timeout | integer | いいえ | 変換タイムアウト(ミリ秒)。 |
| webhook | object | いいえ | Webhook の設定。delivery が webhook の場合に必須です。形式:{ url, async?, method?, headers?, retries? }。 |
| advanced | object | いいえ | ここで公開されていない API オプション(例:pdf.watermark、render、request)を指定するため、リクエストボディにディープマージする生のフィールド。 |
| delivery | enum | いいえ | download はファイルをローカルに書き込みます。cloudStorage は署名付き URL にファイルをアップロードします。webhook は URL にファイルを POST します。download | cloudStorage | webhook |
| filename | string | いいえ | 出力ファイル名。設定済みの出力ディレクトリに書き込まれます(ベース名のみ)。 |
| pdfOptions | object | いいえ | ページレイアウトと PDF 準拠オプション。 |
| pdfOptions.pdfa | object | いいえ | アーカイブ用の PDF/A 出力を生成します。verify を設定しない場合、ベストエフォートとなります。 |
| pdfOptions.pdfa.level | enum | はい | アーカイブの対象レベル。下流システムで "2b" または "1b" が必要な場合を除き、"3b" を使用してください。1b | 2b | 3b |
| pdfOptions.pdfa.verify | boolean | いいえ | veraPDF で出力を検証し、準拠していない場合はリクエストを失敗させます(422)。 |
| pdfOptions.pdfua | object | いいえ | アクセシビリティに対応した PDF/UA-1(ISO 14289-1)出力を生成します。タグ付きレンダリングを強制します。verify が設定されていない場合はベストエフォートです。 |
| pdfOptions.pdfua.verify | boolean | いいえ | veraPDF で出力を検証し、準拠していない場合はリクエストを失敗させます(422)。 |
| pdfOptions.scale | number | いいえ | |
| pdfOptions.format | enum | いいえ | A3 | A4 | A5 | Ledger | Legal | Letter | Tabloid |
| pdfOptions.tagged | boolean | いいえ | タグ付き(アクセシブル)PDF を生成します。 |
| pdfOptions.outline | boolean | いいえ | HTML 見出しから PDF のブックマークを生成します。 |
| pdfOptions.landscape | boolean | いいえ | |
| pdfOptions.marginTop | string | いいえ | 例:"10mm"。 |
| pdfOptions.marginLeft | string | いいえ | |
| pdfOptions.pageRanges | string | いいえ | 例:"1-5, 8, 11-13"。 |
| pdfOptions.marginRight | string | いいえ | |
| pdfOptions.marginBottom | string | いいえ | |
| pdfOptions.printBackground | boolean | いいえ | |
| templateId | string | いいえ | 保存済み PolyDoc テンプレートの ID。url、html、templateId のいずれか 1 つだけを指定してください。 |
| presignedUrl | string | いいえ | 事前署名付き PUT URL。delivery が cloudStorage の場合に必須です。 |
| returnBase64 | boolean | いいえ | ファイルを base64 形式で構造化出力にも返します(負荷が大きいため、ファイルシステムのないクライアント向け)。 |
| templateData | object | いいえ | Liquid テンプレート用の変数(templateId と併用)。 |
詳細
polydoc-mcp
PolyDoc 用の MCP サーバーです。PolyDoc は、HTML または URL を PDF に変換し、スクリーンショットを撮影し、EU 準拠の 電子請求書(Factur-X / ZUGFeRD ハイブリッド PDF/A-3)を生成する REST API です。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 | セルフホスト環境またはステージング環境で使用する URL です。 |
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、クレジット)とともに絶対パスが返されます。スクリーンショットでは、インライン画像ブロックも返されます。バイトデータを base64 として受け取るにはreturnBase64: trueを渡します(データ量が大きくなります。ファイルシステムを利用できないクライアント向けです)。 - クラウドストレージ:
delivery: "cloudStorage"とpresignedUrlを設定します。アップロード URL が返されます。 - Webhook:
delivery: "webhook"とwebhookオブジェクト({ url, async?, method?, headers? })を設定します。
PDF/A と PDF/UA
polydoc_html_to_pdf では、pdfOptions 内に 2 つの準拠ターゲットを指定できます。
{
"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 installyarn build-dist/にコンパイルしますyarn lintyarn test- ユニットテスト(リクエストビルダー、出力ジャイル、ツールハンドラー)と、メモリ内のMCPラウンドトリップを実行しますPOLYDOC_API_KEY=your-key yarn test:integration- サンドボックスに対するライブスモークテストを実行しますyarn scrub:check- ソースとドキュメントにエムダッシュが含まれていないか確認します
簡単な確認を行うには、ビルド済みサーバーを直接実行します。
POLYDOC_API_KEY=your-key node dist/index.js
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。