mcpField
P
pdf-extract-mcp

pdf-extract-mcp

ローカル
github.com/diyaluo金融データ02 週間前に更新

pdf-extract-mcp について

pdf-extract-mcpは、請求書や銀行明細など、テキストレイヤーを持つデジタルPDFから表とテキストを抽出するMCPサーバーです。CSV、JSON、Excelへの構造化出力と個人情報の自動マスキングに対応し、スキャンPDFは受け付けません。

主な機能

  1. 01デジタルPDFから表とテキストを抽出
  2. 02Base64データまたはPDF URLに対応
  3. 03CSV、JSON、XLSXで出力
  4. 043種類の方式による表検出
  5. 05個人情報をデフォルトでマスキング
  6. 06スキャンPDFや画像のみのPDFを拒否

活用シーン

  1. 01銀行明細の表をCSVに変換
  2. 02請求書データをJSONまたはExcelに整形
  3. 03識別情報を伏せた抽出データの共有

MCP 対応

PDF抽出用の`extract_pdf`ツールと、サービス状態や無料枠を確認する`health`ツールを公開します。ローカルstdioまたはリモートのstreamable HTTPで実行できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"diyaluo-pdf-extract": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/diyaluo/pdf-extract-mcp:v0.3.0"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/diyaluo/pdf-extract-mcp:v0.3.0

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

パッケージ
ocighcr.io/diyaluo/pdf-extract-mcp:v0.3.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

pdf-extract-mcp

デジタル(テキストレイヤー付き)PDF(銀行取引明細書、請求書、料金明細書)から表とテキストを抽出し、自動でPIIをマスキングして CSV / JSON / Excel に出力する Model Context Protocol(MCP)サーバーです。

invoice-extractor 製品の一部です。このパッケージはMCPの配布チャネルです(「エコシステムに寄生する存在」:1つのバックエンドで多様なホストのワークフローに対応)。Webデモは親プロジェクトにあります。

できること

  • extract_pdf — デジタルPDF(base64またはURL)をアップロードし、構造化された表の行をCSV / JSONレコード / XLSXで取得します。
  • health — サービスの状態と無料枠の上限を確認します。

表の検出では、ページごとに3つの方法を試します。罫線付きの表 → ヘッダー行自体のx座標から列を明示的に導出(グリッド線のない明細書PDFに対応。欧米の銀行では一般的です)→ 汎用的なテキスト配置。

PIIのマスキング(デフォルトで有効)では、次の情報を対象とします。

地域マスキング対象
米国/国際SSN、EIN/TIN、IBAN、SWIFT/BIC、ルーティング番号/ABA、口座番号、カード番号(通常の形式と 4111 1111 1111 1111 /ハイフン区切りの形式)、米国および国際電話番号、メールアドレス
中国18桁/15桁の国民ID、携帯電話番号、銀行カード、USCC(统一社会信用代码)、パスポート、2~3文字の個人名、組織を示すキーワード

番号だけでは判別しにくい銀行識別番号(ルーティング番号/口座番号/ソートコード)は、ラベルに続く場合に限りマスキングされます。そのため、照会番号や金額は読み取れる状態に保たれます。金額、日付、摘要は変更されません。

スキャンされたPDFや画像のみのPDFは、明示的に拒否されます(SCANNED_PDF_UNSUPPORTED)。無料枠で対応するのはデジタルPDFのみです(OCRは有料枠の候補です)。

制限(無料枠)

  • クライアントごとに、30日間のローリング期間で100ページ(匿名、クライアントのハッシュで識別)。
  • ファイルあたり50 MB。
  • 上限を超えると、ツールはアップグレード案内を含む構造化された QUOTA_EXCEEDED 応答を返します。請求が通知なく発生することはありません。
  • PDF_EXTRACT_API_KEY に有料キーを設定すると、クォータを回避できます(課金ゲートウェイはP1項目です。現在の無料枠では有料キーは発行されていません)。

実行(ローカルstdio — Claude Desktop / Cursor / 任意のMCPクライアント)

pip install -e .
pdf-extract-mcp

クライアント設定の例:

{
  "mcpServers": {
    "pdf-extract": {
      "command": "pdf-extract-mcp",
      "env": {}
    }
  }
}

実行(リモートのstreamable-http、ホスト型MCPクライアント向け)

REMOTE_TRANSPORT=http MCP_HOST=127.0.0.1 MCP_PORT=5060 \
  python -m pdf_extract_mcp.server
# POST JSON-RPC to http://127.0.0.1:5061/mcp

ツールスキーマ

extract_pdf(
  pdf_base64: str | None,     # preferred: PDF bytes as base64
  pdf_url:    str | None,     # alternative: direct https .pdf URL
  output:     "csv"|"json"|"xlsx",   # default csv
  redact_pii: bool = true,
  api_key:    str | None,    # paid key, optional
) -> {
  ok, type: "tables"|"text", pages, tables, rows, columns,
  csv | rows_json | xlsx_base64,   # depends on output
  elapsed_ms
}

テレメトリ

すべての呼び出しは、ベストエフォートで(抽出を妨げることなく) ~/.cache/pdf-extract-mcp/mcp_usage.jsonl に追記されます(PDF_EXTRACT_STATE_DIR で変更できます)。クライアントはソルト付きハッシュとして記録されます。PDFの内容やPIIがログに記録されることはありません。

注:配布されるstdioバンドルでは、このファイルはユーザーのマシンに保存されるため、配布元は読み取れません。実際の外部利用状況は、ホスティングレジストリのオーナーAPIから取得します(Smitheryでは GET /servers/{namespace}/{name}/logs を実行すると呼び出し回数が返されます)。

技術スタック

mcp >= 1.2(mcp 1.xのFastMCPとmcp 2.xのMCPServerの両方で動作)、pdfplumber、openpyxl。pandasは任意です。インストールされていない場合、パッケージは軽量な行のリスト形式の表にフォールバックします(標準ライブラリのCSV/JSONとopenpyxlを使用)。これにより配布バンドルを小さく保てます。Python 3.10以降。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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