Skip to main content
Glama
h-ucchi

PDF Tools MCP Server

by h-ucchi
README.md
# PDF Tools MCP Server

PDFファイルを操作するためのModel Context Protocol (MCP) サーバーです。Claude Desktop、Claude CodeなどのMCPクライアントから利用できます。

## 特徴

✨ **特定のページだけを除外したPDFファイルを簡単に作成できます**

他のPDFツールでは「特定のページを抽出」する機能は一般的ですが、このツールでは逆に「特定のページだけを除外」する機能を提供しています。例えば、31ページあるPDFから7ページ目だけを削除したい場合、残りの30ページをすべて指定する必要がなく、除外したいページ番号だけを指定できます。

✨ **PDFのページを自由な順序に並び替えられます**

ページの並び替え機能により、PDFのページ順序を簡単に変更できます。スキャンミスで順番が入れ違ったページを修正したり、特定のページを先頭に持ってきたりする作業が直感的に行えます。

## 機能

- **merge_pdfs** - 複数のPDFファイルを1つに結合
- **split_pdf** - PDFを1ページずつのファイルに分割
- **extract_pages** - PDFから特定のページを抽出
- **extract_text** - PDFからテキストを抽出
- **exclude_pages** ⭐ - PDFから特定のページを除外した新しいPDFを作成
- **reorder_pages** - PDFのページを指定した順序に並び替える
- **get_pdf_info** - PDFの情報(ページ数、タイトル、作成者など)を取得

## インストール

```bash
# リポジトリをクローン
git clone https://github.com/h-ucchi/pdf-mcp-server.git
cd pdf-mcp-server

# 依存関係をインストール
npm install

# ビルド
npm run build
```

## 使い方

### Claude Desktop(デスクトップアプリ)での利用

1. Claude Desktopの設定ファイルを開く

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%/Claude/claude_desktop_config.json`

2. 以下の設定を追加

```json
{
  "mcpServers": {
    "pdf-tools": {
      "command": "node",
      "args": ["/絶対パス/pdf-mcp-server/build/index.js"]
    }
  }
}
```

**重要**: `/絶対パス/`の部分を実際のプロジェクトパスに置き換えてください。

3. Claude Desktopを再起動

4. Claude Desktopで自然言語でPDF操作を依頼

```
PDFから5ページ目を抽出して
複数のPDFを結合して
PDFの7ページ目を除外したファイルを作成して
```

### Claude Code(CLI)での利用

1. MCPサーバーを登録

```bash
claude mcp add --transport stdio pdf-tools -- node /path/to/pdf-mcp-server/build/index.js
```

2. Claude Codeで自然言語でPDF操作を依頼

```
PDFから5ページ目を抽出して
複数のPDFを結合して
PDFの7ページ目を除外したファイルを作成して
PDFの3, 7, 15ページを除いたファイルを作成して
```

3. MCPサーバーの確認

```bash
# 登録されているMCPサーバーを確認
claude mcp list
```

## 使用例

### ページの除外(特徴的な機能)
```
document.pdfから7ページ目を除いたファイルを作成して
→ 31ページから7ページ目だけを削除した30ページのPDFが作成されます

presentation.pdfから3, 7, 15ページを除外して
→ 複数ページを一度に除外できます
```

### ページの抽出
```
document.pdfから5ページ目を抽出して
```

### PDF結合
```
フォルダ内の全PDFを結合して
```

### PDF分割
```
report.pdfを1ページずつ分割して
```

### ページの並び替え
```
PDFの3ページ目と5ページ目を入れ替えて
→ ページの順序を自由に並び替えられます

5ページ目を先頭に持ってきて
→ [5, 1, 2, 3, 4, 6, 7, ...] の順に並び替えられます
```

## 技術スタック

- [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk) - MCP実装
- [pdf-lib](https://github.com/Hopding/pdf-lib) - PDF操作
- [pdf-parse](https://github.com/modesty/pdf-parse) - PDFテキスト抽出
- TypeScript

## 開発

```bash
# ビルド
npm run build

# 開発モード(ファイル監視)
npm run build -- --watch
```

## トラブルシューティング

### Claude Desktopで「Server disconnected」エラーが出る

**原因**: macOSのセキュリティ制限により、Claude DesktopがDesktopフォルダ内のファイルにアクセスできない場合があります。

**解決策**: プロジェクトをホームディレクトリに配置してください。

```bash
# プロジェクトをホームディレクトリに移動
mv ~/Desktop/pdf-mcp-server ~/pdf-mcp-server

# 設定ファイルのパスを更新
# ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "pdf-tools": {
      "command": "node",
      "args": ["/Users/YOUR_USERNAME/pdf-mcp-server/build/index.js"]
    }
  }
}

# Claude Desktopを再起動
```

### ログの確認方法

Claude Desktopのログを確認して、詳細なエラー情報を取得できます。

```bash
# macOS
tail -f ~/Library/Logs/Claude/mcp-server-pdf-tools.log

# Windows
type %USERPROFILE%\AppData\Local\Claude\Logs\mcp-server-pdf-tools.log
```

### MCPサーバーが起動するか確認

```bash
# ターミナルで直接実行してテスト
node /path/to/pdf-mcp-server/build/index.js
# "PDF Tools MCP Server started" と表示されれば正常
```

## 関連リンク

- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Claude Code](https://github.com/anthropics/claude-code)