dunning について
dunning は、請求書、クレジットノート、デポジットの記録から顧客向け明細書を作成し、督促文を起草する MCP サーバーです。期日基準で未払い額を分析し、元の帳簿は変更せずに読み取ります。
主な機能
- 01顧客・期間別の明細書作成
- 02指定日時点の延滞額分析
- 03テキストまたは A4 PDF で出力
- 04親しみのある文面から最終督促まで起草
- 05通貨別の未払い額レポート
活用シーン
- 01顧客向けの取引明細書を作成
- 02指定日時点で延滞中の請求書を確認
- 03追加料金を設けずに督促文を起草
MCP 対応
明細書作成、延滞分析、出力、レポート、督促のツールを MCP クライアントに提供し、データソースのリソースと督促用プロンプトも備えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-statement-of-account
公式 MCP Registryに掲載されています(io.github.theluckystrike/statement-of-account)。
「結局、いくら支払えばよいのか」に答える書類を、クライアントに1つ送信できます。この MCP サーバーは、このスイートですでに管理している帳簿、請求書、クレジットノート、預け金を読み込み、指定期間の取引明細書を作成します。開始時点の繰越残高、発行したすべての請求書、受け取ったすべての支払い、発行したすべてのクレジットノート、終了時点の残高が記載されます。未決済の金額を支払期日から0~30日、31~60日、61~90日、90日超に分類するため、問題のあるクライアントをひと目で確認できます。また、コピーして貼り付けられるテキスト形式、または請求書と同じ見た目のA4 PDF形式で明細書を作成し、親しみのある文面、強めの文面、最終通知のいずれかで督促文を作成します。請求書に変更を加えることはなく、延滞料金を勝手に追加することもありません。
theluckystrike が開発しました。
@theluckystrike/mcp-statement-of-account の npm への公開は保留中のため、現在 npx -y @theluckystrike/mcp-statement-of-account を実行すると404が返されます。それまでは、.mcpb のワンクリックバンドル、またはリポジトリをクローンしてビルドする方法をご利用ください。
インストール
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または
%APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"statement-of-account": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-statement-of-account"]
}
}
}
Claude Code
claude mcp add statement-of-account -- npx -y @theluckystrike/mcp-statement-of-account
Cursor
~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクト)。Claude Desktopと同じエントリーを使用します。
ツール
| ツール | 機能 |
|---|---|
statement_build | 1クライアントの指定期間の明細書を作成します。開始残高、発行した請求書、受け取った支払い、クレジットノート、充当した預け金、終了残高が含まれます。すべての金額は最小通貨単位で表され、書式設定されます |
statement_aging | 指定日現在の未払い額を、支払期日から0~30日、31~60日、61~90日、90日超に分類します。対象は1クライアントまたは全クライアントで、通貨ごとに集計されます |
statement_text | 同じ明細書をプレーンテキスト形式で出力します。取引は日付順に並び、メールに貼り付けてすぐに使えます |
statement_pdf | 同じ明細書をA4 PDF形式で出力します。タイトルは「STATEMENT OF ACCOUNT」で、請求書およびクレジットノートと同じページレイアウトです |
dunning_text | レベル1(親しみのある文面)、2(強めの文面)、3(最終請求)のいずれかで、延滞項目と銀行口座情報を含む支払い督促文を作成します |
statements_report | すべてのクライアントをまとめて表示します。通貨ごとの未払い額、延滞期間別の金額、帳簿内で最も古い延滞請求書を確認できます |
license_status | FreeまたはProのライセンス状態と、アップグレード方法を表示します |
license_activate | Proキーを有効化します |
さらに、サーバーが読み取れる3つのストアと、それぞれに含まれる行数を示す statement://sources リソース、および chase_overdue プロンプトも利用できます。
Free と Pro の比較
| Free | Pro | |
|---|---|---|
| 作成できる明細書 | 1暦月あたり5件 | 無制限 |
| 作成済み明細書の再作成 | 無制限 | 無制限 |
statement_aging | 無制限 | 無制限 |
statement_text | 利用可能 | 利用可能 |
dunning_text レベル1、2 | 利用可能 | 利用可能 |
dunning_text レベル3、最終請求 | 利用不可 | 利用可能 |
statement_pdf | 利用不可 | 利用可能 |
statements_report | 利用不可 | 利用可能 |
| PDFのフッタークレジット | 表示 | 削除 |
意図的に、延滞期間別の分類は無料かつ無制限にしています。「自分にお金を払うべきなのは誰か」は、このサーバーが存在する理由そのものです。それを隠す無料プランは、ツールではなくデモにすぎません。利用数の制限は、実際にクライアントへ送る書類である明細書に適用され、異なる明細書の数をカウントします。同じクライアント、期間、通貨の明細書を再作成する場合、回数は永久に無料です。
このサーバーのProを購入できます。買い切りの永久ライセンスです。キーはオフラインで検証されます。
数値の出所
ここでは何かを二重に入力することはありません。サーバーは3つのストアを読み込みますが、どれにも書き込みません。
| ストア | サーバー | そこから取得する内容 |
|---|---|---|
invoices.json | mcp-invoice | 請求書、支払期限、および各請求書の支払済み額 |
credit-notes.json | mcp-billing-docs | マイナスの符号付きで保存済みのクレジットノート |
deposits.json | mcp-deposits | 前受金の適用内容と、まだ預かっている金額 |
インストールされていないストアは単に存在しないものとして扱われ、そのストアなしで明細が作成されます。 ディスク上にあるのに READ できないストアはまったく別のものであり、すべての数値でその旨が報告されます。計算できなかった残高を、未払い残高がないかのように表示してはならないためです。サーバーが動作に必須としている唯一のストアは、請求書台帳です。
測定から得られた知見
過去の日付を今日の支払額でエイジングすると、少し間違うのではなく、気づかないまま空の結果になります。 通常、エイジングは「各請求書について、支払済み額を差し引き、支払期限ごとに分類する」処理として記述されます。差し引く金額に日付が付いていないことが問題です。test/_client.mjs の例の月を 2026-06-10 時点でエイジングすると、2つのルールの結果は次のとおりです。
| ルール | 未払い残高 | 期限超過 |
|---|---|---|
| 2026-06-10 時点 | 2,500.00 EUR | 500.00 EUR、31日遅延 |
今日の paid_minor | 1,700.00 EUR | 0.00 EUR |
単純なルールでは、2,500.00 の未払い額のうち800.00、つまり残高の3分の1が過少に計上されます。また、請求書の支払期限を1か月過ぎていた日に、期限超過は一切ないと報告されます。2日後に受け取った支払いがすでに差し引かれているためです。この失敗は見えません。答えは整然としており、各分類の合計も一致しますが、入力が変化し続けるため、翌月には再現できません。そのため、statement_aging のすべての数値は、指定された日付時点のものとして、どちらの方向にも算出されます。その日付より後に発行された請求書は台帳に含まれず、その日付より後に行われた支払いはまだ発生しておらず、その日付より後に発行されたクレジットノートもまだ付与されていません。
測定から得られた2つ目の知見は、請求書の paid_minor と payments[] は一致するとは限らず、実際に一致しないこともよくあるという点です。invoice_mark_paid は両方を書き込みますが、deposit_apply は paid_minor を増やす一方で支払い行を追加しません。また、このフィールドが存在する前に作成された請求書にも支払い行はありません。payments[] から入金を再構成していたら、例の月における900.00の入金のうち300.00、つまり現金の3分の1が、どこにもエラーが出ないまま失われていたでしょう。paid_minor を正とし、支払い行は内訳を示すものとしてのみ扱います。
このサーバーが守るルール
- デポジットは一度だけ動くお金です。 デポジットを適用すると、請求書に支払いがすでに記録されるため、明細書ではその金額をそこで計上し、「うち適用済みデポジット」として内訳を示します。二重に差し引くことはありません。まだ保管されているデポジットは備忘項目であり、残高には決して含めません。適用されるまではクライアントのお金です。
- 通貨を合算することはありません。 1つの明細書で扱う通貨は1種類です。2種類の通貨で請求されているクライアントには、どちらの通貨かを確認します。このサーバーには為替レートがないため、EURの元帳とUSDの元帳を合算した金額は、サーバーが作り上げた数字になってしまいます。
- 支払期日当日は延滞ではありません。 請求書が0~30日の区分に入るのは、支払期日の翌日からです。未払いでもまだ支払期日が来ていない金額は、各区分の横に記載し、区分に含めたり隠したりしません。
- クレジットノートは、記載された請求書だけを減額します。 未払い残高の下限は0です。超過分は未適用クレジットとして報告し、クライアントが充当先として同意していない請求書をひそかに相殺することはありません。
- 督促で請求額を作り出すことはありません。 3段階の督促で異なるのは、文面のトーンと期限だけです。いずれの段階でも延滞料、金利、法的費用は記載しません。このサーバーには契約条件、法定利率、管轄区域の情報がないためです。作り上げた金額を決して記載してはならないのは、金銭を請求する文書です。
- 延滞金がないクライアントへの督促は拒否されます。拒否のメッセージでは、未払いでもまだ支払期日が来ていない金額を伝えます。
プライバシー
すべてのデータはお使いのマシンに保存されます。請求書、クレジットノート、デポジットは ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/ から読み込まれ、このサーバーが作成した明細書の登録情報は .../mcp-servers/statement-of-account/ に書き込まれます。データが外部に送信されることはありません。このサーバーではネットワーク呼び出しを一切行いません。ライセンスキーはオフラインで検証されます。
ライセンス
MIT。サポート:[email protected]
theluckystrike が作成しました。
MCP サーバーとしてこのドキュメントを利用する
任意のMCPクライアント(Claude、Cursor、Windsurf、VS Code)から、インストール不要でGitMCP経由でこのリポジトリのドキュメントを直接読み取れます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。