mcpField
P
PDFluent

PDFluent

ローカル
pdfluent.com生産性01 週間前に更新

PDFluent について

PDFluentは、PDFの抽出、検索、フォーム入力を行うユーザー向けのローカルMCPサーバーです。Markdown、テキスト、表、位置情報付きブロックを返し、ファイルアクセスを許可されたディレクトリに制限します。

主な機能

  1. 01Markdown、テキスト、表の抽出
  2. 02位置情報付きブロックとメタデータの取得
  3. 03文書内の検索
  4. 04フォーム項目の一覧表示と入力
  5. 05許可ディレクトリ内にファイルアクセスを制限

活用シーン

  1. 01PDFから見出し、リスト、表を抽出する
  2. 02特定の内容が記載されたページを探す
  3. 03フォームに入力して別ファイルに保存する

MCP 対応

stdio経由で、ローカルPDFの読み取り、検索、フォーム入力ツールをMCPクライアントに提供します。文書はアップロードされず、ファイルアクセスは設定したディレクトリに限定されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pdfluent-pdfluent": {
"command": "uvx",
"args": [
"pdfluent-mcp"
],
"env": {
"PDFLUENT_MCP_MAX_PAGES": "<PDFLUENT_MCP_MAX_PAGES>",
"PDFLUENT_MCP_MAX_BYTES": "<PDFLUENT_MCP_MAX_BYTES>",
"PDFLUENT_MCP_MAX_OUTPUT_CHARS": "<PDFLUENT_MCP_MAX_OUTPUT_CHARS>"
}
}
}
}
起動コマンドuvx pdfluent-mcp
設定が必要な環境変数
PDFLUENT_MCP_MAX_PAGESPages one call may read (default 200).
PDFLUENT_MCP_MAX_BYTESLargest document the server opens, in bytes (default 104857600).
PDFLUENT_MCP_MAX_OUTPUT_CHARSLongest result one call returns, in characters (default 200000).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipdfluent-mcp0.2.0

ツール

9

掲載時のツール一覧 · 6 日前に更新

パラメーター型必須説明
pathstringはい
pagesanyいいえ
qualitystringいいえ

詳細

pdfluent-mcp

PDFluent 用の MCP サーバーです。Claude Desktop、Claude Code、Cursor、VS Code、その他あらゆる MCP クライアントで、ローカルの PDF を Markdown、プレーンテキスト、表、または位置情報付きブロックとして読み取り、メタデータを確認し、検索し、フォームフィールドに入力して新しいファイルを作成できます。

stdio で動作し、クライアントごとに 1 つのプロセスを起動して、pdfluent Python パッケージ上で実行されます。ドキュメントはお使いのマシン内に保持されます。サーバーは、許可したディレクトリ内のみを読み書きします。balanced 品質ティアではモデルファイルが必要です。pdfluent models install を実行すると、モデルファイルを一度ダウンロードします。ドキュメントがアップロードされることはありません。

ツール

ツール戻り値
extract_markdown(path, pages?, quality?)読み順に並べた Markdown 形式のドキュメントです。見出し、リスト項目、表が含まれます。柱とページ番号は除外されます。quality は fast(デフォルト)または balanced です。
extract_text(path, pages?)ページごとのプレーンテキストレイヤーです。各ページの前には `` が付加されます。
extract_tables(path, pages?)tables:各表につき 1 つのエントリーが含まれ、page、rows(セル文字列のリスト)、header_rows を持ちます。
extract_blocks(path, pages?, include_furniture?)blocks:各ブロックに kind、text、page、bbox、confidence が含まれ、該当する場合は level、ordinal、または表のセル位置も含まれます。pages_needing_vision:テキストレイヤーがないページです。
get_metadata(path)ページ数、タイトル、作成者、日付、PDF バージョン、暗号化の有無、ドキュメントにフォームフィールドがあるかどうか、署名とブックマークの数、テキストレイヤーがないページを返します。
search(path, query)query が見つかったページと、ページごとの最大 3 件の抜粋を返します。
list_form_fields(path)各フォームフィールドの name、type、value、page を返します。
fill_form(path, values, out_path, overwrite?)指定したフィールドに入力し、out_path に新しいファイルを書き込みます。入力ファイルは変更されません。既存の out_path は overwrite が true でない限り拒否され、そこにシンボリックリンクがある場合は常に拒否されます。
vision_advice(path)advice:ページごとに 1 つのエントリーがあり、needs_vision とその理由が含まれます。

すべての引数と結果において、ページ番号は 0 から始まります。confidence は、ブロックの種類を判定した学習済みモデルの確率です。モデルによる判定がない場合は null です。null は不明を意味し、低いことを意味するものではありません。

インストール

Python 3.10 以降と uv が必要です。初回使用時に uvx がサーバーと pdfluent をダウンロードし、キャッシュします。

uvx pdfluent-mcp --root ~/Documents

または、独自の環境にインストールします。

pip install pdfluent-mcp
pdfluent-mcp --root ~/Documents
許可するルート

サーバーは、指定されたルートの外には一切アクセスしません。--root(複数指定する場合は繰り返し指定)、PDFLUENT_MCP_ROOTS(Windows では : 区切り、; 区切り)でルートを指定するか、クライアントに提供させます。Claude Code は、作業ディレクトリと --add-dir で指定したディレクトリを MCP ルートとして送信します。これらのいずれからもルートが提供されない場合、サーバーはすべての呼び出しに対し、その旨を示すメッセージを返します。チェックの前にシンボリックリンクを解決するため、ルート内のリンクがルート外を指すことはできません。

ルートの範囲は、指定したディレクトリと同じです。クライアントが /、~、またはドライブ全体を MCP ルートとして提供すると、ユーザーが読み取れるすべてのものにサーバーがアクセスできるようになります。それを望まない場合は、PDF が保存されているフォルダーを --root で指定してサーバーを起動し、クライアントのルートも狭い範囲に保ってください。

さらに、次の 3 つの制限があります。--max-pages(デフォルトは 200)は、1 回の呼び出しで返すページ数です。長いドキュメントは pages を使って範囲ごとに読み取ります(エンジンは各範囲についてドキュメント全体を解析します。上限が制限するのは出力であり、処理量ではありません)。--max-bytes(デフォルトは 100 MiB)は、サーバーが開くドキュメントの最大サイズです。--max-output-chars(デフォルトは 200000)は、1 回の呼び出しで返す結果の最大文字数です。上限を超えると結果は切り詰められ、その旨が示されます。3 つの制限はそれぞれ PDFLUENT_MCP_MAX_PAGES、PDFLUENT_MCP_MAX_BYTES、PDFLUENT_MCP_MAX_OUTPUT_CHARS からも読み取られます。

以下の /path/to/documents は、PDF が保存されているディレクトリに置き換えてください。

Claude Desktop

claude_desktop_config.json に追加し(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json、Windows: %APPDATA%\Claude\claude_desktop_config.json)、Claude Desktop を再起動します:

{
  "mcpServers": {
    "pdfluent": {
      "command": "uvx",
      "args": ["pdfluent-mcp", "--root", "/path/to/documents"]
    }
  }
}

Claude Desktop が uvx を見つけられない場合は、which uvx で確認したフルパスを command に記述してください。

Claude Code
claude mcp add pdfluent -- uvx pdfluent-mcp --root /path/to/documents

Claude Code は作業ディレクトリも MCP ルートとして提供するため、プロジェクト内では claude mcp add pdfluent -- uvx pdfluent-mcp だけで十分です。チームで使用する場合は、 プロジェクトの .mcp.json に次の内容を記述します:

{
  "mcpServers": {
    "pdfluent": {
      "type": "stdio",
      "command": "uvx",
      "args": ["pdfluent-mcp"]
    }
  }
}

これらのツールを使うタイミングを Claude に伝えるには、このリポジトリの skill/pdfluent を ~/.claude/skills/pdfluent(すべてのプロジェクト向け)または 1 つのプロジェクト内の .claude/skills/pdfluent にコピーします。

Cursor

Cursor に追加 (その後、/path/to/documents を変更します)。または、~/.cursor/mcp.json もしくは プロジェクトの .cursor/mcp.json に追加します:

{
  "mcpServers": {
    "pdfluent": {
      "type": "stdio",
      "command": "uvx",
      "args": ["pdfluent-mcp", "--root", "/path/to/documents"]
    }
  }
}
VS Code

VS Code にインストール、 またはターミナルから実行します:

code --add-mcp '{"name":"pdfluent","type":"stdio","command":"uvx","args":["pdfluent-mcp","--root","/path/to/documents"]}'

または、ワークスペースの .vscode/mcp.json に追加します(キーは servers です):

{
  "servers": {
    "pdfluent": {
      "type": "stdio",
      "command": "uvx",
      "args": ["pdfluent-mcp", "--root", "/path/to/documents"]
    }
  }
}
Codex

~/.codex/config.toml に追加します:

[mcp_servers.pdfluent]
command = "uvx"
args = ["pdfluent-mcp", "--root", "/path/to/documents"]

開発

pip install -e ".[test]"
pytest

テストでは、実際の MCP クライアントを使って stdio 経由でサーバーを起動し、 tests/fixtures 内の PDF に対してすべてのツールを呼び出し、許可されたルートの外に 出ようとする操作も試します。

ライセンス

実行対象の pdfluent パッケージと同じライセンスです:AGPL-3.0-only、または PDFluent Commercial Licence。LICENSE と LICENSE-COMMERCIAL を参照してください。mcp(MIT)に 依存しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。