mcpField
P
PDF Generator MCP Server

PDF Generator MCP Server

ローカル
github.com/FabianGenellファイル・ストレージ373 週間前に更新

PDF Generator MCP Server について

PDF Generator MCP Serverは、Markdownをスタイル付きPDFに変換し、レポートや技術文書などを作成するためのサーバーです。再利用可能なテーマやスタイルに加え、画像処理とMarkdown検証を備えています。

主な機能

  1. 01MarkdownからPDFを生成
  2. 02組み込みテーマとPDF設定
  3. 03画像の埋め込みと最適化
  4. 04再利用可能なテンプレートとスタイル
  5. 05Markdownとリンクの検証
  6. 06ヘッダー、フッター、ページ番号の追加

活用シーン

  1. 01目次付きのテーマ別レポート作成
  2. 02技術文書のPDF化
  3. 03ファイル、URL、データURLから画像を埋め込み
  4. 04複数文書で一貫したスタイルを再利用

MCP 対応

PDF生成、画像埋め込み、テンプレートとスタイルの管理、Markdown検証をMCPクライアント向けのツールとして提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pdf-mcp-server-fabiangenell": {
"command": "npx",
"args": [
"-y",
"github:FabianGenell/pdf-mcp-server"
]
}
}
}
起動コマンドnpx -y github:FabianGenell/pdf-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmgithub:FabianGenell/pdf-mcp-server

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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 つの方法で画像を指定できます。

  1. ローカルコンピューターのパス:/Users/username/Documents/image.png や C:\Users\username\Documents\image.png のような絶対パスを使用します
  2. オンライン画像:https://example.com/image.png のような直接 URL を使用します
  3. 生成またはアップロードした画像: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}

![Image](path.jpg){.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 のイシュートラッカーをご利用ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。