Markdown2PDF MCP Server (markdown2pdf-mcp) について
Markdown2PDF MCP Serverは、Markdown文書をPDFに変換するサーバーです。書式付き文書を作成したい人向けに、バッチ変換や事前検証、レイアウト設定を備えています。
主な機能
- 01MarkdownからPDFへの変換
- 02複数文書の一括変換
- 03変換前のMarkdown検証
- 04組み込みテーマとカスタムCSS
- 05シンタックスハイライトとMermaid描画
- 06ページ番号・ヘッダー・透かしの設定
活用シーン
- 01MarkdownのレポートをPDFで出力
- 02複数文書のPDFをまとめて生成
- 03変換前にMermaid図やアセットパスを確認
MCP 対応
MCP サーバーとして、PDF作成、バッチ変換、Markdown検証のツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| theme | enum | いいえ | ビジュアルスタイルのテーマ:「default」(モダンでクリーン)、「github」(GitHub Markdown)、「academic」(正式な論文)、「report」(エグゼクティブレポート)、「minimal」(軽量でミニマル)。default | github | academic | report | minimal |
| margin | object | いいえ | PDF の非対称マージン(上、右、下、左)。指定すると paperBorder を上書きします。 |
| margin.top | string | いいえ | 上マージン(例:「25mm」、「1in」) |
| margin.left | string | いいえ | 左マージン(例:「20mm」、「0.75in」) |
| margin.right | string | いいえ | 右マージン(例:「20mm」、「0.75in」) |
| margin.bottom | string | いいえ | 下マージン(例:「25mm」、「1in」) |
| markdown | string | はい | PDF に変換する Markdown コンテンツ |
| customCss | string | いいえ | カスタムスタイルを適用するためにドキュメントへ挿入する任意のカスタム CSS。 |
| inputPath | string | いいえ | 変換するローカルディスク上の Markdown ファイルのパス。Markdown の生文字列を直接渡す代わりに使用できます。 |
| watermark | string | いいえ | 任意の透かしテキスト(最大 15 文字、すべて大文字)。例:「DRAFT」、「CONFIDENTIAL」。 |
| footerText | string | いいえ | フッターに表示する任意のカスタムテキスト。 |
| headerText | string | いいえ | ヘッダーに表示する任意のカスタムテキスト。 |
| paperBorder | string | いいえ | PDF の均一な余白(デフォルト:2cm)。CSS の単位(cm、mm、in、px)を使用します。 |
| paperFormat | enum | いいえ | PDF の用紙形式(デフォルト:letter)letter | a4 | a3 | a5 | legal | tabloid |
| outputFilename | string | いいえ | PDF のファイル名またはパス(デフォルト:「output.pdf」)。絶対パスはそのまま使用され、相対パスは M2P_OUTPUT_DIR または HOME の下に配置されます。 |
| watermarkScope | enum | いいえ | ウォーターマークの表示範囲を制御します:"all-pages" はすべてのページに繰り返し表示し、"first-page" は最初のページにのみ表示します(デフォルト:all-pages)。all-pages | first-page |
| showPageNumbers | boolean | いいえ | PDF のフッターにページ番号を含めます(デフォルト:false) |
| paperOrientation | enum | いいえ | PDF の用紙の向き(デフォルト:縦向き)portrait | landscape |
詳細
Markdown2PDF MCP Server (markdown2pdf-mcp)

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つのツールがあります。
create_pdf_from_markdown:レイアウト、テーマ、余白を幅広く設定して、Markdown文書をPDFに変換します。batch_create_pdf:ブラウザーセッションを共有して、複数のMarkdown文書またはファイルを1回の呼び出しで変換します。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 つの方法があります。
-
Base64 データ URI は設定不要でどこでも使用できます:
 -
アセットディレクトリ。
M2P_ASSETS_DIRを設定し、相対パスで画像を参照します。このディレクトリ内に解決されるファイルのみ読み込まれます。../による階層の移動、ディレクトリ外を指すシンボリックリンク、および別の場所にある絶対パスはブロックされます。"env": { "M2P_ASSETS_DIR": "/path/to/images" } -
手動での上書き(安全ではありません)。 サーバーを
--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 行以上)の場合、ツールは次の処理を行います。
- 処理時間が長くなることを警告します
- タイムアウトを自動的に延長します
- レスポンスにコンテンツのサイズを表示します
- 処理に失敗した場合、詳細なエラーメッセージを表示します
詳細ログ
デバッグ用に詳細なログを有効にします。
{
"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"]。
依存関係
- @modelcontextprotocol/sdk - サーバー実装用 MCP SDK
- remarkable - Markdown パーサー
- highlight.js - 構文ハイライト
- puppeteer - Chrome for Testing(v131.0.6778.204)を使用した最新の PDF 生成
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 に変換して時間を節約できたら、コーヒーとクロワッサンをごちそうしていただけるとうれしいです。継続的なアップデートの助けになります。
ライセンス
MIT
貢献
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。