PDF Generator MCP Server について
PDF Generator MCP Serverは、Markdownをスタイル付きPDFに変換し、レポートや技術文書などを作成するためのサーバーです。再利用可能なテーマやスタイルに加え、画像処理とMarkdown検証を備えています。
主な機能
- 01MarkdownからPDFを生成
- 02組み込みテーマとPDF設定
- 03画像の埋め込みと最適化
- 04再利用可能なテンプレートとスタイル
- 05Markdownとリンクの検証
- 06ヘッダー、フッター、ページ番号の追加
活用シーン
- 01目次付きのテーマ別レポート作成
- 02技術文書のPDF化
- 03ファイル、URL、データURLから画像を埋め込み
- 04複数文書で一貫したスタイルを再利用
MCP 対応
PDF生成、画像埋め込み、テンプレートとスタイルの管理、Markdown検証をMCPクライアント向けのツールとして提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PDF Generator MCP Server
カスタムスタイル、画像のサポート、さまざまな書式設定オプションを使って、Markdown コンテンツからプロフェッショナルな PDF を生成する強力な MCP(Model Context Protocol)サーバーです。
機能
- 🎨 複数の組み込みテーマ:Default、Professional、Minimal、Dark のテーマ
- 📸 スマートな画像処理:自動最適化、キャッシュ、埋め込み
- 📄 高度な PDF オプション:ヘッダー、フッター、ページ番号、目次の生成
- 🎯 テンプレートシステム:カスタムテンプレートを作成して再利用
- ✅ Markdown の検証:生成前にコンテンツをチェック
- 🚀 パフォーマンスを最適化:ブラウザーインスタンスの再利用、画像のキャッシュ
- 💼 カスタムスタイル:プロンプトと書式設定を含むカスタム PDF スタイルを保存して再利用
インストール
GitHub から npx でクイックスタート(推奨)
インストールは不要です!Claude のデスクトップ設定に直接追加してください。
{
"mcpServers": {
"pdf-generator": {
"command": "npx",
"args": ["github:FabianGenell/pdf-mcp-server"]
}
}
}
これで完了です!サーバーは自動的にダウンロードされ、実行されます。
別の方法:ローカル開発
# Clone the repository
git clone https://github.com/FabianGenell/pdf-mcp-server
cd pdf-mcp-server
npm install
# Add to Claude desktop configuration
{
"mcpServers": {
"pdf-generator": {
"command": "node",
"args": ["/path/to/pdf-mcp-server/src/index.js"]
}
}
}
利用可能なツール
1. generate_pdf
Markdown コンテンツから PDF を生成します。PDF はデフォルトで Downloads フォルダーに保存されます。
await generate_pdf({
content: "# My Document\n\nThis is **markdown** content.",
output_path: "output.pdf", // Saves to ~/Downloads/output.pdf
options: {
theme: "professional",
include_toc: true,
page_numbers: true
}
});
注:ファイル名のみ、または相対パスを指定した場合、PDF は Downloads フォルダーに保存されます。それ以外の場所に保存するには、絶対パスを使用してください。
2. embed_images
Markdown 内の画像を処理し、最適化して埋め込みます。ローカルパス、URL、base64 データ URL に対応しています。
画像ソースの種類
ローカルファイル(お使いのコンピューター上):
await embed_images({
markdown_content: "# Report\n\n[IMAGE_1]\n\nSome text here.",
image_sources: [{
placeholder: "[IMAGE_1]",
source: "/Users/username/Pictures/screenshot.png", // Absolute path
caption: "Application Screenshot",
alignment: "center"
}]
});
リモート URL:
await embed_images({
markdown_content: "# Report\n\n[LOGO]\n\nCompany overview.",
image_sources: [{
placeholder: "[LOGO]",
source: "https://example.com/images/logo.png", // Remote URL
caption: "Company Logo",
alignment: "center"
}]
});
Base64 データ URL:
await embed_images({
markdown_content: "# Report\n\n[CHART]\n\nData analysis.",
image_sources: [{
placeholder: "[CHART]",
source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==", // Base64 data URL
caption: "Generated Chart",
alignment: "center"
}]
});
AI エージェント向けガイドライン
AI エージェントは、次の 3 つの方法で画像を指定できます。
- ローカルコンピューターのパス:
/Users/username/Documents/image.pngやC:\Users\username\Documents\image.pngのような絶対パスを使用します - オンライン画像:
https://example.com/image.pngのような直接 URL を使用します - 生成またはアップロードした画像:
data:image/[type];base64,[data]で始まる base64 データ URL を使用します
すべての種類の画像は自動的に最適化され、キャッシュされ、PDF のパフォーマンスに適したサイズに調整されます。適切なレイアウトを確保するため、画像の高さはページの 70% までに自動的に制限されます。
3. create_styled_template
一貫したスタイルを適用できる再利用可能なテンプレートを作成します。
await create_styled_template({
template_name: "company-report",
css_content: "/* Custom CSS */",
html_template: ""
});
4. validate_markdown
PDF の生成前に Markdown を検証します。
await validate_markdown({
content: "# Document\n\n...",
check_images: true,
check_links: true
});
5. create_custom_style
書式設定の設定や執筆用プロンプトを含むカスタム PDF スタイルを作成します。
await create_custom_style({
style_name: "annual_report",
description: "Professional annual report style",
prompt: "Format as an annual report with executive summary, metrics, and professional tone",
theme: "professional",
custom_css: "/* Additional styling */",
format: "A4",
include_toc: true,
page_numbers: true
});
6. generate_pdf_with_style
保存済みのカスタムスタイルを使って PDF を生成します。PDF はデフォルトで Downloads フォルダーに保存されます。
await generate_pdf_with_style({
style_name: "annual_report",
content: "# Annual Report 2024\n\n...",
output_path: "annual_report_2024.pdf" // Saves to ~/Downloads/annual_report_2024.pdf
});
7. list_custom_styles
利用可能なカスタムスタイルをすべて一覧表示します。
const { styles } = await list_custom_styles();
// Returns array of style summaries with names, descriptions, and themes
テーマ
Default
一般的なドキュメントに最適な、すっきりと読みやすいタイポグラフィです。
Professional
レターヘッドを取り入れた企業向けのスタイルで、ビジネスレポートに最適です。
Minimal
技術文書向けに余白を広く取った、集中しやすいデザインです。
Dark
プレゼンテーションや画面での閲覧に最適化された、高コントラストのテーマです。
カスタムスタイル
PDF サーバーでは、書式設定の設定、CSS スタイル、執筆用プロンプトを組み合わせたカスタムスタイルを保存できるようになりました。これにより、年次報告書、技術文書、ニュースレターなど、文書の種類に応じた一貫したスタイルを作成できます。
組み込みのカスタムスタイル
サーバーには、次のサンプルスタイルが含まれています。
- annual_report:エグゼクティブ向けの書式設定を備えたプロフェッショナルな年次報告書
- technical_documentation:コードのハイライト表示に対応した、すっきりとした技術文書
- presentation_slides:プレゼンテーション用のスライド形式の書式設定
- research_paper:学術論文向けの書式設定
- newsletter:段組みのモダンなニュースレター
カスタムスタイルの作成
カスタムスタイルには、次の項目を含められます。
- 執筆用プロンプト:コンテンツの書式設定方法に関する指示
- テーマの選択:ベースとして使用するテーマ
- カスタム CSS:追加のスタイル設定ルール
- ページ設定:用紙形式、向き、余白
- 機能:目次、ページ番号、ヘッダー/フッター
例:
await create_custom_style({
style_name: "project_proposal",
description: "Professional project proposal format",
prompt: "Format as a project proposal with objectives, timeline, budget sections",
theme: "professional",
custom_css: ".budget-table { ... }",
format: "Letter",
include_toc: true,
page_numbers: true,
header: "<div>Project Proposal</div>"
});
カスタムスタイル
markdown-it-attrs を使用して、Markdown に CSS クラスを指定します。
# Title {.center}
This is an info box {.info-box}
{.img-shadow .img-rounded}
利用可能な CSS クラス:
.page-break- 強制的に改ページします.no-break- 改ページを防ぎます.center、.right- テキストの配置.info-box、.warning-box、.error-box、.success-box- コールアウトボックス.img-shadow、.img-rounded、.img-border- 画像のスタイル設定
PDF オプション
{
// Page settings
format: 'A4', // A4, Letter, Legal, etc.
orientation: 'portrait', // portrait or landscape
margin: {
top: '1in',
right: '1in',
bottom: '1in',
left: '1in'
},
// Styling
theme: 'professional', // Theme name
custom_css: '...', // Additional CSS
// Content
include_toc: true, // Table of contents
toc_depth: 3, // TOC heading depth
page_numbers: true, // Show page numbers
// Images
image_quality: 85, // JPEG quality
max_image_width: 800, // Max width in pixels
// Advanced
wait_for_network: true, // Wait for images
print_background: true // Include backgrounds
}
使用例
プロフェッショナルレポート
// First, embed images (supports local files, URLs, and base64)
const { processed_markdown } = await embed_images({
markdown_content: reportContent,
image_sources: [
{
placeholder: '[HERO_IMAGE]',
source: '/Users/username/Downloads/hero.png', // Local file
alignment: 'full-width'
},
{
placeholder: '[LOGO]',
source: 'https://company.com/logo.png', // Remote URL
alignment: 'center'
},
{
placeholder: '[CHART]',
source: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB...', // Base64
caption: 'Sales Data',
alignment: 'center'
}
],
options: {
auto_optimize: true,
quality: 90
}
});
// Then generate PDF
await generate_pdf({
content: processed_markdown,
output_path: 'report.pdf', // Saves to Downloads
options: {
theme: 'professional',
include_toc: true,
page_numbers: true,
header: '<div style="text-align: right">Q4 2024 Report</div>',
footer: '<div style="text-align: center">Confidential</div>'
}
});
技術ドキュメント
await generate_pdf({
content: technicalDocs,
output_path: 'docs.pdf', // Saves to Downloads
options: {
theme: 'minimal',
include_toc: true,
toc_depth: 4,
enable_javascript: false
}
});
ファイル構成
pdf-mcp-server/
├── src/
│ ├── index.js # MCP server entry point
│ ├── pdf-generator.js # Core PDF generation
│ ├── markdown-processor.js # Markdown processing
│ ├── image-processor.js # Image optimization
│ ├── template-manager.js # Template system
│ └── themes/ # Built-in themes
├── templates/ # User templates
├── temp/ # Temporary files
└── docs/ # Documentation
要件
- Node.js 18+
- Playwright ブラウザー(自動インストール)
ライセンス
ISC
コントリビューション
プルリクエストを歓迎します。まずコントリビューションガイドラインをお読みください。
サポート
問題や機能リクエストについては、GitHub のイシュートラッカーをご利用ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。