acb-tax-mcp について
カナダの投資家向けの MCP サーバーで、取引履歴から調整後原価(ACB)、譲渡益、表層損失を計算し、証券会社の CSV 整形や CAD 為替換算にも対応します。税務助言ではなく、計算補助ツールです。
主な機能
- 01平均原価方式の ACB 管理
- 02処分・年次譲渡益レポート
- 03表層損失の検出
- 04Schedule 3 の集計
- 05証券会社 CSV の正規化
- 06含み損益の計算
活用シーン
- 01取引記録から課税対象の譲渡益を計算
- 02売却で表層損失が生じたか確認
- 03申告用の Schedule 3 数値を準備
- 04保有資産の ACB と指定価格を比較
MCP 対応
ACB 計算、譲渡益レポート、表層損失チェック、CSV 正規化、含み損益の推定を行うツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| csv_path | any | いいえ | |
| transactions | any | いいえ |
詳細
acb-tax-mcp
取引履歴からカナダの調整後取得原価(ACB)とキャピタルゲインを計算するMCPサーバーです。平均取得原価の追跡、処分ごとの利益、みなし売却損の検出を行い、構造化されたJSONを返します。
アシスタントに「2024年のキャピタルゲインはいくらですか?」や「みなし売却損は発生しましたか?」と尋ねると、スプレッドシートと格闘する代わりに、取引にCRAの規則を適用して計算します。
⚠️ これは税務アドバイスではなく、計算を支援するツールです。 申告前にすべての数値を確認し、重要な事項については専門家に相談してください。制限事項をご覧ください。

Claude Desktop、Claude Code、Cursor、またはMCP対応のクライアントで動作します。
機能
| ツール | 機能 |
|---|---|
calculate_acb | 詳細な計算を行います。現在の保有分(株数、ACB合計、1株あたりのACB)、処分ごとの売却代金/ACB/費用/利益、年ごとの概要、警告を表示します。 |
acb_summary | 現在の保有分と簿価のみを表示します(市場価格と比較して未実現利益を確認する際に便利です)。 |
capital_gains_report | 1つの課税年度について、処分ごとの明細、合計、純キャピタルゲイン、課税対象利益(算入率50%)を示すSchedule 3形式のレポートを作成します。 |
schedule3_summary | 銘柄ごとに1行をまとめた、Schedule 3の列形式に沿ったレポートを作成します。株数、売却代金総額、ACB、費用(手数料)、みなし売却損ルール適用後の損益、取得年、合計を含みます。申告時に実際に転記する項目です。 |
check_superficial_losses | 30日ルールに該当する損失を警告し、各取引で否認(繰り延べ)される金額を表示します。 |
unrealized_gains | 指定した市場価格と現在の保有分のACBを比較し、ポジションごとおよび合計の未実現利益を金額とパーセントで表示します(外貨建て銘柄には価格とfx_rateの組み合わせを指定します)。 |
normalize_broker_csv | ブローカーの生の取引履歴を、整理された取引データに変換します。一般的な列名の別名("Trade Date"、"Activity Type"、"Quantity"...)を対応付け、買い/売りの行を保持し(DRIPは買いとして扱います)、"$1,200"や"(9.95)"形式を整え、除外したすべての行について理由を報告します。 |
CRAの平均取得原価方式(銘柄ごとの株式を1つのACBにまとめ、FIFOではなく平均取得原価を基準に利益を算出)と、みなし売却損ルール(売却前後30日以内に代替株式を購入した場合、損失を否認してそのACBに繰り延べる)を実装しています。手数料と取引ごとのCADへの為替換算にも対応しています。
インストール
試すだけならインストールは不要です。Glama のサーバーページを開き、Try in Browser を使うと、いくつかのサンプル取引が入ったサンドボックスでツールを呼び出せます。
Python 3.10 以降が必要です。
MCP Python SDK 2.x(mcp>=2,<3)が必要です。SDK 1.x は上流で機能が凍結されており、こちらではサポートされなくなりました。0.4.0 は SDK 1.x で動作した最後のリリースです。
uv tool install acb-tax-mcp # or: pip install acb-tax-mcp
インストールせずにソースから実行するには、次のようにします。
git clone https://github.com/haiiibin/acb-tax-mcp
cd acb-tax-mcp
uv run acb-tax-mcp
クライアントの設定
Claude Desktop
claude_desktop_config.json に次のように記述します。
{
"mcpServers": {
"acb-tax": {
"command": "acb-tax-mcp"
}
}
}
Claude Code
claude mcp add acb-tax -- acb-tax-mcp
取引
取引のリスト(または .csv/.json ファイルへのパス)をツールに渡します。
| フィールド | 必須 | 備考 |
|---|---|---|
date | はい | YYYY-MM-DD |
action | はい | buy または sell |
security | はい | ティッカー/銘柄コード(このキーでプールされます) |
shares | はい | 正の数 |
price | はい | 取引通貨での 1 株あたりの価格 |
commission | いいえ | 取引手数料(既定値 0) |
currency | いいえ | 例:USD(既定値 CAD) |
fx_rate | いいえ | 取引通貨から CAD への為替レート。例:USD の場合は 1.35(既定値 1) |
note | いいえ | 自由記述 |
CSV では、ヘッダー行に同じ列名を使用します。ブローカーのエクスポートで異なるヘッダー(「Trade Date」、「Activity Type」、「Symbol」、「Quantity」など)が使われている場合は、先に normalize_broker_csv を実行してください。
すぐに試してみたいですか?examples/sample_trades.csv は、別名のヘッダー、「$」形式の数値、DRIP 行、配当行(理由を付けてスキップ)、FX を含む USD 取引、superficial loss のシナリオを含む、すぐに使えるブローカー形式のエクスポートファイルです。アシスタントに normalize_broker_csv で整形させ、その結果に対して calculate_acb を実行するよう依頼してください。
使用方法
- "
~/trades.csvの取引について、ACB とキャピタルゲインを計算してください。" - "2024 年のキャピタルゲインレポートを教えてください。"
- "これらの売却で superficial loss が発生しましたか?"
- "XEQT の現在の簿価はいくらですか?"
- "RBC の取引履歴をエクスポートしました。整理して ACB を計算してください。"
- "XEQT は $35.20、VTI は $305.40 USD(1.37 CAD)です。含み益はいくらですか?"
例
// calculate_acb with:
// buy 100 XYZ @ $10, buy 100 XYZ @ $20, sell 100 XYZ @ $25
{
"holdings": [
{ "security": "XYZ", "shares": 100.0, "total_acb": 1500.0, "acb_per_share": 15.0 }
],
"dispositions": [
{ "date": "2024-03-01", "security": "XYZ", "shares_sold": 100.0,
"proceeds": 2500.0, "acb": 1500.0, "capital_gain": 1000.0,
"is_superficial_loss": false }
],
"summary": {
"by_tax_year": [
{ "tax_year": 2024, "net_capital_gain": 1000.0, "taxable_capital_gain": 500.0 }
],
"inclusion_rate": 0.5
}
}
Superficial loss の例
100 株を 1 株あたり $10 で購入し、1 株あたり $8 で 100 株を売却($200 の損失)した後、9 日後に 1 株あたり $8 で 100 株を買い戻します。
{ "gain_before_superficial": -200.0, "superficial_loss_denied": 200.0,
"capital_gain": 0.0, "is_superficial_loss": true }
$200 の損失は認められず、買い戻した株式の ACB に加算されます(新しい 1 株あたりの ACB は $10 になります)。そのため、将来の売却時に損失が回収されます。
制限事項
出力を信頼して利用する前に、以下をお読みください。
- 同一資産ごとの平均取得原価です。 CRA の規則では納税者単位で同一資産がプールされるため、同じ証券の全口座におけるすべての取引をまとめて入力してください。このツールは、指定された
securityキーごとにプールします。 - Superficial loss には、標準的な 3 要素のうち最小の値を用いるテストを、前方向への 1 回の処理で適用します。複雑に連鎖した、または重複する superficial loss については、個別に専門家の判断が必要になる場合があります。
- 未対応の項目: 資本の払戻し、再投資/みなし分配(ETF のファントム分配)、株式分割、オプション、その他のコーポレートアクション。これらは ACB に影響し、今後の対応予定です。
- FX は取引ごとに指定する必要があります(取引日のレートを使用してください)。このツールは為替レートを取得しません。
- 登録口座(TFSA/RRSP)にはキャピタルゲインがありません。このツールは**未登録(課税対象)**口座向けです。
- 税務アドバイスではありません。
開発
uv venv
uv pip install -e ".[dev]"
uv run pytest
ライセンス
MIT。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。