📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == PDF Reader MCPサーバは、AIアシスタントがPDFファイルの読み取り、解析、操作を可能にするMCP (Model Context Protocol) サーバである。<br> このMCPを使用することにより、Claude等のLLMがPDFドキュメントのテキスト抽出、メタデータ取得、ページ操作等を実行することができる。<br> <br> PDF Reader MCPサーバは、以下に示すような機能を提供する。<br> * PDFフ…」
 
編集の要約なし
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
本ページでは、AIアシスタントがPDFファイルの読み取り、解析、操作を可能にする2つのMCPサーバについて記述する。<br>
<br>
* PDF Reader MCPサーバ
*: PDFファイルからのテキスト抽出、メタデータ取得、ページ操作等の読み取りに特化したMCPサーバである。
* PDF-Tools MCPサーバ
*: PDFの読み取りに加えて、フォーム入力 (fill)、CSV一括入力、プロファイル管理、バリデーション等の書き込み系の機能を持つMCPサーバである。
<br>
読み取り専用の用途にはPDF Reader MCPサーバ、フォーム入力や比較が必要な用途にはPDF-Tools MCPサーバを使用する。<br>
両サーバはStandard I/O (STDIO) トランスポートを使用してローカル環境で動作し、Claude Desktop、Claude Code、Cursor等のMCPクライアントと統合することができる。<br>
<br>
<center>
{| class="wikitable"
|+ 2つのMCPサーバの比較
|-
! 機能 !! PDF Reader MCP !! PDF-Tools MCP
|-
| テキスト抽出 || Yes || Yes
|-
| メタデータ取得 || Yes || No
|-
| キーワード検索 || Yes || No
|-
| テーブルデータ抽出 || Yes (一部実装) || Yes
|-
| フォームフィールド読み取り || No || Yes
|-
| フォーム入力 (fill) || No || Yes
|-
| CSVからの一括フォーム入力 || No || Yes
|-
| プロファイル管理 || No || Yes
|-
| フォームバリデーション || No || Yes
|-
| PDFデータのCSV出力 || No || Yes
|-
| ドキュメント比較 || No || Yes
|-
| パスワード保護PDF対応 || No || Yes
|-
| OCR対応 || No || Yes
|-
| ページ数取得 || Yes || No
|-
| ブックマーク構造取得 || Yes || No
|}
</center>
<br><br>
= PDF Reader MCPサーバ =
==== PDF Reader MCPの概要 ====
PDF Reader MCPサーバは、AIアシスタントがPDFファイルの読み取り、解析、操作を可能にするMCP (Model Context Protocol) サーバである。<br>
PDF Reader MCPサーバは、AIアシスタントがPDFファイルの読み取り、解析、操作を可能にするMCP (Model Context Protocol) サーバである。<br>
このMCPを使用することにより、Claude等のLLMがPDFドキュメントのテキスト抽出、メタデータ取得、ページ操作等を実行することができる。<br>
このMCPを使用することにより、Claude等のLLMがPDFドキュメントのテキスト抽出、メタデータ取得、ページ操作等を実行することができる。<br>
13行目: 64行目:
PDF Reader MCPサーバは、Standard I/O (STDIO) トランスポートを使用してローカル環境で動作する。<br>
PDF Reader MCPサーバは、Standard I/O (STDIO) トランスポートを使用してローカル環境で動作する。<br>
これにより、Claude Desktop、Claude Code、Cursor等のMCPクライアントと統合することができる。<br>
これにより、Claude Desktop、Claude Code、Cursor等のMCPクライアントと統合することができる。<br>
<br><br>
<br>
 
==== PDF Reader MCPの機能 ====
== PDF Reader MCPの機能 ==
===== テキスト抽出 =====
==== テキスト抽出 ====
* PDFドキュメント全体からのテキスト抽出
* PDFドキュメント全体からのテキスト抽出
* 指定ページ範囲からのテキスト抽出
* 指定ページ範囲からのテキスト抽出
23行目: 73行目:
* レイアウト解析
* レイアウト解析
<br>
<br>
==== メタデータ処理 ====
===== メタデータ処理 =====
* ドキュメントタイトル
* ドキュメントタイトル
* 著者情報
* 著者情報
32行目: 82行目:
* ファイルサイズ
* ファイルサイズ
<br>
<br>
==== ページ操作 ====
===== ページ操作 =====
* 個別ページへのアクセス
* 個別ページへのアクセス
* ページ範囲指定
* ページ範囲指定
38行目: 88行目:
* ページサイズ情報
* ページサイズ情報
<br>
<br>
==== 高度な機能 ====
===== 高度な機能 =====
* テーブルデータの抽出
* テーブルデータの抽出
* 画像情報の取得
* 画像情報の取得
* リンクとアノテーションの解析
* リンクとアノテーションの解析
* ブックマーク構造の取得
* ブックマーク構造の取得
<br><br>
<br>
 
==== PDF Reader MCPの動作要件 ====
== 動作要件 ==
===== システム要件 =====
==== システム要件 ====
* Node.js 18以上
* Node.js 18以上
* Python 3.8以上 (Pythonを使用するの場合)
* Python 3.8以上 (Pythonを使用するの場合)
<br>
<br>
==== 必須ライブラリ ====
===== 必須ライブラリ =====
Node.js実装の場合
Node.jsを使用する場合<br>
* pdf-parse >= 1.1.1
* pdf-parse >= 1.1.1
* pdf-lib >= 1.17.1
* pdf-lib >= 1.17.1
* pdfjs-dist >= 3.0.0
* pdfjs-dist >= 3.0.0
<br>
<br>
Pythonを使用する場合
Pythonを使用する場合<br>
* PyPDF2 >= 3.0.0
* PyPDF2 >= 3.0.0
* pdfplumber >= 0.9.0
* pdfplumber >= 0.9.0
* PyMuPDF (fitz) >= 1.22.0
* PyMuPDF (fitz) >= 1.22.0
* fastmcp >= 0.1.0
* fastmcp >= 0.1.0
<br><br>
<br>
 
==== PDF Reader MCPのインストール ====
== インストール ==
===== Linux =====
==== Linux ====
====== 依存関係のインストール ======
まず、必要な環境をインストールする。<br>
まず、必要な環境をインストールする。<br>
  # RHEL
  # RHEL
  sudo dnf install curl wget git gcc-c++ make python3 python3-pip nodejs npm
  sudo dnf install curl wget git gcc-c++ make python3 python3-pip nodejs npm unzip
   
   
  # SUSE
  # SUSE
  sudo zypper install curl wget git gcc-c++ make python3 python3-pip nodejs npm
  sudo zypper install curl wget git gcc-c++ make python3 python3-pip nodejs npm unzip
   
   
  # Debian
  # Debian
  sudo apt install curl wget git build-essential python3 python3-pip nodejs npm
  sudo apt install curl wget git build-essential python3 python3-pip nodejs npm unzip
<br>
<br>
====== Node.jsのインストール ======
Node.jsの最新版をインストールする場合は、NodeSourceリポジトリを使用する。<br>
Node.jsの最新版をインストールする場合は、NodeSourceリポジトリを使用する。<br>
  curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
  curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
87行目: 137行目:
  sudo apt install nodejs
  sudo apt install nodejs
<br>
<br>
====== Bunのインストール ======
Bunをインストールする。<br>
curl -fsSL https://bun.com/install | bash
<br>
~/.profileファイル等に、環境変数 <code>PATH</code> を設定する。<br>
<syntaxhighlight lang="sh">
export PATH="$BUN_INSTALL/bin:$PATH"
</syntaxhighlight>
<br>
または、下記のURLからバンドル版をダウンロードする。<br>
* https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip
<br>
ダウンロードしたファイルを解凍する。<br>
必要ならば、解凍したファイルを任意のディレクトリに配置する。<br>
unzip bun-linux-x64.zip
mv bun-linux-x64 <任意のディレクトリ>
<br>
~/.profileファイル等に、環境変数 <code>PATH</code> を設定する。<br>
<syntaxhighlight lang="sh">
export PATH="/<Bunのインストールディレクトリ>/bin:$PATH"
</syntaxhighlight>
<br>
====== PDF Reader MCPのインストール ======
PDF Reader MCPをダウンロードする。<br>
PDF Reader MCPをダウンロードする。<br>
  git clone https://github.com/SylphxAI/pdf-reader-mcp.git
  git clone https://github.com/SylphxAI/pdf-reader-mcp.git
93行目: 166行目:
Node.jsを使用する場合、依存関係をインストールする。<br>
Node.jsを使用する場合、依存関係をインストールする。<br>
  npm install
  npm install
# エラーが表示される場合
rm -rf node_modules package-lock.json
npm install --ignore-scripts
npm run build
# または
npm install -g @sylphx/pdf-reader-mcp
<br>
<br>
Pythonを使用する場合、仮想環境を作成して依存関係をインストールする。<br>
Pythonを使用する場合、仮想環境を作成して依存関係をインストールする。<br>
101行目: 182行目:
   
   
  # Fishの場合
  # Fishの場合
  source venv/bin/activate.sh
  source venv/bin/activate.fish
   
   
  # 依存関係のインストール
  # 依存関係のインストール
  pip install -r requirements.txt
  pip install -r requirements.txt
<br>
<br>
==== Windows ====
===== Windows =====
[https://nodejs.org/ Node.jsの公式Webサイト]からNode.jsをダウンロードしてインストールする。<br>
[https://nodejs.org/ Node.jsの公式Webサイト]からNode.jsをダウンロードしてインストールする。<br>
<br>
<br>
117行目: 198行目:
PDF Reader MCPの依存関係をインストールする。<br>
PDF Reader MCPの依存関係をインストールする。<br>
  npm install
  npm install
<br><br>
<br>
 
==== PDF Reader MCPのプロジェクト構造 ====
== プロジェクト構造 ==
PDF Reader MCPサーバのプロジェクト構造を以下に示す。<br>
PDF Reader MCPサーバのプロジェクト構造を以下に示す。<br>
<br>
<br>
159行目: 239行目:
     ├── USAGE.md
     ├── USAGE.md
     └── TROUBLESHOOTING.md
     └── TROUBLESHOOTING.md
<br><br>
<br>
 
==== PDF Reader MCPのクライアント接続設定 ====
== クライアント接続設定 ==
===== Claude Desktopからの接続 =====
==== Claude Desktopからの接続 ====
Claude Desktopの設定ファイルを編集する。<br>
Claude Desktopの設定ファイルを編集する。<br>
<br>
<br>
183行目: 262行目:
         "NODE_ENV": "production"
         "NODE_ENV": "production"
       }
       }
    }
  }
}
</syntaxhighlight>
<br>
または、<code>npm install -g @sylphx/pdf-reader-mcp</code> コマンドを実行してインストールした場合は、以下に示す設定を行う。<br>
<syntaxhighlight lang="json">
{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": ["@sylphx/pdf-reader-mcp"]
     }
     }
   }
   }
195行目: 286行目:
       "command": "/<任意のディレクトリ>/pdf-reader-mcp/venv/bin/python",
       "command": "/<任意のディレクトリ>/pdf-reader-mcp/venv/bin/python",
       "args": [
       "args": [
         "/home/<ユーザ名>/mcp-servers/pdf-reader-mcp/server.py"
         "/<任意のディレクトリ>/pdf-reader-mcp/server.py"
       ]
       ]
     }
     }
218行目: 309行目:
Claude Desktopを再起動して、PDF Reader MCPサーバが利用可能であることを確認する。<br>
Claude Desktopを再起動して、PDF Reader MCPサーバが利用可能であることを確認する。<br>
<br>
<br>
==== Clineからの接続 ====
===== Clineからの接続 =====
Clineの設定ファイルを編集する。<br>
Clineの設定ファイルを編集する。<br>
  # Linux
  # Linux
228行目: 319行目:
設定内容はClaude Desktopと同じフォーマットを使用する。<br>
設定内容はClaude Desktopと同じフォーマットを使用する。<br>
<br>
<br>
==== Cursorからの接続 ====
===== Cursorからの接続 =====
Cursorのグローバル設定ファイルを編集する。<br>
Cursorのグローバル設定ファイルを編集する。<br>
  # Linux
  # Linux
236行目: 327行目:
  %USERPROFILE%\.cursor\mcp.json
  %USERPROFILE%\.cursor\mcp.json
   
   
  # macOS
  # MacOS
  ~/.cursor/mcp.json
  ~/.cursor/mcp.json
<br>
<br>
257行目: 348行目:
または、プロジェクト固有の設定として .cursor/mcp.jsonファイルをプロジェクトディレクトリに配置する。<br>
または、プロジェクト固有の設定として .cursor/mcp.jsonファイルをプロジェクトディレクトリに配置する。<br>
<br>
<br>
==== Claude Codeからの接続 ====
===== Claude Codeからの接続 =====
Claude Codeは、カレントディレクトリ内のMCPサーバを自動的に検出するため、追加の設定は不要である。<br>
Claude Codeは、カレントディレクトリ内のMCPサーバを自動的に検出するため、追加の設定は不要である。<br>
<br><br>
<br>
 
==== PDF Reader MCPの利用可能なツール ====
== 利用可能なツール ==
===== read_pdf =====
==== read_pdf ====
PDFファイル全体または指定ページ範囲からテキストを抽出する。<br>
PDFファイル全体または指定ページ範囲からテキストを抽出する。<br>
<br>
<br>
297行目: 387行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== get_pdf_metadata ====
===== get_pdf_metadata =====
PDFファイルのメタデータを取得する。<br>
PDFファイルのメタデータを取得する。<br>
<br>
<br>
329行目: 419行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== get_pdf_page_count ====
===== get_pdf_page_count =====
PDFファイルの総ページ数を取得する。<br>
PDFファイルの総ページ数を取得する。<br>
<br>
<br>
353行目: 443行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== extract_pdf_table ====
===== extract_pdf_table =====
PDFファイルからテーブルデータを抽出する。(定義により利用可能性が異なる)<br>
PDFファイルからテーブルデータを抽出する。<br>
(定義により利用可能性が異なる)<br>
<br>
<br>
<center>
<center>
373行目: 464行目:
*: <pre>「/path/to/document.pdf」の3ページ目からテーブルを抽出してください。</pre>
*: <pre>「/path/to/document.pdf」の3ページ目からテーブルを抽出してください。</pre>
<br>
<br>
==== search_pdf ====
===== search_pdf =====
PDFファイル内でキーワードを検索する。<br>
PDFファイル内でキーワードを検索する。<br>
<br>
<br>
411行目: 502行目:
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br>
 
=== PDF Reader MCPの使用例 ===
== 使用例 ==
===== 基本的なPDF読み取り =====
==== 基本的なPDF読み取り ====
* 「~/Documents/report.pdf」を読み取ってください。
* 「~/Documents/report.pdf」を読み取ってください。
* 「/home/user/papers/research.pdf」の1ページから5ページまでを読み取ってください。
* 「/home/user/papers/research.pdf」の1ページから5ページまでを読み取ってください。
<br>
<br>
==== メタデータ取得 ====
===== メタデータ取得 =====
* 「~/Documents/manual.pdf」のメタデータを取得してください。
* 「~/Documents/manual.pdf」のメタデータを取得してください。
* 「~/Downloads/invoice.pdf」のページ数を教えてください。
* 「~/Downloads/invoice.pdf」のページ数を教えてください。
<br>
<br>
==== キーワード検索 ====
===== キーワード検索 =====
* 「~/Documents/thesis.pdf」から「機械学習」というキーワードを検索してください。
* 「~/Documents/thesis.pdf」から「機械学習」というキーワードを検索してください。
* 「~/papers/article.pdf」で「neural network」を大文字小文字を区別して検索してください。
* 「~/papers/article.pdf」で「neural network」を大文字小文字を区別して検索してください。
<br>
<br>
==== テーブル抽出 ====
===== テーブル抽出 =====
* 「~/Documents/financial_report.pdf」の3ページ目からテーブルを抽出してください。
* 「~/Documents/financial_report.pdf」の3ページ目からテーブルを抽出してください。
* 「~/data/statistics.pdf」からすべてのテーブルを抽出してください。
* 「~/data/statistics.pdf」からすべてのテーブルを抽出してください。
<br>
<br>
==== 複数ファイルの処理 ====
===== 複数ファイルの処理 =====
* 以下のPDFファイルを全て読み取って、内容を要約してください。
* 以下のPDFファイルを全て読み取って、内容を要約してください。
*: - ~/Documents/chapter1.pdf
*: - ~/Documents/chapter1.pdf
*: - ~/Documents/chapter2.pdf
*: - ~/Documents/chapter2.pdf
*: - ~/Documents/chapter3.pdf
*: - ~/Documents/chapter3.pdf
<br><br>
<br>
 
==== PDF Reader MCPのトラブルシューティング ====
== トラブルシューティング ==
===== PDFファイルの読み込みに失敗する =====
==== PDFファイルの読み込みに失敗する ====
* ファイルが存在しないエラー
* ファイルが存在しないエラー
* 読み込み権限エラー
* 読み込み権限エラー
453行目: 542行目:
*: <pre>gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -o output.pdf input.pdf</pre>
*: <pre>gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -o output.pdf input.pdf</pre>
<br>
<br>
==== テキスト抽出が正しく動作しない ====
===== テキスト抽出が正しく動作しない =====
* 空のテキストが返される
* 空のテキストが返される
* 文字化けが発生する
* 文字化けが発生する
474行目: 563行目:
また、エンコーディングの問題を確認する<br>
また、エンコーディングの問題を確認する<br>
<br>
<br>
==== メモリ不足エラー ====
===== メモリ不足エラー =====
* 大きなPDFファイルで処理が停止する
* 大きなPDFファイルで処理が停止する
* メモリエラーが発生する
* メモリエラーが発生する
483行目: 572行目:
* ストリーミング処理を使用する
* ストリーミング処理を使用する
* Python環境のメモリ制限を増やす
* Python環境のメモリ制限を増やす
<br><br>
<br>
 
==== PDF Reader MCPのパフォーマンスの最適化 ====
== パフォーマンスの最適化 ==
===== ページ単位の処理 =====
==== ページ単位の処理 ====
大規模なPDFファイルを処理する場合、ページ単位で処理することでメモリ使用量を削減できる。<br>
大規模なPDFファイルを処理する場合、ページ単位で処理することでメモリ使用量を削減できる。<br>
<br>
<br>
493行目: 581行目:
     """ストリーミング方式でPDFを読み込む"""
     """ストリーミング方式でPDFを読み込む"""
     path = Path(file_path).resolve()
     path = Path(file_path).resolve()
   
     with pdfplumber.open(str(path)) as pdf:
     with pdfplumber.open(str(path)) as pdf:
        total_pages = len(pdf.pages)
        total_pages = len(pdf.pages)
       
        for start in range(0, total_pages, page_size):
        for start in range(0, total_pages, page_size):
            end = min(start + page_size, total_pages)
          end = min(start + page_size, total_pages)
           
            batch_text = []
          batch_text = []
            for page_num in range(start, end):
          for page_num in range(start, end):
                page = pdf.pages[page_num]
              page = pdf.pages[page_num]
                text = page.extract_text()
              text = page.extract_text()
                if text:
              if text:
                    batch_text.append(text)
                batch_text.append(text)
           
            yield {
          yield {
                "text": "\n\n".join(batch_text),
              "text": "\n\n".join(batch_text),
                "pages": f"{start + 1}-{end}",
              "pages": f"{start + 1}-{end}",
                "total_pages": total_pages
              "total_pages": total_pages
            }
          }
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== キャッシング ====
===== キャッシング =====
頻繁にアクセスされるPDFファイルのメタデータをキャッシュする。<br>
頻繁にアクセスされるPDFファイルのメタデータをキャッシュする。<br>
<br>
<br>
546行目: 634行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 並列処理 ====
===== 並列処理 =====
複数のPDFファイルを同時に処理する場合、並列処理を使用する。<br>
複数のPDFファイルを同時に処理する場合、並列処理を使用する。<br>
<br>
<br>
578行目: 666行目:
     return results
     return results
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br>
 
==== PDF Reader MCPの高度な機能 ====
== 高度な機能 ==
===== OCR統合 =====
==== OCR統合 ====
スキャンされたPDFファイルからテキストを抽出する場合、OCR機能を統合する。<br>
スキャンされたPDFファイルからテキストを抽出する場合、OCR機能を統合する。<br>
<br>
<br>
603行目: 690行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== PDF分割 ====
===== PDF分割 =====
大きなPDFファイルを分割する機能を追加する。<br>
大きなPDFファイルを分割する機能を追加する。<br>
<br>
<br>
628行目: 715行目:
           writer = PdfWriter()
           writer = PdfWriter()
           end = min(start + pages_per_file, total_pages)
           end = min(start + pages_per_file, total_pages)
 
           for page_num in range(start, end):
           for page_num in range(start, end):
             writer.add_page(reader.pages[page_num])
             writer.add_page(reader.pages[page_num])
 
           output_file = output_path / f"split_{file_count + 1}.pdf"
           output_file = output_path / f"split_{file_count + 1}.pdf"
           with open(output_file, 'wb') as output:
           with open(output_file, 'wb') as output:
             writer.write(output)
             writer.write(output)
 
           file_count += 1
           file_count += 1
 
       return {
       return {
           "files_created": file_count,
           "files_created": file_count,
           "output_directory": str(output_path)
           "output_directory": str(output_path)
       }
       }
 
     except Exception as e:
     except Exception as e:
       return {"error": f"分割エラー: {str(e)}"}
       return {"error": f"分割エラー: {str(e)}"}
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== PDF結合 ====
===== PDF結合 =====
複数のPDFファイルを結合する機能を追加する。<br>
複数のPDFファイルを結合する機能を追加する。<br>
<br>
<br>
677行目: 764行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== PDFブックマーク抽出 ====
===== PDFブックマーク抽出 =====
PDFファイルのブックマーク構造を取得する。<br>
PDFファイルのブックマーク構造を取得する。<br>
<br>
<br>
714行目: 801行目:
<br><br>
<br><br>


== 外部リンク ==
= PDF-Tools MCPサーバ =
* [https://github.com/SylphxAI/pdf-reader-mcp GitHub Repository]
==== PDF-Tools MCPの概要 ====
PDF-Tools MCPサーバは、AIアシスタントがPDFフォームの入力、解析、比較、データ抽出を可能にするMCP (Model Context Protocol) サーバである。<br>
このMCPを使用することにより、Claude等のLLMがPDFフォームへのデータ入力、CSVからの一括入力、プロファイル管理、フォームバリデーション等を実行することができる。<br>
<br>
PDF-Tools MCPサーバは、以下に示すような機能を提供する。<br>
* PDFドキュメントの解析 (300ページ以上に対応)
* PDFフォームフィールドの読み取りとデータ入力
* CSVファイルからのPDFフォーム一括入力
* プロファイルの保存と再利用
* 契約書等のPDF比較
* フォームバリデーション (必須フィールドのチェック)
* パスワード保護されたPDFの操作
* OCRによるスキャンドキュメントのテキスト抽出
* PDFデータのCSV出力
<br>
PDF-Tools MCPサーバは、Standard I/O (STDIO) トランスポートを使用してローカル環境で動作する。<br>
これにより、Claude Desktop、Cursor等のMCPクライアントと統合することができる。<br>
<br>
==== PDF-Tools MCPの機能 ====
===== ドキュメント解析 =====
* PDFドキュメント全体のテキスト抽出と解析
* テーブル、テキスト、構造化データの抽出
* スキャンドキュメントのOCR対応
* 300ページ以上の大規模PDFに対応
<br>
===== フォーム操作 =====
* PDFフォームフィールドの一覧取得
* フォームフィールドへのデータ入力
* CSVファイルからの一括フォーム入力
* フォームバリデーション (必須フィールドのチェック)
* パスワード保護されたPDFフォームの操作
<br>
===== プロファイル管理 =====
* フォームデータのプロファイル保存
* 保存済みプロファイルの読み込み
* プロファイル一覧の表示
* プロファイルを使用したフォーム入力
<br>
===== データ入出力 =====
* PDFデータのCSV出力
* CSVデータからのPDF一括入力
* 契約書等のドキュメント比較
<br>
==== PDF-Tools MCPの動作要件 ====
===== システム要件 =====
* Node.js 18以上
* npm (Node.jsに付属)
<br>
===== 必須ライブラリ =====
* @modelcontextprotocol/sdk (MCP SDK)
* pdf-lib (PDF操作)
<br>
==== PDF-Tools MCPのインストール ====
===== Linux =====
====== リポジトリのクローン ======
PDF-Tools MCPサーバのリポジトリをクローンする。<br>
cd ~/Program/MCP_Server/
git clone https://github.com/Open-Document-Alliance/PDF-Tools.git
cd PDF-Tools
<br>
====== 依存関係のインストール ======
npmを使用して、依存関係をインストールする。<br>
npm install
<br>
====== ESモジュールエラーの修正 ======
Node.js v22以降の環境では、<u>package.json</u> ファイルに <code>"type": "module"</code> が設定されているが、<br>
<u>server/index.js</u> がCommonJS形式の <code>require</code> 関数を使用しているため、以下に示すエラーが発生する場合がある。<br>
<br>
ReferenceError: require is not defined in ES module scope, you can use import instead
<br>
この場合、<u>package.json</u> ファイルから <code>"type": "module"</code> の行を削除する。<br>
# sedコマンドで該当行を削除する
sed -i '/"type": "module"/d' package.json
<br>
または、テキストエディタで <u>package.json</u> ファイルを開いて、<code>"type": "module"</code> の行を手動で削除する。<br>
<br>
<u>削除後、前の行末にカンマが残ってJSONが壊れないように注意すること。</u><br>
<br>
====== 動作確認 ======
MCP経由のstdio通信で動作するため、以下に示すコマンドで起動して即時エラーが発生しなければ正常である。<br>
node server/index.js
<br>
===== Windows =====
[https://nodejs.org/ Node.jsの公式Webサイト]からNode.jsをダウンロードしてインストールする。<br>
<br>
[https://git-scm.com/ Git for Windowsの公式Webサイト]からインストーラをダウンロードしてインストールする。<br>
<br>
PowerShellまたはコマンドプロンプトを開いて、PDF-Tools MCPをダウンロードする。<br>
git clone https://github.com/Open-Document-Alliance/PDF-Tools.git
cd PDF-Tools
<br>
PDF-Tools MCPの依存関係をインストールする。<br>
npm install
<br>
ESモジュールエラーが発生する場合は、テキストエディタで <u>package.json</u> ファイルを開いて、<code>"type": "module"</code> の行を削除する。<br>
<br>
== PDF-Tools MCPのプロジェクト構造 ==
PDF-Tools MCPサーバのプロジェクト構造を以下に示す。<br>
<br>
PDF-Tools/
├── README.md                      # プロジェクトドキュメント
├── package.json                    # Node.js依存関係
├── manifest.json                  # Claude Desktop Extension メタデータ
├── manifest.mcpb.json              # MCPB パッケージメタデータ
├── icon.png                        # 拡張機能アイコン
├── index.html                      # 拡張機能ページ
├── server/                        # MCPサーバ実装
│  └── index.js                    # メインエントリーポイント (12ツール定義)
├── pdf-toolkit-mcp-share/          # Cursor用共有パッケージ
├── docs/                          # ドキュメント
│  ├── MAINTAINERS.md
│  ├── RELEASE.md
│  └── SUPPORT.md
├── package-for-friend.js          # Cursor用インストーラ生成スクリプト
├── pdf-toolkit-mcp.mcpb            # Claude Desktop用パッケージ
└── pdf-toolkit-mcp.zip            # Cursor用配布パッケージ
<br>
==== PDF-Tools MCPのクライアント接続設定 ====
===== Claude Desktopからの接続 =====
Claude Desktopの設定ファイルを編集する。<br>
<br>
設定ファイルの場所は、以下の通りである。<br>
* Linux
*: ~/.config/Claude/claude_desktop_config.json
* Windows
*: %APPDATA%\Claude\claude_desktop_config.json
<br>
設定内容を以下に示す。<br>
<syntaxhighlight lang="json">
{
  "mcpServers": {
    "pdf-tools": {
      "command": "node",
      "args": [
        "/<PDF-Toolsのインストールディレクトリ>/PDF-Tools/server/index.js"
      ]
    }
  }
}
</syntaxhighlight>
<br>
Linux環境の設定例を以下に示す。<br>
<syntaxhighlight lang="json">
{
  "mcpServers": {
    "pdf-tools": {
      "command": "node",
      "args": [
        "/home/suse/Program/MCP_Server/PDF-Tools/server/index.js"
      ]
    }
  }
}
</syntaxhighlight>
<br>
Windows環境の場合、パスを適切に変更する。<br>
<syntaxhighlight lang="json">
{
  "mcpServers": {
    "pdf-tools": {
      "command": "node",
      "args": [
        "C:\\<PDF-Toolsのインストールディレクトリ>\\PDF-Tools\\server\\index.js"
      ]
    }
  }
}
</syntaxhighlight>
<br>
Claude Desktopを再起動して、PDF-Tools MCPサーバが利用可能であることを確認する。<br>
正常にインストールされた場合、12個のツールが有効になる。<br>
<br>
===== Cursorからの接続 =====
Cursorのグローバル設定ファイルを編集する。<br>
# Linux
~/.cursor/mcp.json
# Windows
%USERPROFILE%\.cursor\mcp.json
# MacOS
~/.cursor/mcp.json
<br>
設定内容を以下に示す。<br>
<syntaxhighlight lang="json">
{
  "mcpServers": {
    "pdf-filler": {
      "command": "node",
      "args": [
        "/<PDF-Toolsのインストールディレクトリ>/PDF-Tools/server/index.js"
      ]
    }
  }
}
</syntaxhighlight>
<br>
または、Cursor用のインストーラを使用する場合は、以下の手順で行う。<br>
# [https://github.com/Open-Document-Alliance/PDF-Tools/releases/latest Releases]からpdf-toolkit-mcp.zipをダウンロードする。
# ダウンロードしたファイルを解凍する。
# ターミナルで<code>./smart-install.sh</code>を実行する。
# Cursorを再起動する。
<br>
==== PDF-Tools MCPの利用可能なツール ====
===== list_pdfs =====
指定されたディレクトリ内のPDFファイルを一覧表示する。<br>
<br>
* 使用例
*: <pre>「~/Documents」フォルダ内のPDFファイルを一覧表示してください。</pre>
<br>
===== read_pdf_fields =====
PDFファイルのフォームフィールド情報を抽出する。パスワード保護されたPDFにも対応する。<br>
<br>
* 使用例
*: <pre>「~/Documents/application.pdf」のフォームフィールドを読み取ってください。</pre>
<br>
===== fill_pdf =====
PDFフォームに指定されたデータを入力する。パスワード保護されたPDFにも対応する。<br>
<br>
* 使用例
*: <pre>「~/Documents/w9.pdf」にJohn Doeという名前を入力して保存してください。</pre>
<br>
===== bulk_fill_from_csv =====
CSVファイルのデータを使用して、複数のPDFフォームを一括入力する。<br>
<br>
* 使用例
*: <pre>「template.pdf」に「employees.csv」のデータを一括入力してください。</pre>
<br>
===== save_profile =====
フォームデータを再利用可能なプロファイルとして保存する。<br>
<br>
* 使用例
*: <pre>名前をJohn Doe、肩書をSoftware Engineerとして「work」プロファイルに保存してください。</pre>
<br>
===== load_profile =====
保存済みのプロファイルを読み込む。<br>
<br>
===== list_profiles =====
保存されているプロファイルの一覧を表示する。<br>
<br>
===== fill_with_profile =====
保存済みプロファイルを使用してPDFフォームに入力する。パスワード保護されたPDFにも対応する。<br>
<br>
* 使用例
*: <pre>「application.pdf」を「work」プロファイルを使って入力してください。</pre>
<br>
===== extract_to_csv =====
PDFファイルからデータを抽出してCSVファイルに出力する。<br>
<br>
* 使用例
*: <pre>入力済みのPDFファイルからデータを抽出して「summary.csv」に保存してください。</pre>
<br>
===== validate_pdf =====
PDFフォームの必須フィールドが入力されているかチェックする。パスワード保護されたPDFにも対応する。<br>
<br>
* 使用例
*: <pre>「application.pdf」の必須フィールドがすべて入力されているか確認してください。</pre>
<br>
===== read_pdf_content =====
PDFファイルの内容を読み取って解析する。<br>
テキストベースのPDFとスキャンされたPDFの両方に自動対応する。<br>
<br>
* 使用例
*: <syntaxhighlight lang="text">
# PDFの内容を読み取る
「/path/to/document.pdf」を読み取ってください。
# PDFの内容を要約する
「/path/to/contract.pdf」の支払い条件について教えてください。
</syntaxhighlight>
<br>
===== get_pdf_resource_uri =====
ローカルPDFファイルのリソースURIを生成する。<br>
ClaudeがResources APIを通じてPDFを取り込むために使用する。<br>
<br>
==== PDF-Tools MCPの使用例 ====
===== 基本的なPDF読み取り =====
* 「~/Documents/report.pdf」の内容を読み取ってください。
* 「~/Documents/contract.pdf」をMarkdown形式に変換してください。
<br>
===== フォームフィールドの確認と入力 =====
* 「~/Documents/w9.pdf」のフォームフィールドを表示してください。
* 「~/Documents/w9.pdf」に会社名をCompany Name LLC、住所を123 Main St、Tax IDを12-3456789として入力してください。
<br>
===== CSVからの一括入力 =====
* 「template.pdf」に「employees.csv」のデータを一括入力して、「~/filled-forms/」に保存してください。
* ファイル名には「employee_name」カラムの値を使用してください。
<br>
===== プロファイルの活用 =====
* 名前をJohn Doe、肩書をSoftware Engineer、会社をTech Corpとして「work」プロファイルに保存してください。
* 「application.pdf」を「work」プロファイルを使って入力してください。
<br>
===== パスワード保護されたPDF =====
* パスワード「mypassword123」を使って、暗号化されたPDFのフィールドを読み取ってください。
* パスワード「secure456」を使って、保護されたPDFにデータを入力してください。
<br>
==== PDF-Tools MCPのトラブルシューティング ====
===== ESモジュールエラーが発生する =====
以下に示すようなエラーメッセージが表示される場合がある。<br>
ReferenceError: require is not defined in ES module scope, you can use import instead
<br>
これは、<code>package.json</code>に<code>"type": "module"</code>が設定されているにもかかわらず、<code>server/index.js</code>がCommonJS形式の<code>require()</code>を使用しているために発生する。<br>
<br>
解決方法を以下に示す。<br>
* <u>package.json</u> ファイルから <code>"type": "module"</code> の行を削除する
*: <pre>sed -i '/"type": "module"/d' package.json</pre>
* 削除後、JSONの構文が壊れていないか確認する (末尾のカンマに注意)
*: <pre>node -e "JSON.parse(require('fs').readFileSync('package.json'))" && echo "OK"</pre>
<br>
===== Node.jsのバージョンが古い =====
Node.js 18以上が必要である。<br>
バージョンを確認する。<br>
node --version
<br>
バージョンが18未満の場合は、Node.jsを更新する。<br>
<br>
===== npm installが失敗する =====
依存関係のインストールに失敗する場合は、以下を試す。<br>
rm -rf node_modules package-lock.json
npm install
<br>
===== Claude Desktopでツールが表示されない =====
* 設定ファイル (<u>claude_desktop_config.json</u>) のJSON構文が正しいか確認する。
* <u>server/index.js</u> ファイルのパスが正しいか確認する。
* Claude Desktopを完全に終了して再起動する。
<br><br>
 
= 外部リンク =
==== PDF Reader MCP ====
* [https://github.com/SylphxAI/pdf-reader-mcp PDF Reader MCPのGithub]
* [https://glama.ai/mcp/servers/@SylphxAI/pdf-reader-mcp PDF Reader MCP on Glama]
* [https://glama.ai/mcp/servers/@SylphxAI/pdf-reader-mcp PDF Reader MCP on Glama]
* [https://lobehub.com/ja/mcp/bach-ai-tools-pdf-reader-mcp LobeHub MCP Directory]
<br>
==== PDF-Tools MCP ====
* [https://github.com/Open-Document-Alliance/PDF-Tools PDF-ToolsのGithub]
* [https://www.opendocuments.ai/ Open Document Alliance 公式サイト]
<br>
==== 共通 ====
* [https://modelcontextprotocol.io/ Model Context Protocol公式サイト]
* [https://modelcontextprotocol.io/ Model Context Protocol公式サイト]
<br><br>
<br><br>




{{#seo:
#seo:
|title={{PAGENAME}} : PDF Reader MCP Server | MochiuWiki
|title=PAGENAME : PDF MCP Servers (PDF Reader / PDF-Tools) | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,MCP,Model Context Protocol,PDF,PDF Reader,Document Processing,Claude,AI,Machine Learning,Python,Node.js,TypeScript,PDF Processing,Document Analysis
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,MCP,Model Context Protocol,PDF,PDF Reader,PDF Tools,PDF Filler,Document Processing,Claude,AI,Machine Learning,Python,Node.js,TypeScript,PDF Processing,Document Analysis,Form Filling
|description={{PAGENAME}} - PDF Reader MCPサーバに関する包括的なガイド、AIアシスタントによるPDF操作の統合 | This page is {{PAGENAME}} in our wiki about PDF Reader MCP servers and AI-powered document processing
|description=PAGENAME - PDF Reader MCPサーバおよびPDF-Tools MCPサーバに関する包括的なガイド、AIアシスタントによるPDF操作の統合 | This page is PAGENAME in our wiki about PDF MCP servers and AI-powered document processing
|image=/resources/assets/MochiuLogo_Single_Blue.png
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}
 


__FORCETOC__
__FORCETOC__
[[カテゴリ:その他]]
[[カテゴリ:設定]]