mcpField
M
Markdown2PDF MCP Server (markdown2pdf-mcp)

Markdown2PDF MCP Server (markdown2pdf-mcp)

ローカル
github.com/2b3pro生産性382 週間前に更新

Markdown2PDF MCP Server (markdown2pdf-mcp) について

Markdown2PDF MCP Serverは、Markdown文書をPDFに変換するサーバーです。書式付き文書を作成したい人向けに、バッチ変換や事前検証、レイアウト設定を備えています。

主な機能

  1. 01MarkdownからPDFへの変換
  2. 02複数文書の一括変換
  3. 03変換前のMarkdown検証
  4. 04組み込みテーマとカスタムCSS
  5. 05シンタックスハイライトとMermaid描画
  6. 06ページ番号・ヘッダー・透かしの設定

活用シーン

  1. 01MarkdownのレポートをPDFで出力
  2. 02複数文書のPDFをまとめて生成
  3. 03変換前にMermaid図やアセットパスを確認

MCP 対応

MCP サーバーとして、PDF作成、バッチ変換、Markdown検証のツールをMCPクライアントに提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"markdown2pdf": {
"command": "npx",
"args": [
"-y",
"markdown2pdf-mcp"
]
}
}
}
起動コマンドnpx -y markdown2pdf-mcp

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

パッケージ
npmmarkdown2pdf-mcp

ツール

3

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
themeenumいいえビジュアルスタイルのテーマ:「default」(モダンでクリーン)、「github」(GitHub Markdown)、「academic」(正式な論文)、「report」(エグゼクティブレポート)、「minimal」(軽量でミニマル)。default | github | academic | report | minimal
marginobjectいいえPDF の非対称マージン(上、右、下、左)。指定すると paperBorder を上書きします。
margin.topstringいいえ上マージン(例:「25mm」、「1in」)
margin.leftstringいいえ左マージン(例:「20mm」、「0.75in」)
margin.rightstringいいえ右マージン(例:「20mm」、「0.75in」)
margin.bottomstringいいえ下マージン(例:「25mm」、「1in」)
markdownstringはいPDF に変換する Markdown コンテンツ
customCssstringいいえカスタムスタイルを適用するためにドキュメントへ挿入する任意のカスタム CSS。
inputPathstringいいえ変換するローカルディスク上の Markdown ファイルのパス。Markdown の生文字列を直接渡す代わりに使用できます。
watermarkstringいいえ任意の透かしテキスト(最大 15 文字、すべて大文字)。例:「DRAFT」、「CONFIDENTIAL」。
footerTextstringいいえフッターに表示する任意のカスタムテキスト。
headerTextstringいいえヘッダーに表示する任意のカスタムテキスト。
paperBorderstringいいえPDF の均一な余白(デフォルト:2cm)。CSS の単位(cm、mm、in、px)を使用します。
paperFormatenumいいえPDF の用紙形式(デフォルト:letter)letter | a4 | a3 | a5 | legal | tabloid
outputFilenamestringいいえPDF のファイル名またはパス(デフォルト:「output.pdf」)。絶対パスはそのまま使用され、相対パスは M2P_OUTPUT_DIR または HOME の下に配置されます。
watermarkScopeenumいいえウォーターマークの表示範囲を制御します:"all-pages" はすべてのページに繰り返し表示し、"first-page" は最初のページにのみ表示します(デフォルト:all-pages)。all-pages | first-page
showPageNumbersbooleanいいえPDF のフッターにページ番号を含めます(デフォルト:false)
paperOrientationenumいいえPDF の用紙の向き(デフォルト:縦向き)portrait | landscape

詳細

Markdown2PDF MCP Server (markdown2pdf-mcp)

markdown2pdf-mcp: Markdownから洗練されたPDFを生成

Markdown文書をPDFファイルに変換するMCPサーバーです。構文ハイライト、カスタムスタイル、ページ番号の任意設定、透かしの柔軟な配置(最初のページのみ、または全ページ)に対応し、MarkdownコンテンツからPDFを簡単かつ効率的に生成できます。

Alan Shawのmarkdown-pdfに着想を得ています。

特長

  • 1つのコマンドでMarkdownをPDFに変換
  • 1つのブラウザーセッションを共有する高性能な一括変換(batch_create_pdf)
  • ブラウザーを起動せずにMarkdownの事前検証とlintを実行(validate_markdown)
  • 組み込みのビジュアルテーマ:default、github、academic、report、minimal
  • カスタムCSSスタイルとフォントの上書き
  • 非対称な余白に対応(margin: { top, right, bottom, left })
  • 文字列、またはローカルファイルパスから直接変換(inputPath)
  • コードブロックの構文ハイライト
  • ローカルバンドルによるMermaid図のレンダリング
  • Chromeのレンダリングエンジンを使用したモダンなPDF生成
  • ページ番号とカスタムヘッダー/フッターテキストを任意で設定
  • 適用範囲(最初のページ、または全ページ)を設定できる透かし

制限事項

以下のMarkdown要素には対応していません。

  • LaTeXの数式(例:$x^2$ または $$\sum_{i=1}^n x_i$$)
  • 複雑な数式や科学的表記

以下の対応済みMarkdown要素をご利用ください。

  • 見出し(すべてのレベル)
  • テキストの書式設定(太字、斜体、取り消し線)
  • リスト(番号付き、番号なし)
  • 構文ハイライト付きコードブロック
  • 表
  • 引用
  • リンク
  • 画像(Base64データURI、または M2P_ASSETS_DIR 内のファイル。画像を参照)
  • タスクリスト
  • Mermaid図

セキュリティに関する注意: レンダリングは自己完結型です。Markdown内の生のHTMLはそのまま出力されず、デフォルトではレンダラーがローカルファイルの読み取りと外部へのリクエストをブロックします。セキュリティ勧告を参照してください。

Mermaid図

Mermaid図をレンダリングするには、mermaidコードブロックを使用します。

´´´markdown

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

´´´

図に構文エラーがある場合、PDFにエラーメッセージが表示されるため、問題の調査に役立ちます。変換前にvalidate_markdownを実行して、Mermaid図の構文を確認することもできます。

インストール(ソースから)

# 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

使い方

MCPツールの概要

このサーバーには、目的に特化した3つのツールがあります。

  1. create_pdf_from_markdown:レイアウト、テーマ、余白を幅広く設定して、Markdown文書をPDFに変換します。
  2. batch_create_pdf:ブラウザーセッションを共有して、複数のMarkdown文書またはファイルを1回の呼び出しで変換します。
  3. validate_markdown:ブラウザー起動のオーバーヘッドなしで、Markdown構文、Mermaidブロック、アセットパス、サイズ制限を検証する高速な事前チェックです。

1. create_pdf_from_markdown
{
  // Content inputs (provide at least one)
  markdown?: string;        // Raw Markdown string content
  inputPath?: string;       // Or path to a local .md file on disk

  // Layout & Formatting
  outputFilename?: string;  // Target PDF path (e.g., "report.pdf", "out/q3.pdf")
  paperFormat?: string;     // 'letter' (default), 'a4', 'a3', 'a5', 'legal', 'tabloid'
  paperOrientation?: string;// 'portrait' (default), 'landscape'
  paperBorder?: string;     // Uniform border margin (e.g., '20mm', '1.5in')
  margin?: {                // Asymmetric margins (overrides paperBorder)
    top?: string;
    right?: string;
    bottom?: string;
    left?: string;
  };

  // Themes & Styling
  theme?: string;           // 'default', 'github', 'academic', 'report', 'minimal'
  customCss?: string;       // Custom CSS injected into the page

  // Header, Footer & Watermark
  watermark?: string;       // Watermark text (max 15 characters, uppercase)
  watermarkScope?: string;  // 'all-pages' (default) or 'first-page'
  showPageNumbers?: boolean;// Show page numbers in footer (default: false)
  headerText?: string;      // Custom running header text
  footerText?: string;      // Custom running footer text
}

テーマとカスタム余白を指定する例:

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "create_pdf_from_markdown",
  arguments: {
    markdown: "# Quarterly Report\n\nKey performance highlights...",
    outputFilename: "q3-report.pdf",
    theme: "report",
    paperFormat: "a4",
    margin: { top: "25mm", right: "15mm", bottom: "25mm", left: "15mm" },
    showPageNumbers: true,
    headerText: "Confidential - Executive Eyes Only",
  },
});

2. batch_create_pdf

ブラウザーインスタンスを再利用して、複数の文書を1回の呼び出しで変換します。

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "batch_create_pdf",
  arguments: {
    documents: [
      { markdown: "# Chapter 1\nIntroduction...", outputFilename: "ch1.pdf" },
      { inputPath: "docs/ch2.md", outputFilename: "ch2.pdf" },
      { markdown: "# Appendix\nData sheets...", outputFilename: "appendix.pdf", theme: "academic" }
    ],
    sharedConfig: {
      paperFormat: "letter",
      theme: "github",
      showPageNumbers: true
    }
  }
});

3. validate_markdown

PDF変換を開始する前に実行する、高速な事前チェックです。

await use_mcp_tool({
  server_name: "markdown2pdf",
  tool_name: "validate_markdown",
  arguments: {
    markdown: "# My Document\nFormula: $x^2$\n```mermaid\ngraph TD; A-->B;\n```"
  }
});

文書の統計情報、警告(サポート対象外のLaTeX数式や、除去されたHTMLタグなど)、エラー(画像参照の破損やファイルサイズ超過など)が返されます。


## Running on Demand with `npx`

You can run the server without a permanent local install by asking `npx` to grab the latest package and execute its entrypoint:

```bash
npx -y markdown2pdf-mcp@latest

このコマンドはパッケージを一時ワークスペースにインストールした後、同梱のCLIからMCPサーバーを起動します。このコマンドをMCP対応クライアント(ClineやClaude Desktopなど)に指定すると、必要に応じてサーバーを起動できます。

設定

出力ディレクトリ

Cline や Claude など、MCP を使用するアプリの MCP 設定ファイルで出力ディレクトリを設定できます。設定されていない場合、ファイルは $HOME に保存されます。

{
  "mcpServers": {
    "markdown2pdf": {
      "args": ["/path/to/markdown2pdf-mcp/build/index.js"],
      "env": {
        "M2P_OUTPUT_DIR": "/path/to/output/directory"
      }
    }
  }
}

M2P_OUTPUT_DIR がデフォルトの保存先です。outputFilename に指定したパスが優先されます。絶対パスはそのまま使用され、相対パス(例:reports/q3.pdf)は M2P_OUTPUT_DIR(未設定の場合は $HOME)の下に配置されます。

このツールは、ファイル名に連番を追加して競合を自動的に処理します(例:output.pdf、output-1.pdf、output-2.pdf)。

画像

セキュリティ上、レンダラーは任意のローカルパスや外部 URL から画像を読み込みません。次の 3 つの方法があります。

  1. Base64 データ URI は設定不要でどこでも使用できます:![logo](data:image/png;base64,iVBORw0...)

  2. アセットディレクトリ。 M2P_ASSETS_DIR を設定し、相対パスで画像を参照します。このディレクトリ内に解決されるファイルのみ読み込まれます。../ による階層の移動、ディレクトリ外を指すシンボリックリンク、および別の場所にある絶対パスはブロックされます。

    "env": {
      "M2P_ASSETS_DIR": "/path/to/images"
    }
    
    ![Q3 revenue](charts/q3.png)
    
  3. 手動での上書き(安全ではありません)。 サーバーを --dangerously-allow-images 付きで起動する(または M2P_DANGEROUSLY_ALLOW_ALL_IMAGES=true を設定する)と、バージョン 2.2.0 より前と同様に、任意のローカルパスや URL から画像を読み込めます。これにより、アドバイザリで説明されているファイル情報漏えいと SSRF の問題が再び発生するため、サーバーが受け取るすべての Markdown が完全に信頼できる場合にのみ使用してください。いずれの場合も、生の HTML は無効のままです。

    "args": ["/path/to/markdown2pdf-mcp/build/index.js", "--dangerously-allow-images"]
    
大容量ファイルのサポート

このツールは、次の機能により大容量の 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 に記録されます。

ローカルでビルドしたバージョンを使いたいですか?npx の代わりに、"command" を node に戻し、"args" にコンパイル済みの build/index.js のパスを指定します。例:"args": ["/path/to/markdown2pdf-mcp/build/index.js"]。

依存関係

Chrome のバージョン

このパッケージは、すべてのインストールで一貫した PDF を生成するために、Chrome v131.0.6778.204 を使用します。このバージョンは npm install の実行時に自動的にインストールされます。

  • tmp - 一時ファイルの処理

開発

# Build the project
npm run build

# Start the server
npm start

サポート

Markdown2PDF MCP は無料のオープンソースです。Markdown を見栄えのよい PDF に変換して時間を節約できたら、コーヒーとクロワッサンをごちそうしていただけるとうれしいです。継続的なアップデートの助けになります。

PayPal で寄付

コーヒーとクロワッサンをごちそうしてください!


ライセンス

MIT

貢献

  1. リポジトリをフォークします
  2. 機能ブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add some amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. プルリクエストを作成します

コメント

MCP は初めてですか?

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

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