supplier-statement-check について
supplier-statement-checkは、仕入先明細の未決済項目と買掛金台帳のエクスポートを比較するローカルMCPサーバーです。追跡可能な差異の証拠を必要とする経理チーム向けで、元の行を保持し、照合結果を説明し、参照番号の重複を安全に組み合わせない設計です。
主な機能
- 01明細書と台帳の未決済項目を比較
- 02欠落項目や金額・日付の不一致を検出
- 03元の行を証拠として保持
- 04重複キーを曖昧として扱う
- 05ページ分割レポートとCSV出力
活用シーン
- 01仕入先明細を買掛金エクスポートと照合
- 02片側だけにある請求書を調査
- 03金額や伝票日付の不一致を追跡
- 04確認用に照合証拠を出力
MCP 対応
MCPサーバーは、提供された明細書と台帳レコードの比較、レポートの閲覧とページ取得、CSV出力、保存レポートの管理ツールを公開します。ローカルで動作し、ERPへの接続や元文書の取得は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
仕入先明細書照合 MCP サーバー
提供された仕入先明細書と買掛金未決済項目のエクスポートを比較します。 片方にしか存在しない請求書やクレジットノート、未決済金額や日付の不一致、 安全に照合できない重複参照を検出します。このローカル MCP サーバーはすべての元の行を保持し、各検出結果について説明します。 提供された2つの未決済項目リストを確認します。期首/期末残高の照合、 支払いの照合、ERP への接続、PDF の読み取り、支払いの承認は行いません。
theluckystrike が開発しました。MIT。サポート:[email protected]。
インストール前に試す
ブラウザーで無料の仕入先明細書の例を実行する。 合成データの例を使って、未記載項目や金額/日付の不一致を確認できます。 ブラウザー版の証明機能とこのサーバーは、同じ比較コアを使用します。ローカル サーバーの無料プランでは、アカウントも API キーも必要ありません。 製品とインストールのオプション。
| タスク | こちらから開始 |
|---|---|
| 仕入先/ベンダーの明細書にある未決済項目と、AP の未決済項目エクスポートを比較する | このサーバー:supplier_statement_check。 |
| 提供された請求書履歴全体から、重複した請求書参照を見つける | 仕入先請求書の重複レビュー。 |
| 請求書の明細を発注書および受領確認済みの商品と照合する | 3者間請求書照合。 |
これらの比較には、該当するソースデータが必要です。不足している 書類の取得や支払いの承認は行いません。詳細な診断と CSV は引き続き無料です。有料 アップグレードでは、保存できるレポート数の上限のみがなくなります。
インストール
Node.js 18 以降と MCP クライアントが必要です。Claude Desktop では、
supplier-statement-check.mcpb v0.25.0 パッケージを開けます。
その他のクライアントでは、以下のソースをビルドできます。npm パッケージは公開されていません。
npx @theluckystrike/mcp-supplier-statement-check はインストール方法として利用できません。
git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers
npm install
node scripts/bootstrap-timezone.mjs
npm run build --workspace @theluckystrike/mcp-license
npm run build --workspace @theluckystrike/mcp-supplier-statement-check
これらのコマンドでは、共有ライセンス依存関係とこのサーバーのみをビルドします。以下の
/absolute/path は、ソースをチェックアウトした場所に置き換えてください。MCP クライアントが
node を見つけられない場合は、実行ファイルのフルパスを使用してください。
Claude Desktop:macOS では
~/Library/Application Support/Claude/claude_desktop_config.json、Windows では
%APPDATA%\Claude\claude_desktop_config.json の mcpServers にマージします。
{"mcpServers":{"supplier-statement-check":{"command":"node","args":["/absolute/path/mcp-servers/servers/supplier-statement-check/dist/index.js"]}}}
Claude Code:
claude mcp add supplier-statement-check -- node /absolute/path/mcp-servers/servers/supplier-statement-check/dist/index.js
Cursor:プロジェクト内の .cursor/mcp.json または ~/.cursor/mcp.json にマージします。
{"mcpServers":{"supplier-statement-check":{"type":"stdio","command":"node","args":["/absolute/path/mcp-servers/servers/supplier-statement-check/dist/index.js"]}}}
VS Code:.vscode/mcp.json の servers の下にエントリーを追加します。
{"servers":{"supplier-statement-check":{"type":"stdio","command":"node","args":["/absolute/path/mcp-servers/servers/supplier-statement-check/dist/index.js"]}}}
Windsurf のレガシー Cascade エージェント:~/.codeium/windsurf/mcp_config.json で、Claude Desktop の
mcpServers エントリーを使用します。このファイルは Cascade に適用されます。別の
エージェントでは、異なる設定方法を使用する場合があります。
Cline:MCP Servers、Configure、Configure MCP Servers を開き、次を追加します。
{"mcpServers":{"supplier-statement-check":{"type":"stdio","command":"node","args":["/absolute/path/mcp-servers/servers/supplier-statement-check/dist/index.js"],"disabled":false,"autoApprove":[]}}}
これらはローカルの stdio 設定です。このサーバーにはホスト型エンドポイントもブラウザー
チャットコネクターもありません。クライアントを再接続し、license_status を呼び出してから、
以下の例を実行してください。ツールの検出だけでは、比較が検証されたことにはなりません。
ツール
| ツール | 入力と結果 |
|---|---|
supplier_statement_check | as_of、statement_records、ledger_records、省略可能な save:false。すべての証拠、または無料のプレビュー ID 付きのページ分割された概要。 |
report_list | 省略可能な offset:0、limit:20(最大 100)。保存済み UUID と件数の概要。 |
report_get | 保存済みの id。検証済みのソース行と再計算された比較結果。 |
report_page | 保存済みまたはプレビューの id、section、省略可能な offset、limit(最大 100)、group_id。すべてのソース証拠。 |
report_delete | 保存済みの id。ローカルレポートを 1 件削除し、保存枠を空けます。 |
report_export_csv | 保存済みまたはプレビューの id、省略可能な offset、limit(最大 2000)。元のソース項目 1 件につき 1 行の CSV。 |
license_status | 引数なし。現在のオフラインティアとアップグレードリンク。 |
license_activate | key。オフライン Pro ライセンスを検証して保存します。 |
不足している項目と金額の不一致
次の合成入力を使用して supplier_statement_check を呼び出します。
{
"as_of": "2026-10-26",
"statement_records": [
{"record_id":"S1","entity_id":"UK-1","supplier_id":"V-9","currency":"USD","document_type":"invoice","document_reference":"INV-001","document_date":"2026-10-01","outstanding_minor":12500},
{"record_id":"S2","entity_id":"UK-1","supplier_id":"V-9","currency":"USD","document_type":"invoice","document_reference":"INV-002","document_date":"2026-10-02","outstanding_minor":20000},
{"record_id":"S3","entity_id":"UK-1","supplier_id":"V-9","currency":"USD","document_type":"credit_note","document_reference":"CR-003","document_date":"2026-10-03","outstanding_minor":5000}
],
"ledger_records": [
{"record_id":"L1","entity_id":"UK-1","supplier_id":"V-9","currency":"USD","document_type":"invoice","document_reference":"INV-001","document_date":"2026-10-01","outstanding_minor":12500},
{"record_id":"L2","entity_id":"UK-1","supplier_id":"V-9","currency":"USD","document_type":"invoice","document_reference":"INV-002","document_date":"2026-10-04","outstanding_minor":19000},
{"record_id":"L4","entity_id":"UK-1","supplier_id":"V-9","currency":"USD","document_type":"invoice","document_reference":"INV-004","document_date":"2026-10-05","outstanding_minor":7000}
],
"save": false
}
結果は 4 つのグループに分かれます。一致が 1 件、amount_mismatch と
date_mismatch の両方を含む不一致が 1 件、明細書にのみ存在する項目が 1 件、
台帳にのみ存在する項目が 1 件です。提供されたすべての行を引き続き参照できます。
クレジットノートの金額は正の値で、請求書と相殺されません。残高、損失、回収可能額は
計算されません。いずれか一方の範囲内に別の INV-001 を追加すると、そのグループ全体が
ambiguous_reference になります。このツールは都合のよい金額の組み合わせを選びません。
厳密な入力仕様と比較ルール
実際の日付である YYYY-MM-DD 形式の as_of 日付と、それぞれ0~1000件のレコードを含む2つの配列を指定してください。
少なくとも一方にはレコードが必要です。この日付は共通スナップショットの想定日を示します。ツールはエクスポートの最新性を検証できず、日付による行の絞り込みも行いません。
比較の前に、両方のリストで未処理項目の対象範囲を統一してください。
各レコードには、record_id、entity_id、supplier_id、大文字3文字の
currency、document_type(invoice または credit_note)、document_reference、実在するISO形式の document_date、正の安全な整数である outstanding_minor が必要です。IDと参照は1~160文字で、前後に空白や制御文字を含めることはできません。IDは各側で一意である必要がありますが、両側で同じIDを使うことはできます。不明なフィールド、実在しない日付、0000年、ゼロ・負数・小数・安全でない金額、上限を超える配列は拒否されます。通貨の形式は、外部の通貨リストを使わずに検証されます。
金額は通貨の最小単位で指定します。USD の 12500 は $125.00 を意味します。クレジットノートでは正の絶対未決金額を使用し、クレジットノート同士のみを比較します。両側で共通の仕入先名を使用する必要はありませんが、supplier_id は完全一致する必要があります。異なるエンティティ、仕入先、通貨、書類種別は別々に扱われます。
結合キーは正確に (entity_id, supplier_id, currency, document_type, document_reference) です。先頭のゼロ、句読点、大文字・小文字、アクセント、Unicode形式、紛らわしい類似文字も一致判定に影響します。仕入先の推測、参照の整形、貪欲な金額照合、支払いの割り当て、通貨換算は行われません。
| グループのステータス | 意味 |
|---|---|
matched | 両側にそれぞれ1行あり、キー、未決金額、書類日付が一致しています。 |
only_in_statement | 明細書の行に完全一致するキーを持つ台帳の行がありません。 |
only_in_ledger | 台帳の行に完全一致するキーを持つ明細書の行がありません。 |
discrepancy | 両側にキーが一致する行がそれぞれ1行ありますが、金額または日付が異なります。issues には両方の理由が保持されます。 |
ambiguous_reference | いずれかの側でキーが重複しています。ペアを選択せず、すべての行を保持します。 |
行の欠落や不一致は、エクスポートのタイミングや対象範囲の違いによって生じる場合があります。参照の重複が正当な場合もあります。指定したリストが完全に一致していても、仕入先残高が正しいことの証明にはなりません。不完全なエクスポート同士が一致する場合もあります。ステータス no_discrepancies_in_supplied_open_items が示すのは、その限定的な所見のみです。保存されたレポートが呼び出し間で隠れた履歴になることはありません。毎回、両方のリストを含めてください。
グループと行は決定的な順序で並べ替えられます。各ソース行は、必ず1つのグループのみに属します。エンジンは、考えられるすべてのレコードの組み合わせを展開しません。グループが参照するソースIDには、明細書側または台帳側の区別が付くため、両側で同じIDを使っても証拠が上書きされることはありません。ネットワーク要求やテレメトリー要求は行われません。
無料の証跡、プレビュー、CSV
すべてのチェックで retrieval.report_id が返されます。未保存のプレビューには preview:<UUID> が使われ、このプロセスで行った直近2回のチェック分が30分間メモリに保持されます。3回目のチェック、再起動、または有効期限切れにより、プレビューが破棄される場合があります。その場合は無料チェックを再送信してください。保存済みのUUIDはディスク上に保持されます。プレビューデータがブラウザーやファイルシステムに書き込まれることはありません。
report_page は statement_records、ledger_records、groups、group_members に対応しています。グループページには概要メタデータと、側ごとのメンバー数が含まれます。元データのメンバー全件を読み込むには、section:"group_members" と完全一致する group_id を指定してください。next_offset が null になるまでページを取得してください。保存済みレポートの上限に達した後も、ページとCSVは無料で利用できます。
応答は、エスケープ後のMCPテキストエンベロープの上限512 KiBを使用します。レポートが大きい場合はページ分割された概要が返されます。ページはこの上限内に収めるため、指定した件数より少ない行しか含まれないことがあります。CSVは元データの各レコードにつき1行を使用し、レコードの側、元のフィールド、グループ、理由を含みます。数式のように見えるテキストはエスケープされます。JSONのソース値は変更されません。エクスポートではCSVテキストが返されます。指定されたファイル名への書き込みは行われず、各ページにヘッダーが繰り返し含まれます。ページを結合する際は、ヘッダーを1つだけ残してください。指定件数が返されたと想定せず、実際の returned と next_offset の値に従ってください。
FreeとPro
| 機能 | Free | Pro |
|---|---|---|
| 完全なチェック、不一致の理由、元データの行 | 含まれます。片側あたり1000レコード | 同じ |
| プレビューページとCSV | 含まれます | 同じ |
| 保存済みレポート数 | 3 | レポート数の上限なし |
| 保存済みデータの合計容量 | 64 MiB | 64 MiB |
| ファイルごとの整合性上限 | 8 MiB | 8 MiB |
| 入力、応答、テキスト、プレビューの上限 | ドキュメントに記載された上限と同じ | 同じ |
無料プランの上限に達した状態で save:true を指定すると、診断結果と無料プレビューが返され、saved:false、save_error:"free_saved_report_cap"、アップグレードリンクが含まれます。保存済みレポートを削除すると、空いた枠を再利用できます。ストレージ障害が発生した場合も、診断結果は保持されます。
Proを購入:一度限り$19。
全サーバー:$39のバンドル。MCP_LICENSE_KEY を設定するか、license_activate を呼び出してください。キーはオフラインで検証されます。Proで撤廃されるのは、保存済みレポート数の上限のみです。会計データ、精度保証、ERPへのアクセス、安全性の承認が追加されることはありません。保存履歴のアップグレードは商業上の仮説であり、投資収益率が実証されているわけではありません。
すべてのデータはローカルに保持されます。レポートは
${XDG_DATA_HOME:-~/.local/share}/mcp-servers/supplier-statement-check/ に保存されます。
XDG_DATA_HOME は絶対パスで、実在するディレクトリをすべての親ディレクトリとして指定する必要があります。プライベートなJSONファイルは、プロセス間の変更ロックを使用してアトミックに書き込まれます。読み込み時には元の入力を検証し、編集された結果を信頼するのではなく、証跡を再計算します。ライセンスの有効化では、共有のローカルライセンス設定が書き込まれます。会計データへのアクセス、保持、バックアップはご自身で管理してください。
開発
npm run build --workspace @theluckystrike/mcp-supplier-statement-check
npm test --workspace @theluckystrike/mcp-supplier-statement-check
モノレポのルートから docker build -f servers/supplier-statement-check/Dockerfile . を実行してDockerイメージをビルドします。スタンドアロンミラーには、ミラー生成時に独立して動作するDockerfileが用意されます。テストでは、比較オラクル、厳格な入力、スコープとUnicodeの分離、元データの完全な網羅性、曖昧さ、大量の無料ページとCSV、安全なストレージ、同時保存時の上限、実際のstdio呼び出しを検証します。署名済みライセンスのテストでは、利用可能な場合は既存のローカル秘密鍵署名ツールを使用し、存在しない場合はスキップします。秘密署名鍵はユーザーに配布されず、ユーザー側で必要になることもありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。