reconcile-mcp について
reconcile-mcpは、予定されたpain.001決済と入金済みのcamt.053明細を照合する、資金管理チーム向けMCPサーバーです。一部入金や複数件の集約に対応し、各照合のスコアと根拠を示します。
主な機能
- 01予定決済と入金明細の照合
- 02スコアと照合根拠の説明
- 03一部入金と集約決済への対応
- 04pain.001とcamt.053データの正規化
- 05決定論的なサンドボックスシナリオ
活用シーン
- 01予定決済と銀行明細の照合
- 02不足入金や分割決済の確認
- 03実際の資金データなしでの照合テスト
MCP 対応
MCPクライアントに照合ツール、ワークフロープロンプト、サンドボックスリソースを提供します。stdio、streamable HTTP、SSEに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| options | any | いいえ | 任意の調整オブジェクト:'abs_tol'/'rel_tol'(金額許容差)、'date_window_days'、'high_threshold'、'review_threshold'、'currency_strict'、'enable_one_to_many'、'max_combination'。 |
| expected | array | はい | 正規レコードのリスト。各レコードはオブジェクトで、'id'(文字列)と 'amount'(数値)が必須です。任意で 'currency'(ISO 4217)、'date'(ISO-8601)、'counterparty'(名称)、'reference'(送金/エンドツーエンド ID)を指定できます。 |
| observed | array | はい | 正規レコードのリスト。各レコードはオブジェクトで、'id'(文字列)と 'amount'(数値)が必須です。任意で 'currency'(ISO 4217)、'date'(ISO-8601)、'counterparty'(名称)、'reference'(送金/エンドツーエンド ID)を指定できます。 |
詳細
reconcile-mcp:ISO 20022 入出金照合の MCP サーバー
Model Context Protocol サーバーです。pain.001 の信用振替から得られる 予定された 入金と、camt.053 明細書から得られる 記帳済みの 入金項目を照合し、説明可能な結果を返します。完全一致、過不足入金、分割決済(1 対多)、一括入金(多対 1)、および両側の残存未照合項目に対応し、各照合結果にはスコアと照合理由が付与されます。
最新リリース:v0.0.7:stdio、ストリーミング可能な HTTP、または SSE 経由で利用できる 10 個の MCP ツール、純粋な Python による照合エンジン、決定論的なサンドボックスのテストモードを備えています。Python 3.10 以降に対応しています。ISO 20022 MCP スイートの一部であり、照合する両側のデータを管理できます。
このプロジェクトの目的
照合は、財務チームにとって毎日の悩みの種です。予定していた資金は実際に入金されたのか、それぞれの入金はどの請求書に対応するのか。照合は一対一で済むことはほとんどありません。顧客が一部しか支払わなかったり、請求書を分割払いしたり、支払代行業者が十数件の売掛金をまとめて一括送金したりするためです。reconcile-mcp は、エージェント用ツールとしてこうした照合を行います。そして財務業務で重要な点として、照合の根拠を明示します。すべての組み合わせには数値スコアと、判断の根拠となったシグナル(参照情報、金額、日付、取引相手)がわかりやすく列挙されます。
ISO 20022 MCP スイート
reconcile-mcp は、連携するベンダー中立の 8 つの MCP サーバーからなるスイートの照合ワークフローを担います。このスイートは、ISO 20022 の銀行取引明細書ワークフローと 2026 年 11 月の構造化住所への移行に加え、準備状況のスコアリング、決済プロファイルのリンティング、監査証跡といった高レベルのオーケストレーション層、明細書の詳細な調査、カタログ全体のルーティング、照合、複数形式の取り込み、住所の修正をカバーします。依存関係の範囲はスイート全体で揃えられているため、単一の Python 環境に各サーバーを問題なくインストールできます。まず 1 つから始め、ワークフローの拡大に合わせて追加してください。
| サーバー | 対象範囲 | 機能 | インストール | 次のような場合にご利用ください |
|---|---|---|---|---|
camt053-mcp | ISO 20022 camt.053/camt.052 銀行明細:解析、検証、フィルタリング、逆仕訳;MT940/MT942 からの移行;CBPR+ 対応状況の確認;仕訳のエクスポート | MCP ツール 24 個・プロンプト 4 個・リソース 3 個 | pip install camt053-mcp | 銀行から顧客への明細をエンドツーエンドで扱う場合 — スイートの主力製品です |
iso20022-mcp | 統合ゲートウェイ:search/describe/validate/generate/parse のメタツールを、pain・pacs・camt・acmt の各ファミリーに振り分けます | メタツール 7 個 | pip install "iso20022-mcp[all]" | すべてのメッセージファミリーへの単一のエントリーポイントが必要な場合 |
reconcile-mcp | 予定された pain.001 の支払いと、確認された camt.053 の明細行を照合します — 完全一致、一部一致、一対多、多対一に対応し、すべての照合結果をスコア化して説明します | MCP ツール 10 個・プロンプト 1 個・リソース 2 個 | pip install reconcile-mcp | 説明可能な明細/支払い照合が必要な場合 — このパッケージ |
bankstatementparser-mcp | 複数形式の明細取り込み:ISO 20022 CAMT.053 と pain.001、SWIFT MT940、OFX/QFX、CSV | MCP ツール 5 個・プロンプト 1 個・リソース 1 個 | pip install bankstatementparser-mcp | 明細が混在形式またはレガシー形式で届く場合 |
structured-address-fix-mcp | 2026 年 11 月の住所構造化への切り替えに向けた ISO 20022 郵便住所の分類、評価、修正(pacs.008/pain.001 の債務者住所と債権者住所) | MCP ツール 9 個 | pip install structured-address-fix-mcp | 2026 年 11 月 14 日を前に、債務者/債権者住所を切り替えに即応できる状態にする必要がある場合 |
iso20022-readiness-suite-mcp | オーケストレーションゲートウェイ:検出 → 構造検証 → クリアリングプロファイルのリンティング → 対応準備状況のスコア化に加え、自動修正と pacs.002 銀行応答シミュレーションに対応 — 基盤サーバーをまとめるメタクライアントです | MCP ツール 4 個 | pip install iso20022-readiness-suite-mcp | スイート全体を対象とする、上位レベルの対応準備状況確認/オーケストレーション用エントリーポイントが必要な場合 |
iso20022-bank-profile-mcp | 銀行固有のクリアリングプロファイル/ルールパック(CBPR+、SEPA_Instant、FedNow、Generic)を管理、検証、提供します;プレミアムルールパックの利用権限を管理します | MCP ツール 4 個 | pip install iso20022-bank-profile-mcp | 自機関独自の市場慣行に照らして支払いをリンティングする場合 |
iso20022-evidence-pack-mcp | 対応準備状況の検出結果、修正差分、シミュレーション応答をまとめ、封印された Ed25519 署名可能な監査証跡パックを作成します | MCP ツール 6 個 | pip install iso20022-evidence-pack-mcp | 改ざん検知可能な監査/認証成果物が必要な場合 |
一言でまとめると、camt053-mcp は銀行明細処理の主力製品(最も充実した
camt.05x 機能群、stdio と認証済みストリーミング可能 HTTP に対応)、
iso20022-mcp は汎用メッセージツールキット(カタログ全体を扱う
少数の動詞)、reconcile-mcp は照合ワークフロー
(予定していた資金は実際に入金されたか?)、
bankstatementparser-mcp は取り込みレイヤー(さまざまな形式を取り込み、
単一のトランザクション形式で出力)、structured-address-fix-mcp は
郵便住所の専門ツール(2026 年 11 月の切り替えに向けて債務者/債権者住所を
即応できる状態にします)です。
スイートにはファミリー別サーバーも含まれます — pain001-mcp
(信用振込の開始)、pacs008-mcp(金融機関間の信用振込)、
acmt001-mcp(口座管理)。それらの解析済み出力は、このサーバーの
normalize_* アダプターに直接渡されます。
インストール
pip install reconcile-mcp
# or run without installing:
uvx reconcile-mcp
MCP クライアントの設定(例:Claude Desktop の claude_desktop_config.json):
{
"mcpServers": {
"reconcile": {
"command": "reconcile-mcp"
}
}
}
クイックスタート(実データなし)
サーバーにはサンドボックスのテストモードが用意されています。セットアップや実際の現金データを使わずに、一連の流れを実行できる決定論的なシナリオです。1 回の呼び出しで、説明可能な完全な結果が得られます。
run_sandbox_scenario(name="month_end")
現実的な複合決済の結果が返されます。照合成功が 1 件、未払いが 1 件、分割決済が 1 件、予期しない入金が 1 件で、最後の入金は正しく未照合のままになります。
{
"summary": {
"expected_count": 3, "observed_count": 5,
"matched_expected": 3, "unmatched_observed": 1,
"matches_by_type": {"exact": 1, "amount_mismatch": 1, "one_to_many": 1},
"fully_reconciled": false
},
"matches": [
{"type": "amount_mismatch", "expected": ["INV-6002"], "observed": ["ENT-52"],
"amount_delta": "-99.99", "confidence": "high",
"reasons": ["reference exact", "amount close (delta -99.99)", "date +/-0d", "counterparty exact"]},
{"type": "exact", "expected": ["INV-6001"], "observed": ["ENT-51"], "amount_delta": "0.00"},
{"type": "one_to_many", "expected": ["INV-6003"], "observed": ["ENT-53", "ENT-54"],
"reasons": ["amount sum of 2 entries"]}
],
"unmatched_observed": ["ENT-55"]
}
list_sandbox_scenarios ですべてのシナリオを一覧表示できます。load_sandbox_scenario でシナリオを読み込み、入力内容を確認または編集できます。
トランスポート
1 つのコマンドラインで、3 種類のトランスポートを利用できます。
| コマンド | トランスポート | エンドポイント | プロトコルのリビジョン |
|---|---|---|---|
reconcile-mcp | stdio | クライアントがプロセスを起動します | 2026-07-28、2025-11-25 |
reconcile-mcp --transport streamable-http | Streamable HTTP | http://127.0.0.1:8000/mcp | 同一のエンドポイントで 2026-07-28(ステートレス、server/discover)と 2025-11-25(initialize、Mcp-Session-Id)に対応します。レスポンスはサーバー送信イベントとしてストリーム配信され、GET でサーバーからクライアントへのストリームが開きます |
reconcile-mcp --transport sse | HTTP+SSE (2024-11-05) | http://127.0.0.1:8000/sse および /messages/ | 旧トランスポートを引き続き必要とするクライアント向けです |
--host と --port でバインドアドレスを変更できます(デフォルトはそれぞれ 127.0.0.1 と
8000 です)。HTTP トランスポートには認証機能が備わっていません。ループバックにバインドするか、ルーティング可能なアドレスにバインドする前に、信頼できるゲートウェイの背後にサーバーを配置してください。すべてのリリースは、両方のプロトコル世代で passmcp を使用した Streamable HTTP 経由の検証と、MCP SDK クライアントを使用した SSE 経由の検証を受けています。詳しくは
ADR 0001 を参照してください。
{
"mcpServers": {
"reconcile": { "url": "http://127.0.0.1:8000/mcp" }
}
}
独自のデータを使う
レコードは小さな標準オブジェクトです。id と amount は必須で、それ以外はすべて任意項目であり、照合の精度向上に使われます。
{
"id": "INV-1001", // your reference / end-to-end id
"amount": 1200.00,
"currency": "EUR", // ISO 4217
"date": "2026-03-02", // ISO-8601
"counterparty": "Acme Ltd",
"reference": "INV-1001" // remittance / structured reference
}
スイートのほかのツールをすでにお使いの場合は、解析済みの出力をそのまま渡せます。アダプターがマッピングを行います。
normalize_pain001(document)→pain001-mcpの 期待される 側。normalize_camt053(document)→camt053-mcpの 観測された 側。
続いて reconcile(expected, observed) を呼び出します。
ツール
reconcile— 期待される支払いと観測された入金明細を照合し、説明可能な完全なレポートを作成します。explain_match— 期待される支払いと観測された入金明細のペアを 1 組スコアリングし、シグナルごとの内訳を表示します(調整に役立ちます)。normalize_pain001— 解析済みのpain.001出力を標準形式の 期待される レコードに変換します。normalize_camt053— 解析済みのcamt.053出力を標準形式の 観測された レコードに変換します。list_sandbox_scenarios— 組み込みのテストモードのシナリオと特別な参照情報を一覧表示します。load_sandbox_scenario— 1 つのシナリオの期待される入力と観測された入力を返し、確認や編集に使えます。run_sandbox_scenario— シナリオの読み込みと照合を 1 回の呼び出しで行います。最も手軽な初回実行方法です。match_names_probabilistic— Jaro-Winkler 類似度で 2 つの取引先名をスコアリングし、しきい値を超えた場合に一致を示します。match_amounts_with_fx_drift— 指定された為替レートを使い、許容パーセンテージ内で異なる通貨の 2 つの金額を比較します。reconcile_many_to_many— 各入金を、その金額の合計と一致する請求書の互いに素な部分集合に照合します(部分和 ILP。ilpエクストラが必要です)。
さらに、1 つのプロンプトと 2 つのリソースがあります。
- プロンプト
reconcile_workflow— 生のpain.001/camt.053から、説明付きの照合レポートを作成するまでの手順を案内します。 - リソース
reconcile://sandbox-scenarios— 組み込みシナリオのカタログです。 - リソース
reconcile://sandbox/{scenario_id}— 1 つのシナリオの期待される入力と観測された入力です。
マッチングの仕組み
各候補ペアは、重み付けされた4つのシグナルでスコアリングされた後、分類されます。
- 参照(0.45)— 参照情報とエンドツーエンド ID の完全一致または部分一致。英数字のみの形式に正規化されます。
- 金額(0.35)— 許容誤差内での完全一致、または差分を報告する線形減衰の近似度です。
- 日付(0.10)— 設定可能な期間内での近さです。不明な場合は中立です。
- 取引先(0.10)— 名称のトークン集合の重複度です。不明な場合は中立です。
割り当てはスコアの高い順に貪欲に行われ、完全に決定的です(全順序のタイブレーク)。そのため、同じ入力からは常に同じ結果が得られます。次に、残った項目について 1対多(有界部分集合和:複数の明細で1つの期待項目を決済)と 多対1(1つの明細で複数の期待項目を充当)を検証します。
options 引数を使って、各種設定を調整できます。abs_tol / rel_tol、date_window_days、high_threshold、review_threshold、currency_strict、enable_one_to_many、max_combination があります。
開発
git clone https://github.com/sebastienrousseau/reconcile-mcp
cd reconcile-mcp
python -m venv .venv && . .venv/bin/activate
pip install -e . && pip install pytest pytest-cov ruff black mypy
pytest # 100% branch coverage gate
ruff check reconcile_mcp tests && black --check reconcile_mcp tests && mypy reconcile_mcp
ライセンス
Apache License, Version 2.0 または MIT License のいずれかのライセンスに基づいて提供されます。
mcp-name: io.github.sebastienrousseau/reconcile-mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。