PDF(ファイル形式)とは
PDF は、文書・資料・契約書・論文・スキャン画像などを「どの環境でも同じ見た目」で配布できるファイル形式です。電子契約書・社内マニュアル・営業資料・学術論文・スキャン領収書など、業務文書の事実上の標準形式として使われています。
ただし PDF は「そのままでは AI に読ませにくい」という弱点があります。テキスト埋め込み済み・スキャン画像・表・図など中身が雑多で、特に何百ページにも及ぶ巨大 PDF を AI のコンテキストに全部入れるのはトークン消費・処理時間の両面で現実的ではありません。pdf-mcp はこの問題を解決するために設計された PDF 専門ツールです。
これは公式提供ではなく、有志が作った非公式ツールです。
PDF × AI でできること
この MCP サーバーを導入すると、巨大 PDF も AI が部分的に読み・検索し・抽出できます。
🔍 関連箇所だけ抽出
「300 ページ仕様書から API エンドポイントだけ表にして」
→ 検索 + 該当ページ読み込み
🖼️ スキャン PDF を OCR
「スキャン領収書 PDF から日付・金額・取引先を抽出して」
→ Tesseract OCR + 構造化抽出
📑 章単位アクセス
「論文の第 3 章だけ読んで要約して」
→ 目次取得 + 該当ページ範囲アクセス
🧠 セマンティック検索
「この技術書から transformer の章を探して」
→ pdf-mcp[semantic] でハイブリッド検索(BM25 + ベクトル)
提供される主なツール
pdf-mcp が公式に提供するツール(全 8 種):
| ツール名 | 役割 |
|---|---|
pdf_info | PDF のメタデータ・ページ数・目次を取得(まず最初に呼ぶことが公式推奨) |
pdf_read_pages | ページ範囲を指定してテキスト・画像を読み込み(OCR 対応) |
pdf_read_all | PDF 全体を読み込み(小さい PDF 専用・大きい PDF は pdf_read_pages 推奨) |
pdf_render_pages | PDF ページを画像レンダリング(vision モデルに直接見せたいとき) |
pdf_search | PDF 内テキスト検索(pdf-mcp[semantic] 拡張で BM25 + ベクトルのハイブリッド検索に発展) |
pdf_get_toc | 目次(ブックマーク)を取得 |
pdf_cache_stats | キャッシュ統計の確認(削除はしない) |
pdf_cache_clear | キャッシュ削除(既定は期限切れエントリのみ。expired_only=False 指定で全削除) |
「まず pdf_info で構造を把握 → pdf_search で関連箇所を絞り込み → pdf_read_pages で該当箇所だけ読む」というフローが、巨大 PDF をコンテキスト溢れなく扱う鍵です。
pdf-mcp について
pdf-mcp は、コミュニティメンバー jztan 氏が公開する PDF 処理特化の MCP サーバーです。PyPI pdf-mcp として配布され、uvx コマンドで起動します。PyMuPDF をエンジンとして、AI が大きな PDF をコンテキスト溢れなく扱えるように設計されています。
文書情報の取得(メタデータ / トークン推定 / OCR 候補判定)、ページ範囲指定の読み取り、表構造の抽出、画像レンダリング、ハイブリッド検索(BM25 + セマンティック)まで、PDF 周りの処理を 1 つの MCP で完結できます。SQLite キャッシュで一度処理した PDF は高速に再アクセス可能。OCR やセマンティック検索はオプショナル拡張のため、軽量起動も可能です。
スペック
- 配布形態: PyPI パッケージ(
pdf-mcp)+uvxランナー(Python 3.10+) - 認証: 不要(ローカルファイル / URL いずれも。URL 取得は HTTPS 限定・SSRF 対策あり)
- 提供元: コミュニティ実装(jztan/pdf-mcp)/ MIT
- 対応範囲: PDF テキスト・表・画像抽出 / OCR / 検索 / セマンティック検索 / キャッシュ
- オプション:
pdf-mcp[semantic](ハイブリッド検索・fastembed + numpy 約 67MB) / システム Tesseract(OCR) - 公式リポジトリ: github.com/jztan/pdf-mcp
クラウド OCR との使い分け: ローカルで完結させたい・機密文書を扱う場合は本 MCP(Tesseract)、大量 / 複雑レイアウト / 多言語混在の場合は Mistral OCR MCP(クラウド・高精度)が適しています。
導入手順
前提条件
- uv または Python 3.10+
- (任意)Tesseract — OCR を使う場合のみ・システムレベルでインストール
- macOS:
brew install tesseract - Linux:
sudo apt-get install tesseract-ocr - Windows: UB-Mannheim 公式インストーラ
- macOS:
- (任意)日本語 OCR を使う場合は
tesseract-ocr-jpn言語パック
ステップ
- ページ上部のタブから使用環境を選択し、JSON 設定をコピー
- コピーした JSON を設定ファイルに追記して保存
- クライアントを再起動
uvx pdf-mcp が初回実行時に PyPI からパッケージを取得・起動します。
セマンティック検索を使う場合: 設定の args を ["pdf-mcp[semantic]"] に変更するか、pip install 'pdf-mcp[semantic]' を実行(約 67MB の fastembed + numpy が追加)。
注意事項
- Python 3.10+ が必要です。
- OCR 機能はオプショナルです。スキャン PDF を扱わない場合は Tesseract のインストール不要で軽量に起動できます。
- 環境変数
PDF_MCP_CACHE_DIR(デフォルト~/.cache/pdf-mcp)とPDF_MCP_CACHE_TTL(デフォルト 24 時間)でキャッシュ挙動を制御可能。 - 表抽出(
pdf_read_pagesの table extraction)は構造化データ(header + rows)として返されます。 - 日本語 PDF(テキスト埋め込み済み)は PyMuPDF が直接読み取りますが、スキャン画像 PDF を日本語 OCR するには Tesseract に
jpn.traineddataを追加してください。 - OCR の言語指定の初期値は英語です(
ocr_langの既定値がeng)。日本語のスキャン PDF をそのまま読ませると文字化けします(編集部が 2026-06-12 に実機確認)。AI への依頼に「日本語の書類なので OCR は日本語(jpn)で」と一言添えるか、ocr_lang="jpn"を指定してください。同検証では数字の細部の誤読(「8,234」→「8.234」のカンマ誤読)も確認しており、金額・日付を使う際は原本確認をおすすめします。 - 本サーバーはコミュニティ実装(jztan 氏)です。サポート契約等はありません(OSS としての MIT ライセンス提供)。
設定方法
MCP は、お使いの対応アプリ(クライアント)に下記の設定を貼り付けて使います。 タブからアプリを選び、表示された設定をコピーしてください。
Claude Desktop / Claude Code: Claude Desktop(公式デスクトップアプリ)と Claude Code(公式CLI)は同じ JSON を使います。Desktop は設定ファイルに貼り付け、Claude Code は `.mcp.json` に記述するか `claude mcp add` で追加します。
{
"mcpServers": {
"pdf": {
"command": "uvx",
"args": ["pdf-mcp"]
}
}
}
Cursor: AI 機能を内蔵したコードエディタ(`~/.cursor/mcp.json` に記述)
{
"mcpServers": {
"pdf": {
"command": "uvx",
"args": ["pdf-mcp"]
}
}
}
Cline: VS Code に追加する AI アシスタント拡張(設定画面の MCP Servers から記述)
{
"mcpServers": {
"pdf": {
"command": "uvx",
"args": ["pdf-mcp"]
}
}
}
Gemini CLI: Google の AI CLI。設定形式は Claude Desktop と同じで、`~/.gemini/settings.json` の `mcpServers` に記述するか `gemini mcp add` で追加します。
{
"mcpServers": {
"pdf": {
"command": "uvx",
"args": ["pdf-mcp"]
}
}
}
OpenAI Codex: OpenAI の CLI/IDE。設定は TOML 形式で `~/.codex/config.toml` に記述します(下記は左の JSON から自動変換した参考値です)。
[mcp_servers.pdf]
command = "uvx"
args = ["pdf-mcp"]VS Code: VS Code(GitHub Copilot のエージェント)。`mcp.json` の `servers` キーに記述します(下記は左の JSON から自動変換した参考値です)。
{
"servers": {
"pdf": {
"type": "stdio",
"command": "uvx",
"args": [
"pdf-mcp"
]
}
}
}※ Gemini CLI は Claude Desktop と同じ mcpServers 形式のため同一の JSON を表示しています。Codex / VS Code タブの設定は、上記 JSON を各公式スキーマ(Codex=~/.codex/config.toml の TOML 形式 / VS Code=mcp.json の servers キー)へ 自動変換した参考値です。貼り付け前にお使いのバージョンの公式ドキュメントもご確認ください。
主なユースケース
- 「この 300 ページの仕様書 PDF から API エンドポイントだけ抜き出して表にして」と頼むだけで、必要な箇所をピンポイント抽出できる
- 「スキャン PDF の領収書から日付・金額・取引先を抽出して」と OCR 機能で画像化された PDF からテキスト化してくれる
- 「論文 PDF の第 3 章だけ読んで要約して」と目次取得 + 章単位アクセスで効率的に読める
- 「この技術書から `transformer` の章を探して」とハイブリッド検索(`pdf-mcp[semantic]`)で意味検索もできる
プラットフォーム別の注意事項
- WindowsPowerShell からの `uvx` 実行に追加設定は不要です。OCR を使う場合は別途 Tesseract(システムレベル)のインストールが必要です([公式インストーラ](https://github.com/UB-Mannheim/tesseract/wiki))。
セットアップ・利用上の注意
- 導入・前提OCR 機能はオプショナルでシステム Tesseract が必要。日本語 PDF を OCR したい場合は `tesseract-ocr-jpn` 言語パックを併せてインストールしてください(README には記載なし / Tesseract の標準フローに準拠)。ハイブリッド検索を使うなら `pdf-mcp[semantic]` 拡張をインストール(fastembed + numpy 約 67MB)。