claimseed について
claimseedは、抽出器やエージェントのテスト向けに合成米国医療請求書類を扱うMCPサーバーです。再現可能な文書を生成・PDF化し、埋め込まれた誤りや誤認用項目を含めて正解データと照合します。
主な機能
- 01文書タイプとシナリオの一覧
- 02データと正解データの生成
- 03ページ画像とPDFのレンダリング
- 04抽出結果と誤り検出の採点
- 05スキーマとテスト用プロンプト
活用シーン
- 01医療請求書の項目抽出テスト
- 02誤りや誤認用項目の検出評価
- 03再現可能なPDFテスト文書の作成
MCP 対応
MCPサーバーとして、文書の一覧表示、生成、レンダリング、検証ツールを提供します。スキーマやシナリオカタログ、テストセットを計画するプロンプトも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @claimseed/mcpCLAIMSEED_WORKSPACEFolder for the PDF and ground-truth files (it writes nowhere else); without one, nothing is writtenCLAIMSEED_CHROMEChrome or Chromium binary used for rendering, if not installed in a usual placeローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@claimseed/mcp
エージェントがclaimseedの合成医療請求用サンプル文書を一覧表示、生成、レンダリングできるMCPサーバーです。レンダリングされた文書はページ画像として返され、チャットクライアントでは会話内に表示されます。フォルダーを指定した場合は、そのフォルダーにPDFと正解データも保存されます。stdio経由で動作し、指定したフォルダー以外には何も書き込まず、クライアントが指定したファイルを読み取ることもありません。ネットワークアクセスもAPIキーも不要です。
実行方法
Node.js 22.13以降が必要です。レンダリングにはChromeまたはChromiumが必要です(CLAIMSEED_CHROME=/path/to/chromeを指定するか、一般的な場所にインストールしてください)。一覧表示とgenerate_dataには必要ありません。
チャットで文書を確認し、ファイルを保存しない場合:
{ "mcpServers": { "claimseed": { "command": "npx", "args": ["-y", "@claimseed/mcp"] } } }
各PDFと正解データもファイルとして保存するには、フォルダーを指定します。
{
"mcpServers": {
"claimseed": {
"command": "npx",
"args": ["-y", "@claimseed/mcp", "--workspace", "/absolute/path/to/claimseed-out"]
}
}
}
チェックアウトしたリポジトリから実行する場合:node packages/mcp/src/cli.js(ファイルを保存するには--workspace ./outを追加します)。Dockerを使う場合は、公開済みイメージghcr.io/claimseed/claimseed-mcp(Chromiumがイメージに含まれています。:latestまたは:0.1.0などのバージョンタグを指定します)を使うか、リポジトリのルートにあるDockerfileからイメージをビルドします(docker build -t claimseed-mcp .を実行し、以下ではイメージ名としてclaimseed-mcpを使用します)。
docker run -i --rm --network none --read-only --tmpfs /tmp --cap-drop ALL --security-opt no-new-privileges \
--user "$(id -u):$(id -g)" -v "$PWD/claimseed-out:/work" ghcr.io/claimseed/claimseed-mcp
(イメージは/workに書き込みます。ファイルを保存しない場合は、-vマウントを省略し、-e CLAIMSEED_WORKSPACE=を追加してください。)
{ "mcpServers": { "claimseed": { "command": "docker",
"args": ["run", "-i", "--rm", "--network", "none", "--read-only", "--tmpfs", "/tmp", "--cap-drop", "ALL",
"--security-opt", "no-new-privileges", "--user", "1000:1000",
"-v", "/absolute/path/to/claimseed-out:/work", "ghcr.io/claimseed/claimseed-mcp"] } } }
このサーバーはMCPレジストリにio.github.claimseed/claimseedとして登録されています。
フォルダー内のファイルを自分のものにするには、1000:1000を自分のユーザーIDとグループID(id -u、id -g)に置き換えてください。Chromium独自のサンドボックスにはコンテナ内で使えない権限が必要なため、イメージ内ではサンドボックスなしで実行されます。そのため、上記のフラグでネットワーク、ケイパビリティ、書き込み可能なファイルシステムを無効にし、コンテナをセキュリティ境界として使用しています。
ツール
| ツール | 機能 |
|---|---|
list_document_types | 各タイプ(msn、itemized-bill、ppo-eob、hmo-eob)と、その説明およびシナリオです。 |
describe_document_type | 1 つのタイプに属するすべてのシナリオです。説明、期間、請求件数、挿入されるエラー(種類、重大度、ルール)、公開されている情報源を確認できます。 |
generate_data | レンダリングせずに、1 つのドキュメントのデータと正解データを生成します。何も書き込まれません。 |
render_document | 1 つのドキュメントをレンダリングし、ページ画像、正解データ、PDF の SHA-256、ページ数を返します。ワークスペースを指定すると、PDF と正解データの JSON もそこに書き込み、両方のパスを返します。 |
verify_document | 抽出ツールまたは請求監査ツールが 1 つのドキュメントについて報告した内容を、正解データと照合して採点します。フィールドの正確性(誤読または見落としたパスを含む)、エラーの再現率と適合率、誤警報、誤りとして検出されたデコイを確認できます。何もレンダリングまたは書き込みされません。 |
引数は、タイプ、シナリオのスラッグ、シードです(英字、数字、.、_、- を使用でき、最大 64 文字)。同じタイプ、シナリオ、シードを指定すると、常に同じデータが生成されます。また、同じ Chrome ビルドを使用する Linux では、同じ PDF バイト列が生成されます。
render_document は、次の引数も受け取ります。
preview:none、first、allのいずれかを指定し、画像として返すページを選択します(ワークスペースを指定しない場合のデフォルトはall、指定した場合はfirstです)。ページは長辺が 1200 ピクセルの PNG(JPEG のままでも収まる場合は JPEG)で、1 回の結果に含まれる画像データは最大CLAIMSEED_MCP_PREVIEW_KB(デフォルトは 800 KB。一部のクライアントで許容されるツール結果の上限 1 MB 未満)です。結果には、含まれるページと続きを取得する方法が示されます。最初に要求したページは必ず含まれ、収まるように縮小するか JPEG に変換されます。非常に低い上限を超える場合でも、最小サイズで含まれます。from_page:画像として返す最初のページです(デフォルトは 1)。1 回の結果に含める余地がなかったページを確認できます。include_pdf:PDF 本体も結果に埋め込んで返します。同じ上限に算入されます。PDF が収まる場合、ページ画像には残りの容量が使われます(画像を無理に含めることはありません)。PDF だけで上限を超える場合は PDF が省略され、そのことが結果に示されます(pdfEmbedded: false)。
verify_document は、ドキュメントのタイプ、シナリオ、シードと、schema://extractor-output の形式によるレポートである output を受け取ります。fields は、正解データのフィールドパス(documents[0].fields のキー)と読み取った値を対応付け、errors は { kind, fieldRef or lineRef } を列挙します。現在の claimseed のバージョンを使い、シードから正解データを再構築します。照合方法は @claimseed/core の verify コマンドに準拠します。金額はセント単位まで、日付は ISO 形式、M/D/YYYY 形式、または "April 11, 2026" と照合し、テキストは大文字と小文字を区別せずに照合します。エラーは種類と明細行が一致すると検出されます。重複請求の場合は、どちらの明細行でも一致として扱われます。デコイ(誤りに見えるもののルールに従っている明細行)へのフラグは誤警報です。レンダリングした一連のドキュメント全体を採点するには、claimseed-core batch と claimseed-core verify --manifest を使用します。
リソース:schema://ground-truth(正解データの JSON Schema)、schema://extractor-output(verify_document が採点するレポート)、catalog://scenarios、catalog://mutations(エラーとデコイを適用する操作)、docs://error-taxonomy、policy://synthetic-data、ui://claimseed/preview(以下の MCP Apps ビュー)です。プロンプト:
build_test_case(目標と、任意でタイプを指定すると、期待される結果を含む小規模なテストセットを計画してレンダリングします)。
チャットでドキュメントを表示する
render_document の結果には、標準の MCP 画像コンテンツとしてページ画像が含まれ、構造化コンテンツとして正解データが含まれます。また、ページと注入されたエラーの表を表示する MCP Apps ビュー(_meta.ui.resourceUri = "ui://claimseed/preview")が指定されています。表示内容はクライアントによって異なります。
| クライアント | 表示内容 |
|---|---|
| MCP Apps に対応するクライアント(ChatGPT、Claude、VS Code など) | 会話内のビュー。返されたすべてのページと注入されたエラーが表示されます。 |
| 画像コンテンツを表示するクライアント(Claude Desktop、claude.ai、MCP Inspector) | ツールの結果に含まれるページ画像。 |
| 画像をモデルにのみ渡すクライアント(複数のコマンドラインエージェント) | テキストの概要。モデルはページを見て、その内容を説明できます。 |
すべてのクライアントがテキストの概要と構造化された正解データを受け取ります。ビューは単一で完結したページです。何も読み込まず(Content-Security-Policy で許可されている画像は data: のみです)、ホストとの通信には MCP Apps メッセージのみを使用し、すべての値をテキストとして表示します。また、ホストのスタイル変数から取得するのは色とフォントの値のみです。
ChatGPT は HTTPS 経由で MCP サーバーに接続するため、stdio サーバーにはブリッジと公開アドレスが必要です。サードパーティ製ツールを使う方法の一例です(確認済みのバージョンを固定してください)。npx -y [email protected] --stdio "npx -y @claimseed/mcp" --outputTransport streamableHttp --stateful --port 8000 を実行し、トンネルを使ってポート 8000 を公開します(例:cloudflared tunnel --url http://localhost:8000)。次に、ChatGPT の開発者モードで https://<tunnel address>/mcp をコネクターとして追加します。トンネルのアドレスを知っている人は、サーバーの実行中に誰でも呼び出せます。ワークスペースがなければ何も書き込まれませんが、使い終わったらトンネルを停止してください。
制限と安全性
- フォルダーは1つ、またはなし。 ワークスペースがない場合、サーバーはファイルを保存しません。ブラウザーは Chrome と同様に、実行中はシステムの一時フォルダー(コンテナー内ではメモリー上の
/tmp)に一時プロファイルを保持します。このプロファイルはブラウザーを閉じたとき、レンダリングが1分間行われなかったとき、またはサーバーが停止したときに削除されます。プロセスが強制終了された場合に限り、プロファイルが残ります。ワークスペースがある場合、サーバーが書き込むのはワークスペースフォルダー(--workspaceまたはCLAIMSEED_WORKSPACE)だけです。このフォルダーは存在している必要があり、/またはホームフォルダーを指定することはできません。ファイル名(<type>_<scenario>_<seed>_<random>.pdfおよび.ground-truth.json)はすべてサーバーが決定し、ファイルは排他的に作成され、シンボリックリンク経由で作成されることはありません。実行中にフォルダーが移動されたり、リンクに置き換えられたりした場合、サーバーは停止します。 - クォータ。
CLAIMSEED_MCP_QUOTA_MB(既定値は 500)は、出力の合計サイズを制限します。サイズは実行ごとに台帳(.claimseed-mcp.json)に記録され、各ファイルのサイズと SHA-256 が含まれます。クォータを超えた場合、サーバーは現在の実行で作成したファイルのうち、最も古いものから削除します。ただし、削除するのはサーバーが書き込んだ状態と完全に一致するファイルだけです。削除権限は台帳ではなくメモリーに保持されるため、台帳を編集してもファイルが削除されることはありません。以前の実行で作成された出力も含め、その他のファイルは一切削除されません。それらのファイルだけでクォータがいっぱいになった場合、一部を削除するまでレンダリングは拒否されます。フォルダーごとにサーバーを1つだけ実行してください。 - 時間と負荷。 サーバープロセスごとに共有ブラウザーを1つ使用します。同時にレンダリングできる数は
CLAIMSEED_MCP_CONCURRENCYで指定します(既定値は 2、最大 4)。さらに最大 4 件まで待機でき、それを超えるとレンダリングはビジー状態として拒否されます。CLAIMSEED_MCP_TIMEOUT_MS(既定値は 30000)を超えて時間がかかったレンダリングは失敗し、ブラウザーが再起動されます。その時点で同時に実行中だった別のレンダリングも失敗しますが、再試行できます。レンダリングが1分間行われないと、ブラウザーは閉じられます。4 MB を超えるプロトコルメッセージを受信すると、サーバーは終了します。 - レンダリングは
@claimseed/coreと同様に制限されています。HTML はメモリーから印刷され、JavaScript は無効、CSP は厳格に設定され、リクエストのインターセプトと無効なプロキシが使用されます(SECURITY.mdを参照)。上記のフラグを指定して Docker イメージを実行してください。 - ページ画像は、同じブラウザーのページ上で PDF.js(PDF.js)を使い、スタンプ付き PDF から描画されます。 そのページは専用のブラウザーコンテキストで実行され、レンダリングごとに閉じられます。ページ上ではスクリプト(PDF.js)が実行されますが、開くのはサーバーが直前にレンダリングした PDF だけです。PDF.js とそのフォントだけをこのパッケージから読み込み(メモリーから配信)、PDF 内のスクリプトは無効で、ネットワークアクセスもありません。画像には PDF と同様にサンプルの帯と透かしが表示され、各画像ファイルのメタデータにはサンプルのテキストが含まれます(PNG の
tEXt、または JPEG の Exif とコメント)。 - レポートには上限があり、内容がそのまま返されることはありません。
verify_documentは、フィールドが 5,000 個、エラーが 1,000 個、パスが 200 文字、値が 1,000 文字を超えるレポートや、その他の不正な形式のレポートを拒否します。メッセージには位置情報のみが記載されます。結果に含まれるのは件数、割合、解答キーのパス、種類、デコイ ID です。呼び出し元が送信した内容は返されず、レポート内の情報がファイルパスとして使われることもありません。 - 出力にはマークが付けられます。 すべてのページにサンプルの帯と透かしが付き、PDF のメタデータには合成サンプルであることが記載されます。ツールの引数によってこれを無効にすることはできません。適切な使用方法については
policy://synthetic-dataを参照してください。
開発
npm test -w @claimseed/mcp # end to end through the MCP client over stdio; rendering tests need Chrome
npm run sync-resources -w @claimseed/mcp # after changing schemas/ or the two documents in docs/ it serves
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。