expenses について
expenses は、チャットから事業経費、領収書、走行距離を記録するローカル MCP サーバーです。VAT の内訳、通貨別集計とエクスポートに対応し、請求対象の費用を請求書の明細に整えられます。
主な機能
- 01経費の記録とカテゴリ分類
- 02税込額の税抜額・VAT 分割
- 03SHA-256 ハッシュ付き領収書添付
- 04地域別レートによる走行距離記録
- 05通貨別の集計とエクスポート
- 06請求対象費用の明細化
活用シーン
- 01プロジェクト経費と領収書の追跡
- 02月次の VAT とカテゴリ別集計の確認
- 03CSV、xlsx、JSON への記録出力
- 04請求対象費用を mcp-invoice に渡す
MCP 対応
経費、領収書、走行距離、集計、エクスポートのツールに加え、`expenses://month` リソースと `monthly_close` プロンプトを MCP クライアントに公開します。請求対象費用を `mcp-invoice` 用の形式に整えられます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Claude から無料の MCP サーバーで経費を記録する
公式 MCP Registry(io.github.theluckystrike/expense-tracker-receipts-mileage)に登録されています。
![]()
「Adobe で 12.30 ユーロ、ソフトウェア、Acme に請求」と伝えるだけで、記録、カテゴリ分類、VAT の分割が行われ、請求に回せる状態になります。この MCP サーバーは、業務経費の台帳をローカルに保持します。各金額はそれぞれの通貨の最小単位を整数で保存し、vat_rate によって領収書の税込金額を税抜金額と VAT に分割します(expense_settings で一度設定すれば、以降の経費は設定を繰り返さなくても分割されます)。加盟店ルールによって新しい経費は自動でカテゴリ分類され、領収書はパスと sha256 を使って添付されるため、監査時にファイルが変更されていないことを確認できます。また、業務上の移動は組み込みの走行距離表に基づいて料金が計算されます。集計はカテゴリ、プロジェクト、月、または加盟店ごとに行われ、常に通貨別で、異なる通貨が混在することはありません。CSV、xlsx、JSON へのエクスポートに対応し、expense_to_invoice を使うと、プロジェクトの請求対象経費を mcp-invoice に渡せます。渡すデータは invoice_create が想定する明細形式と完全に一致します。すべてのデータは自分のマシン上のプレーンな JSON ファイルに保存され、どこにもアップロードされません。
チャットで領収書や走行距離を記録し、VAT を分割して、経費 SaaS を使わずに請求書に再請求できます。
60 秒でインストール
Claude Desktop では expense-tracker.mcpb v0.22.9 を使用してください。公開済みのチェックサムとバージョン別ダウンロードカタログで、正確なリリースを確認できます。npm パッケージは公開されていません。
ソースからインストールする場合は、Node.js 22 以降を使用し、最初に共有依存関係をビルドしてください。
git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers
npm ci
node scripts/bootstrap-timezone.mjs
npm run build -w packages/mcp-license -w servers/expense-tracker
このエントリを Claude Desktop の mcpServers に、または Cursor の .cursor/mcp.json に統合します。絶対パスをチェックアウト先に置き換えてください。
{
"mcpServers": {
"expense-tracker": {
"command": "node",
"args": ["/absolute/path/mcp-servers/servers/expense-tracker/dist/index.js"]
}
}
}
Claude Code の場合:
claude mcp add expense-tracker -- node /absolute/path/mcp-servers/servers/expense-tracker/dist/index.js
Pro モードで実行するには、同じ設定ブロックで MCP_LICENSE_KEY を設定するか、キーを指定して一度だけ license_activate を呼び出してください。
ツール
| ツール | 機能 |
|---|---|
expense_add | 経費を1件記録します。金額、通貨、カテゴリ、加盟店、日付、プロジェクト、メモ、領収書のパス、請求対象フラグ、VAT 税率を指定します。カテゴリが空欄の場合、加盟店ルールに基づいて入力されます。project を指定した場合、billable の既定値は true となり、指定しない場合は false です。レスポンスには常に、使用された値が記載されます |
expense_settings | 呼び出し時に指定がない場合に expense_add が使用する既定値 default_vat_rate、default_currency を読み取るか、設定します |
expense_list | 日付範囲内の経費を一覧表示します。プロジェクト、カテゴリ、請求対象で絞り込み、通貨ごとの合計を表示します |
expense_update | ID を指定して、保存済みの経費の任意の項目を変更します。rebilled: false を指定すると、再請求済みマーカーと請求書番号の両方がクリアされます。すでに再請求済みの経費の金額、通貨、vat_rate は変更できません。ただし、請求書には別の金額が記載されているため、再請求リンクを解除する unlink_rebill: true を渡した場合は変更できます |
expense_delete | ID を指定して経費を1件削除します。領収書ファイル自体は削除されません |
receipt_attach | 領収書ファイルを経費に添付します。ファイルが存在している必要があり、そのパスと sha256 が保存されます |
category_rules | 加盟店からカテゴリへのルールを設定または一覧表示します。正規表現のメタ文字を含まないパターンは単純な部分一致です。メタ文字を含むパターンは、指数関数的なバックトラッキングが発生しない場合にのみコンパイルされ、(a+)+ のようなパターンは拒否されます |
expense_summary | 期間内の合計を、カテゴリ、プロジェクト、月、または加盟店ごとに集計し、通貨ごとの総額、税抜額、VAT を表示します |
mileage_add | km またはマイルで移動を記録し、料金表のレート(または独自のレート)に基づいて料金を計算します |
expense_export | 期間内のデータを csv、xlsx、または json に書き出し、パスを返します。部分的なファイルは書き出しません |
expense_to_invoice | プロジェクトの未請求の請求対象経費を、通貨ごとに invoice_create の明細項目としてプレビューします。任意でマークアップと assume_vat_rate を指定できます。すべての通貨を1つのグループにまとめるには、target_currency と fx_rates を渡します。一致する経費がない場合は count: 0 を返し、fx_note は含めず、理由のみを返します。再請求済みとしてマークすることは一切ありません |
expense_mark_rebilled | ID、またはプロジェクト、日付範囲、currency を指定して、請求書の発行後に経費を再請求済みとしてマークします。invoice_number は必須です |
license_status | Free モードまたは Pro モードを表示します |
license_activate | Pro キーを有効化します(オフラインで検証) |
リソース:expenses://month は、現在の暦月のカテゴリ別合計を通貨ごとに返します。
プロンプト:monthly_close は、当月の合計、まだ請求書に含まれていない請求対象経費、領収書が添付されていない経費を確認します。
走行距離の料金
この表では、地域ごとに一律の料金を示しています。各行は、記載された前提に基づく概算であり、税額の計算ではありません。
| 地域 | 料金 | 単位 | 通貨 | 前提 |
|---|---|---|---|---|
| PL | 1.15 | km | PLN | 900 cm3を超える自動車。ポーランドの上限は900 cm3以下でPLN 0.89/kmであり、オートバイとモペットには別の料金があります |
| UK | 0.45 | mile | GBP | 課税年度の最初の10,000業務マイル以内での自動車。HMRCはこの基準を超えると低い料金を適用し、オートバイと自転車には異なる料金を適用します |
| US | 0.70 | mile | USD | 1暦年分のIRS業務用標準料金。IRSは毎年料金を再発行し、年の途中で変更したこともあります |
| EU | 0.30 | km | EUR | 1キロメートルあたりの一般的な手当。EU共通の料金はなく、各加盟国が独自に設定します |
これらの数値の裏に、年、車両、しきい値ごとの表は意図的に用意していません。権威があるように見えて、1年古い表よりも、前提を明示する表のほうが適切です。mileage_add の各応答には使用した料金と注意書きが示されます。たとえば、(table rate PL 1.15 PLN/km, an approximation; pass rate_per_km for your exact scheme) のようになります。
region を指定しない場合、マイルにはUSの料金、キロメートルにはEUの料金が使われます。rate_per_km を指定すると、入力した単位に対して独自の料金を適用できます。これは、正確な制度(排気量区分、年の途中での料金、10,000マイルを超える区分)を適用するためのサポート対象の方法です。currency は rate_per_km と同時に指定した場合にのみ受け付けられます。表の料金は独自の通貨で示されており、PLN 1.15/kmをEUR 1.15/kmと付け替えても換算にはならず、実際の費用の約4倍を計上することになるため、その呼び出しは拒否されます。
コレクション内の他のツールとの組み合わせ
expense_to_invoice は {description, quantity, unit_price, tax_rate} オブジェクトを返します。これは mcp-invoice が受け取る items 配列そのものです。unit_price は税抜金額で、tax_rate は経費に記録されたVAT率です。そのため、請求書では税金が二重に請求されず、同じ税額が再計算され、明細の合計は領収書の税込総額と一致します。税額を再度丸めると総額を再現できない場合(EUR 0.03を23%で分けると0.02 + 0.01になりますが、0.02に23%の税を適用して丸めると0.00になります)、その結果、請求書の金額が正確に一致する場合はunit_priceを1セント調整します。一致しない場合は、グループにtax_rate: 0の[rounding adjustment ...]明細が表示されます。rounding_adjustment_lines はその明細の数を示します。
複数通貨
1つの請求書で扱える通貨は1つのため、1週間分のUSD建て作業時間、EURの領収書、GBP建て走行距離明細をまとめると、3つのグループに分かれて返されます。請求書を1つにまとめるには、対象通貨と独自の為替レートを指定してください。
expense_to_invoice {project: "Nova", from: "2026-09-01", to: "2026-09-07",
target_currency: "USD", fx_rates: {"EUR": 1.08, "GBP": 1.27}}
fx_rates は「その通貨1単位 = target_currency のX単位」として読み取られます。すべての明細が換算され、1つのグループが返されます。また、換算された各明細には、その旨が明記されます。例:... [converted from EUR 12.40 at 1.08]。ここではレートを取得したり、推定したりすることはありません。レートが指定されていない通貨は、通貨名を示して拒否されます。fx_rates を指定しない場合、複数通貨を含む期間に対して、方法を自分で考える必要がないよう、代わりに実行すべき正確な呼び出し内容が返されます。
保存された vat_rate が 0 の場合、それは未設定ではなく税率です。非課税の領収書は非課税のままになります。税率を指定せずに記録した経費は税込金額を保持し、tax_rate: 0 と説明欄の tax_rate: 0 (VAT unknown, gross rebilled as-is; pass assume_vat_rate to split) をそのまま再請求します。そのため、請求書のデフォルト税率によって領収書に二重で課税されることはありません。expense_settings のデフォルト値は経費の登録時に適用され、再請求時に遡って適用されることはありません。後からデフォルト値を変更しても、その設定が存在する前に登録された領収書の税区分を書き換えることはできません。これらの古い明細を分割する場合は、expense_to_invoice の呼び出しで assume_vat_rate を明示的に指定してください。明細には [vat assumed 23%] と表示されます。
この呼び出しによって再請求済みとしてマークされることはなく、マークするオプションもありません。まず請求書を作成し、その後、必須の invoice_number を指定して expense_mark_rebilled を呼び出してください。1つの請求書で扱える通貨は1つのため、結果は通貨ごとにグループ化され、各グループにはそれぞれの expense_ids が含まれます。そのうち1つのグループを渡してください。IDを指定してマークする方法が最も正確です。プロジェクトと期間を指定してマークする場合は、さらに currency の指定が必須となり、その通貨の請求可能で未再請求の経費のみが対象になります。そのため、EURグループを請求してもPLNの経費がマークされることはありません。mcp-time-tracker は同じプロジェクトの作業時間を請求し、このサーバーはプロジェクトにかかった費用を請求します。
無料版とPro版
| 無料版 | Pro版 | |
|---|---|---|
| 経費、走行距離、領収書の記録 | 無制限 | 無制限 |
expense_list と expense_summary | 過去30日間 | 全履歴 |
| プロジェクト | 3件 | 無制限 |
| カテゴリルール | 5件 | 無制限 |
| CSVおよびJSONエクスポート | 最大200行 | 無制限 |
| xlsxエクスポート | なし | あり |
expense_to_invoice | 1回につき20件。markup_percent を含む | 件数無制限 |
| 複数通貨、VATの分割、領収書のハッシュ化 | あり | あり |
上限に達しても、不完全なファイルが作成されたり、通知なくデータが切り詰められたりすることはありません。エクスポートは何もディスクに書き込まずに拒否され、ツールが絞り込む内容を示します。
Pro版は買い切りで19ドルです。コレクション内の全サーバーを対象とする場合は39ドルです。
数値と金額
すべての金額は、経費が記録された通貨の最小通貨単位による整数で、表示される金額にはすべて通貨コードが付与されます。例:EUR 61.50。1通貨単位あたりの最小通貨単位数は推測ではなく、ISO 4217の表に基づきます。多くの通貨は2、JPY、KRW、VND、CLP、ISKなど小数点以下の桁数が0の通貨は0、BHD、IQD、JOD、KWD、LYD、OMR、TNDは3、CLFとUYWは4です。したがって、KWD 1.234 は123ではなく、最小通貨単位で1234です。金額をやり取りする2つのサーバーであるmcp-invoiceでも、同じ表が使われます。ここではHUFを小数点以下2桁として扱います。ISO 4217では最小通貨単位の桁数が2桁とされているためです。ただし、通常は小数点以下を省略して表示されます。
記録する金額は、領収書に記載された税込金額です。vat_rate によって税抜金額ではなくVATを丸めて分割します。vat = round(gross * rate / (100 + rate))、net = gross - vat となるため、税抜金額とVATの合計は必ず税込金額と一致します。また、VATの0.5セントは切り上げられ、消失しません(EUR 0.03、税率23%の場合は、税抜金額0.02にVAT 0.01が加わります)。集計では、通貨ごとに経費単位ですでに丸められた値を合計します。異なる通貨を合算したり、換算したりすることはありません。走行距離の金額は round(distance * rate) で計算され、レートの通貨で表示されます。日付の形式はISOの YYYY-MM-DD です。
プライバシー
data.json が読み取り不能、または有効な JSON でない場合、「まだ経費がありません」とは扱われません。ファイルはバイト単位で変更せずに data.json.corrupt-<timestamp> として退避され、data.json.corrupt マーカーが書き込まれます。正常なコピーを復元してマーカーを削除するまで、すべてのツールは data file is corrupt; moved to ...; nothing was written を返します。そのため、切り詰められたファイルが空のデータベースで上書きされることはありません。
すべてのデータは ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/expense-tracker/ にローカル保存されます。ネットワーク通信はありません。レシートはお使いのマシン上でハッシュ化され、エクスポートもお使いのマシン上に書き込まれ、ライセンスキーはパッケージにコンパイルされた公開鍵を使ってオフラインで検証されます。
theluckystrike によって構築されました。
スイート全体で使う1つのビジネスプロフィール
お客様のプロフィールは ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json に一度だけ保存され、スイート内のすべてのサーバーがこれを読み込みます。請求書の発行者情報、docx のレターヘッド、定期請求の発行者情報、expense-tracker のデフォルト VAT 税率、time-tracker と timezone のホームゾーン、そして履歴書と契約書のレターヘッドに使用されます。business_set(invoice または docx)で一度設定すれば、ほかの場所で繰り返し設定する必要はありません。メールアドレスは、このプロフィールまたは明示的な引数からのみ取得されます。保存されていない場合は、書類に [add: email] と表示され、ツールもその旨を伝えます。アドレスを勝手に推測することはありません。
よくある質問
無料の MCP 経費トラッカーはありますか?
はい。mcp.zovo.one の expense-tracker サーバーは無料の MCP 経費トラッカーです。Claude または任意の MCP クライアントから、カテゴリ、金額、日付を指定して経費を記録し、一覧表示またはエクスポートできます。無料プランで、リモートホスト型のエンドポイントを利用でき、インストールは不要です。
Claude から経費を記録するにはどうすればよいですか?
https://mcp.zovo.one/mcp/expense-tracker(mcp.zovo.one/mcp/connect から取得したトークン付き URL)に接続して、「クライアントとの昼食代として 42.50 EUR を、カテゴリ meals で記録して」と伝えます。入力内容は、まずお使いのマシンにローカル保存されます。
これらのドキュメントを MCP サーバーとして使う
任意の MCP クライアント(Claude、Cursor、Windsurf、VS Code)から、インストール不要で GitMCP 経由でこのリポジトリのドキュメントを直接読み取れます。
- Docs MCP URL:https://gitmcp.io/theluckystrike/mcp-expense-tracker
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。