概要
本ページでは、AIアシスタントがPDFファイルの読み取り、解析、操作を可能にする2つのMCPサーバについて記述する。
- PDF Reader MCPサーバ
- PDFファイルからのテキスト抽出、メタデータ取得、ページ操作等の読み取りに特化したMCPサーバである。
- PDF-Tools MCPサーバ
- PDFの読み取りに加えて、フォーム入力 (fill)、CSV一括入力、プロファイル管理、バリデーション等の書き込み系の機能を持つMCPサーバである。
読み取り専用の用途にはPDF Reader MCPサーバ、フォーム入力や比較が必要な用途にはPDF-Tools MCPサーバを使用する。
両サーバはStandard I/O (STDIO) トランスポートを使用してローカル環境で動作し、Claude Desktop、Claude Code、Cursor等の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 |
PDF Reader MCPサーバ
PDF Reader MCPの概要
PDF Reader MCPサーバは、AIアシスタントがPDFファイルの読み取り、解析、操作を可能にするMCP (Model Context Protocol) サーバである。
このMCPを使用することにより、Claude等のLLMがPDFドキュメントのテキスト抽出、メタデータ取得、ページ操作等を実行することができる。
PDF Reader MCPサーバは、以下に示すような機能を提供する。
- PDFファイルからのテキスト抽出
- PDFメタデータの取得 (タイトル、著者、作成日等)
- ページ数やドキュメント構造の取得
- 複数PDFファイルの同時処理
- ページ範囲指定によるテキスト抽出
- PDFテーブルデータの抽出 (一部実装)
PDF Reader MCPサーバは、Standard I/O (STDIO) トランスポートを使用してローカル環境で動作する。
これにより、Claude Desktop、Claude Code、Cursor等のMCPクライアントと統合することができる。
PDF Reader MCPの機能
テキスト抽出
- PDFドキュメント全体からのテキスト抽出
- 指定ページ範囲からのテキスト抽出
- フォーマット保持オプション
- マルチカラム対応
- レイアウト解析
メタデータ処理
- ドキュメントタイトル
- 著者情報
- 作成日時
- 修正日時
- PDFバージョン
- ページ数
- ファイルサイズ
ページ操作
- 個別ページへのアクセス
- ページ範囲指定
- ページ数の取得
- ページサイズ情報
高度な機能
- テーブルデータの抽出
- 画像情報の取得
- リンクとアノテーションの解析
- ブックマーク構造の取得
PDF Reader MCPの動作要件
システム要件
- Node.js 18以上
- Python 3.8以上 (Pythonを使用するの場合)
必須ライブラリ
Node.jsを使用する場合
- pdf-parse >= 1.1.1
- pdf-lib >= 1.17.1
- pdfjs-dist >= 3.0.0
Pythonを使用する場合
- PyPDF2 >= 3.0.0
- pdfplumber >= 0.9.0
- PyMuPDF (fitz) >= 1.22.0
- fastmcp >= 0.1.0
PDF Reader MCPのインストール
Linux
依存関係のインストール
まず、必要な環境をインストールする。
# RHEL sudo dnf install curl wget git gcc-c++ make python3 python3-pip nodejs npm unzip # SUSE sudo zypper install curl wget git gcc-c++ make python3 python3-pip nodejs npm unzip # Debian sudo apt install curl wget git build-essential python3 python3-pip nodejs npm unzip
Node.jsのインストール
Node.jsの最新版をインストールする場合は、NodeSourceリポジトリを使用する。
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
# RHEL sudo dnf install nodejs # SUSE sudo zypper install nodejs # Debian sudo apt install nodejs
Bunのインストール
Bunをインストールする。
curl -fsSL https://bun.com/install | bash
~/.profileファイル等に、環境変数 PATH を設定する。
export PATH="$BUN_INSTALL/bin:$PATH"
または、下記のURLからバンドル版をダウンロードする。
ダウンロードしたファイルを解凍する。
必要ならば、解凍したファイルを任意のディレクトリに配置する。
unzip bun-linux-x64.zip mv bun-linux-x64 <任意のディレクトリ>
~/.profileファイル等に、環境変数 PATH を設定する。
export PATH="/<Bunのインストールディレクトリ>/bin:$PATH"
PDF Reader MCPのインストール
PDF Reader MCPをダウンロードする。
git clone https://github.com/SylphxAI/pdf-reader-mcp.git cd pdf-reader-mcp
Node.jsを使用する場合、依存関係をインストールする。
npm install # エラーが表示される場合 rm -rf node_modules package-lock.json npm install --ignore-scripts npm run build # または npm install -g @sylphx/pdf-reader-mcp
Pythonを使用する場合、仮想環境を作成して依存関係をインストールする。
python3 -m venv venv # Bash / Zshの場合 source venv/bin/activate # Fishの場合 source venv/bin/activate.fish # 依存関係のインストール pip install -r requirements.txt
Windows
Node.jsの公式WebサイトからNode.jsをダウンロードしてインストールする。
Git for Windowsの公式Webサイトからインストーラをダウンロードしてインストールする。
PowerShellまたはコマンドプロンプトを開いて、PDF Reader MCPをダウンロードする。
git clone https://github.com/SylphxAI/pdf-reader-mcp.git cd pdf-reader-mcp
PDF Reader MCPの依存関係をインストールする。
npm install
PDF Reader MCPのプロジェクト構造
PDF Reader MCPサーバのプロジェクト構造を以下に示す。
pdf-reader-mcp/
├── README.md # プロジェクトドキュメント
├── package.json # Node.js依存関係 (Node.js実装)
├── requirements.txt # Python依存関係 (Python実装)
├── tsconfig.json # TypeScript設定 (Node.js実装)
├── .env.example # 環境設定の例
├── src/ # ソースコード (Node.js実装)
│ ├── index.ts # メインエントリーポイント
│ ├── tools/ # ツール実装
│ │ ├── read_pdf.ts
│ │ ├── get_metadata.ts
│ │ ├── get_page_count.ts
│ │ ├── search_pdf.ts
│ │ └── extract_table.ts
│ └── utils/ # ユーティリティ関数
│ ├── file_validator.ts
│ ├── path_resolver.ts
│ └── error_handler.ts
├── server.py # メインサーバ (Python実装)
├── tools/ # ツール実装 (Python実装)
│ ├── __init__.py
│ ├── read_pdf.py
│ ├── metadata.py
│ ├── search.py
│ └── tables.py
├── utils/ # ユーティリティ (Python実装)
│ ├── __init__.py
│ ├── validators.py
│ └── security.py
├── tests/ # テスト
│ ├── test_read_pdf.py
│ ├── test_metadata.py
│ └── test_security.py
└── docs/ # ドキュメント
├── API.md
├── USAGE.md
└── TROUBLESHOOTING.md
PDF Reader MCPのクライアント接続設定
Claude Desktopからの接続
Claude Desktopの設定ファイルを編集する。
設定ファイルの場所は、以下の通りである。
- Linux
- ~/.config/Claude/claude_desktop_config.json
- Windows
- %APPDATA%\Claude\claude_desktop_config.json
Node.jsを使用する場合の設定を以下に示す。
{
"mcpServers": {
"pdf-reader": {
"command": "node",
"args": [
"/<任意のディレクトリ>/pdf-reader-mcp/dist/index.js"
],
"env": {
"NODE_ENV": "production"
}
}
}
}
または、npm install -g @sylphx/pdf-reader-mcp コマンドを実行してインストールした場合は、以下に示す設定を行う。
{
"mcpServers": {
"pdf-reader": {
"command": "npx",
"args": ["@sylphx/pdf-reader-mcp"]
}
}
}
Pythonを使用する場合の設定を以下に示す。
{
"mcpServers": {
"pdf-reader": {
"command": "/<任意のディレクトリ>/pdf-reader-mcp/venv/bin/python",
"args": [
"/<任意のディレクトリ>/pdf-reader-mcp/server.py"
]
}
}
}
Windows環境の場合、パスを適切に変更する。
{
"mcpServers": {
"pdf-reader": {
"command": "node",
"args": [
"C:\\<任意のディレクトリ>\\pdf-reader-mcp\\dist\\index.js"
]
}
}
}
Claude Desktopを再起動して、PDF Reader MCPサーバが利用可能であることを確認する。
Clineからの接続
Clineの設定ファイルを編集する。
# Linux ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json # Windows %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
設定内容はClaude Desktopと同じフォーマットを使用する。
Cursorからの接続
Cursorのグローバル設定ファイルを編集する。
# Linux ~/.cursor/mcp.json # Windows %USERPROFILE%\.cursor\mcp.json # MacOS ~/.cursor/mcp.json
設定内容を以下に示す。
{
"mcpServers": {
"pdf-reader": {
"command": "node",
"args": ["/path/to/pdf-reader-mcp/dist/index.js"],
"autoApprove": [],
"disabled": false,
"timeout": 60,
"transportType": "stdio"
}
}
}
または、プロジェクト固有の設定として .cursor/mcp.jsonファイルをプロジェクトディレクトリに配置する。
Claude Codeからの接続
Claude Codeは、カレントディレクトリ内のMCPサーバを自動的に検出するため、追加の設定は不要である。
PDF Reader MCPの利用可能なツール
read_pdf
PDFファイル全体または指定ページ範囲からテキストを抽出する。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| file_path | string | 必須 | PDFファイルの絶対パスまたは相対パス |
| start_page | integer | オプション | 開始ページ番号 (1から始まる) |
| end_page | integer | オプション | 終了ページ番号 (1から始まる) |
- 使用例
# PDFファイル全体を読み取る 「/path/to/document.pdf」のPDFファイルを読み取ってください。 # ページ範囲を指定して読み取る 「/path/to/document.pdf」の5ページから10ページまでを読み取ってください。
- 戻り値の例
{ "text": "抽出されたテキストの内容...", "pages": 6, "file": "/path/to/document.pdf" }
get_pdf_metadata
PDFファイルのメタデータを取得する。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| file_path | string | 必須 | PDFファイルの絶対パスまたは相対パス |
- 使用例
「/path/to/document.pdf」のメタデータを取得してください。
- 戻り値の例
{ "title": "Document Title", "author": "Author Name", "subject": "Document Subject", "creator": "PDF Creator", "producer": "PDF Producer", "creation_date": "2024-01-15T10:30:00Z", "modification_date": "2024-01-20T15:45:00Z", "page_count": 42, "pdf_version": "1.7", "file_size": 1024576 }
get_pdf_page_count
PDFファイルの総ページ数を取得する。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| file_path | string | 必須 | PDFファイルの絶対パスまたは相対パス |
- 使用例
「/path/to/document.pdf」のページ数を教えてください。
- 戻り値の例
{ "page_count": 42, "file": "/path/to/document.pdf" }
extract_pdf_table
PDFファイルからテーブルデータを抽出する。
(定義により利用可能性が異なる)
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| file_path | string | 必須 | PDFファイルの絶対パスまたは相対パス |
| page_number | integer | オプション | テーブルを抽出するページ番号 |
| table_settings | object | オプション | テーブル抽出の詳細設定 |
- 使用例
「/path/to/document.pdf」の3ページ目からテーブルを抽出してください。
search_pdf
PDFファイル内でキーワードを検索する。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| file_path | string | 必須 | PDFファイルの絶対パスまたは相対パス |
| keyword | string | 必須 | 検索するキーワード |
| case_sensitive | boolean | オプション | 大文字小文字を区別するか (デフォルト : false) |
- 使用例
「/path/to/document.pdf」から「機械学習」というキーワードを検索してください。
- 戻り値の例
{ "matches": [ { "page": 5, "context": "...機械学習アルゴリズムを使用して...", "position": 234 }, { "page": 12, "context": "...機械学習モデルの訓練では...", "position": 567 } ], "total_matches": 2 }
PDF Reader MCPの使用例
基本的なPDF読み取り
- 「~/Documents/report.pdf」を読み取ってください。
- 「/home/user/papers/research.pdf」の1ページから5ページまでを読み取ってください。
メタデータ取得
- 「~/Documents/manual.pdf」のメタデータを取得してください。
- 「~/Downloads/invoice.pdf」のページ数を教えてください。
キーワード検索
- 「~/Documents/thesis.pdf」から「機械学習」というキーワードを検索してください。
- 「~/papers/article.pdf」で「neural network」を大文字小文字を区別して検索してください。
テーブル抽出
- 「~/Documents/financial_report.pdf」の3ページ目からテーブルを抽出してください。
- 「~/data/statistics.pdf」からすべてのテーブルを抽出してください。
複数ファイルの処理
- 以下のPDFファイルを全て読み取って、内容を要約してください。
- - ~/Documents/chapter1.pdf
- - ~/Documents/chapter2.pdf
- - ~/Documents/chapter3.pdf
PDF Reader MCPのトラブルシューティング
PDFファイルの読み込みに失敗する
- ファイルが存在しないエラー
- 読み込み権限エラー
- フォーマットエラー
解決方法を以下に示す。
- ファイルパスが正しいか確認する
ls -la /path/to/file.pdf
- ファイルの読み取り権限があるか確認する
chmod 644 /path/to/file.pdf
- PDFファイルが破損していないか確認する
pdfinfo /path/to/file.pdf
- PDFのバージョンが古い場合、変換を試みる
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -o output.pdf input.pdf
テキスト抽出が正しく動作しない
- 空のテキストが返される
- 文字化けが発生する
- レイアウトが崩れる
解決方法を以下に示す。
- PDFがスキャン画像ベースでないか確認する (OCRが必要)
- 異なるライブラリを試す (pdfplumber → PyMuPDF)
import fitz # PyMuPDF def read_pdf_with_pymupdf(file_path: str) -> str: doc = fitz.open(file_path) text = "" for page in doc: text += page.get_text() return text
また、エンコーディングの問題を確認する
メモリ不足エラー
- 大きなPDFファイルで処理が停止する
- メモリエラーが発生する
解決方法を以下に示す。
- ページ単位の処理を実装する
- ファイルサイズ制限を設定する
- ストリーミング処理を使用する
- Python環境のメモリ制限を増やす
PDF Reader MCPのパフォーマンスの最適化
ページ単位の処理
大規模なPDFファイルを処理する場合、ページ単位で処理することでメモリ使用量を削減できる。
def read_pdf_streaming(file_path: str, page_size: int = 10):
"""ストリーミング方式でPDFを読み込む"""
path = Path(file_path).resolve()
with pdfplumber.open(str(path)) as pdf:
total_pages = len(pdf.pages)
for start in range(0, total_pages, page_size):
end = min(start + page_size, total_pages)
batch_text = []
for page_num in range(start, end):
page = pdf.pages[page_num]
text = page.extract_text()
if text:
batch_text.append(text)
yield {
"text": "\n\n".join(batch_text),
"pages": f"{start + 1}-{end}",
"total_pages": total_pages
}
キャッシング
頻繁にアクセスされるPDFファイルのメタデータをキャッシュする。
from functools import lru_cache
import hashlib
def get_file_hash(file_path: str) -> str:
"""ファイルのハッシュ値を計算する"""
hasher = hashlib.md5()
with open(file_path, 'rb') as f:
buf = f.read(65536)
while len(buf) > 0:
hasher.update(buf)
buf = f.read(65536)
return hasher.hexdigest()
@lru_cache(maxsize=50)
def get_cached_metadata(file_path: str, file_hash: str) -> dict:
"""キャッシュされたメタデータを取得する"""
return get_pdf_metadata(file_path)
@mcp.tool()
def get_pdf_metadata_cached(file_path: str) -> dict:
"""キャッシュを使用してメタデータを取得する"""
try:
file_hash = get_file_hash(file_path)
return get_cached_metadata(file_path, file_hash)
except Exception as e:
return {"error": str(e)}
並列処理
複数のPDFファイルを同時に処理する場合、並列処理を使用する。
from concurrent.futures import ThreadPoolExecutor, as_completed
def process_multiple_pdfs(file_paths: list[str]) -> list[dict]:
"""複数のPDFファイルを並列処理する"""
results = []
with ThreadPoolExecutor(max_workers=4) as executor:
future_to_path = {
executor.submit(read_pdf, path): path
for path in file_paths
}
for future in as_completed(future_to_path):
path = future_to_path[future]
try:
result = future.result()
results.append({
"file": path,
"result": result
})
except Exception as e:
results.append({
"file": path,
"error": str(e)
})
return results
PDF Reader MCPの高度な機能
OCR統合
スキャンされたPDFファイルからテキストを抽出する場合、OCR機能を統合する。
from PIL import Image
import pytesseract
import pdf2image
def extract_text_with_ocr(file_path: str) -> str:
"""OCRを使用してスキャンPDFからテキストを抽出する"""
# PDFを画像に変換
images = pdf2image.convert_from_path(file_path)
text_content = []
for image in images:
# OCR実行
text = pytesseract.image_to_string(image, lang='jpn+eng')
text_content.append(text)
return "\n\n".join(text_content)
PDF分割
大きなPDFファイルを分割する機能を追加する。
from PyPDF2 import PdfWriter, PdfReader
@mcp.tool()
def split_pdf(
file_path: str,
output_dir: str,
pages_per_file: int = 10
) -> dict:
"""PDFファイルを複数のファイルに分割する"""
try:
path = Path(file_path).resolve()
output_path = Path(output_dir).resolve()
output_path.mkdir(exist_ok=True)
reader = PdfReader(str(path))
total_pages = len(reader.pages)
file_count = 0
for start in range(0, total_pages, pages_per_file):
writer = PdfWriter()
end = min(start + pages_per_file, total_pages)
for page_num in range(start, end):
writer.add_page(reader.pages[page_num])
output_file = output_path / f"split_{file_count + 1}.pdf"
with open(output_file, 'wb') as output:
writer.write(output)
file_count += 1
return {
"files_created": file_count,
"output_directory": str(output_path)
}
except Exception as e:
return {"error": f"分割エラー: {str(e)}"}
PDF結合
複数のPDFファイルを結合する機能を追加する。
@mcp.tool()
def merge_pdfs(
file_paths: list[str],
output_path: str
) -> dict:
"""複数のPDFファイルを結合する"""
try:
writer = PdfWriter()
for file_path in file_paths:
reader = PdfReader(file_path)
for page in reader.pages:
writer.add_page(page)
with open(output_path, 'wb') as output:
writer.write(output)
return {
"output_file": output_path,
"total_pages": len(writer.pages)
}
except Exception as e:
return {"error": f"結合エラー: {str(e)}"}
PDFブックマーク抽出
PDFファイルのブックマーク構造を取得する。
@mcp.tool()
def get_pdf_bookmarks(file_path: str) -> dict:
"""PDFファイルのブックマーク構造を取得する"""
try:
path = Path(file_path).resolve()
reader = PdfReader(str(path))
def extract_bookmarks(bookmarks, level=0):
result = []
for item in bookmarks:
if isinstance(item, list):
result.extend(extract_bookmarks(item, level + 1))
else:
result.append({
"title": item.title,
"page": reader.get_destination_page_number(item) + 1,
"level": level
})
return result
bookmarks = reader.outline
if bookmarks:
return {
"bookmarks": extract_bookmarks(bookmarks)
}
else:
return {"bookmarks": [], "message": "ブックマークが見つかりません"}
except Exception as e:
return {"error": f"ブックマーク取得エラー: {str(e)}"}
PDF-Tools MCPサーバ
PDF-Tools MCPの概要
PDF-Tools MCPサーバは、AIアシスタントがPDFフォームの入力、解析、比較、データ抽出を可能にするMCP (Model Context Protocol) サーバである。
このMCPを使用することにより、Claude等のLLMがPDFフォームへのデータ入力、CSVからの一括入力、プロファイル管理、フォームバリデーション等を実行することができる。
PDF-Tools MCPサーバは、以下に示すような機能を提供する。
- PDFドキュメントの解析 (300ページ以上に対応)
- PDFフォームフィールドの読み取りとデータ入力
- CSVファイルからのPDFフォーム一括入力
- プロファイルの保存と再利用
- 契約書等のPDF比較
- フォームバリデーション (必須フィールドのチェック)
- パスワード保護されたPDFの操作
- OCRによるスキャンドキュメントのテキスト抽出
- PDFデータのCSV出力
PDF-Tools MCPサーバは、Standard I/O (STDIO) トランスポートを使用してローカル環境で動作する。
これにより、Claude Desktop、Cursor等のMCPクライアントと統合することができる。
PDF-Tools MCPの機能
ドキュメント解析
- PDFドキュメント全体のテキスト抽出と解析
- テーブル、テキスト、構造化データの抽出
- スキャンドキュメントのOCR対応
- 300ページ以上の大規模PDFに対応
フォーム操作
- PDFフォームフィールドの一覧取得
- フォームフィールドへのデータ入力
- CSVファイルからの一括フォーム入力
- フォームバリデーション (必須フィールドのチェック)
- パスワード保護されたPDFフォームの操作
プロファイル管理
- フォームデータのプロファイル保存
- 保存済みプロファイルの読み込み
- プロファイル一覧の表示
- プロファイルを使用したフォーム入力
データ入出力
- PDFデータのCSV出力
- CSVデータからのPDF一括入力
- 契約書等のドキュメント比較
PDF-Tools MCPの動作要件
システム要件
- Node.js 18以上
- npm (Node.jsに付属)
必須ライブラリ
- @modelcontextprotocol/sdk (MCP SDK)
- pdf-lib (PDF操作)
PDF-Tools MCPのインストール
Linux
リポジトリのクローン
PDF-Tools MCPサーバのリポジトリをクローンする。
cd ~/Program/MCP_Server/ git clone https://github.com/Open-Document-Alliance/PDF-Tools.git cd PDF-Tools
依存関係のインストール
npmを使用して、依存関係をインストールする。
npm install
ESモジュールエラーの修正
Node.js v22以降の環境では、package.json ファイルに "type": "module" が設定されているが、
server/index.js がCommonJS形式の require 関数を使用しているため、以下に示すエラーが発生する場合がある。
ReferenceError: require is not defined in ES module scope, you can use import instead
この場合、package.json ファイルから "type": "module" の行を削除する。
# sedコマンドで該当行を削除する sed -i '/"type": "module"/d' package.json
または、テキストエディタで package.json ファイルを開いて、"type": "module" の行を手動で削除する。
削除後、前の行末にカンマが残ってJSONが壊れないように注意すること。
動作確認
MCP経由のstdio通信で動作するため、以下に示すコマンドで起動して即時エラーが発生しなければ正常である。
node server/index.js
Windows
Node.jsの公式WebサイトからNode.jsをダウンロードしてインストールする。
Git for Windowsの公式Webサイトからインストーラをダウンロードしてインストールする。
PowerShellまたはコマンドプロンプトを開いて、PDF-Tools MCPをダウンロードする。
git clone https://github.com/Open-Document-Alliance/PDF-Tools.git cd PDF-Tools
PDF-Tools MCPの依存関係をインストールする。
npm install
ESモジュールエラーが発生する場合は、テキストエディタで package.json ファイルを開いて、"type": "module" の行を削除する。
PDF-Tools MCPのプロジェクト構造
PDF-Tools MCPサーバのプロジェクト構造を以下に示す。
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用配布パッケージ
PDF-Tools MCPのクライアント接続設定
Claude Desktopからの接続
Claude Desktopの設定ファイルを編集する。
設定ファイルの場所は、以下の通りである。
- Linux
- ~/.config/Claude/claude_desktop_config.json
- Windows
- %APPDATA%\Claude\claude_desktop_config.json
設定内容を以下に示す。
{
"mcpServers": {
"pdf-tools": {
"command": "node",
"args": [
"/<PDF-Toolsのインストールディレクトリ>/PDF-Tools/server/index.js"
]
}
}
}
Linux環境の設定例を以下に示す。
{
"mcpServers": {
"pdf-tools": {
"command": "node",
"args": [
"/home/suse/Program/MCP_Server/PDF-Tools/server/index.js"
]
}
}
}
Windows環境の場合、パスを適切に変更する。
{
"mcpServers": {
"pdf-tools": {
"command": "node",
"args": [
"C:\\<PDF-Toolsのインストールディレクトリ>\\PDF-Tools\\server\\index.js"
]
}
}
}
Claude Desktopを再起動して、PDF-Tools MCPサーバが利用可能であることを確認する。
正常にインストールされた場合、12個のツールが有効になる。
Cursorからの接続
Cursorのグローバル設定ファイルを編集する。
# Linux ~/.cursor/mcp.json # Windows %USERPROFILE%\.cursor\mcp.json # MacOS ~/.cursor/mcp.json
設定内容を以下に示す。
{
"mcpServers": {
"pdf-filler": {
"command": "node",
"args": [
"/<PDF-Toolsのインストールディレクトリ>/PDF-Tools/server/index.js"
]
}
}
}
または、Cursor用のインストーラを使用する場合は、以下の手順で行う。
- Releasesからpdf-toolkit-mcp.zipをダウンロードする。
- ダウンロードしたファイルを解凍する。
- ターミナルで
./smart-install.shを実行する。 - Cursorを再起動する。
PDF-Tools MCPの利用可能なツール
list_pdfs
指定されたディレクトリ内のPDFファイルを一覧表示する。
- 使用例
「~/Documents」フォルダ内のPDFファイルを一覧表示してください。
read_pdf_fields
PDFファイルのフォームフィールド情報を抽出する。パスワード保護されたPDFにも対応する。
- 使用例
「~/Documents/application.pdf」のフォームフィールドを読み取ってください。
fill_pdf
PDFフォームに指定されたデータを入力する。パスワード保護されたPDFにも対応する。
- 使用例
「~/Documents/w9.pdf」にJohn Doeという名前を入力して保存してください。
bulk_fill_from_csv
CSVファイルのデータを使用して、複数のPDFフォームを一括入力する。
- 使用例
「template.pdf」に「employees.csv」のデータを一括入力してください。
save_profile
フォームデータを再利用可能なプロファイルとして保存する。
- 使用例
名前をJohn Doe、肩書をSoftware Engineerとして「work」プロファイルに保存してください。
load_profile
保存済みのプロファイルを読み込む。
list_profiles
保存されているプロファイルの一覧を表示する。
fill_with_profile
保存済みプロファイルを使用してPDFフォームに入力する。パスワード保護されたPDFにも対応する。
- 使用例
「application.pdf」を「work」プロファイルを使って入力してください。
extract_to_csv
PDFファイルからデータを抽出してCSVファイルに出力する。
- 使用例
入力済みのPDFファイルからデータを抽出して「summary.csv」に保存してください。
validate_pdf
PDFフォームの必須フィールドが入力されているかチェックする。パスワード保護されたPDFにも対応する。
- 使用例
「application.pdf」の必須フィールドがすべて入力されているか確認してください。
read_pdf_content
PDFファイルの内容を読み取って解析する。
テキストベースのPDFとスキャンされたPDFの両方に自動対応する。
- 使用例
# PDFの内容を読み取る 「/path/to/document.pdf」を読み取ってください。 # PDFの内容を要約する 「/path/to/contract.pdf」の支払い条件について教えてください。
get_pdf_resource_uri
ローカルPDFファイルのリソースURIを生成する。
ClaudeがResources APIを通じてPDFを取り込むために使用する。
PDF-Tools MCPの使用例
基本的なPDF読み取り
- 「~/Documents/report.pdf」の内容を読み取ってください。
- 「~/Documents/contract.pdf」をMarkdown形式に変換してください。
フォームフィールドの確認と入力
- 「~/Documents/w9.pdf」のフォームフィールドを表示してください。
- 「~/Documents/w9.pdf」に会社名をCompany Name LLC、住所を123 Main St、Tax IDを12-3456789として入力してください。
CSVからの一括入力
- 「template.pdf」に「employees.csv」のデータを一括入力して、「~/filled-forms/」に保存してください。
- ファイル名には「employee_name」カラムの値を使用してください。
プロファイルの活用
- 名前をJohn Doe、肩書をSoftware Engineer、会社をTech Corpとして「work」プロファイルに保存してください。
- 「application.pdf」を「work」プロファイルを使って入力してください。
パスワード保護されたPDF
- パスワード「mypassword123」を使って、暗号化されたPDFのフィールドを読み取ってください。
- パスワード「secure456」を使って、保護されたPDFにデータを入力してください。
PDF-Tools MCPのトラブルシューティング
ESモジュールエラーが発生する
以下に示すようなエラーメッセージが表示される場合がある。
ReferenceError: require is not defined in ES module scope, you can use import instead
これは、package.jsonに"type": "module"が設定されているにもかかわらず、server/index.jsがCommonJS形式のrequire()を使用しているために発生する。
解決方法を以下に示す。
- package.json ファイルから
"type": "module"の行を削除するsed -i '/"type": "module"/d' package.json
- 削除後、JSONの構文が壊れていないか確認する (末尾のカンマに注意)
node -e "JSON.parse(require('fs').readFileSync('package.json'))" && echo "OK"
Node.jsのバージョンが古い
Node.js 18以上が必要である。
バージョンを確認する。
node --version
バージョンが18未満の場合は、Node.jsを更新する。
npm installが失敗する
依存関係のインストールに失敗する場合は、以下を試す。
rm -rf node_modules package-lock.json npm install
Claude Desktopでツールが表示されない
- 設定ファイル (claude_desktop_config.json) のJSON構文が正しいか確認する。
- server/index.js ファイルのパスが正しいか確認する。
- Claude Desktopを完全に終了して再起動する。
外部リンク
PDF Reader MCP
PDF-Tools MCP
共通
- seo:
|title=PAGENAME : PDF MCP Servers (PDF Reader / PDF-Tools) | MochiuWiki |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サーバおよび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