ynab-mcpb について
ynab-mcpbは、自然言語で予算を管理する人向けに、YNABとMCPクライアントをつなぐローカル実行型のMCPサーバーです。レシート分割、銀行明細の照合、支出分析を提供し、書き込みは既定でプレビュー確認を求めます。
主な機能
- 01税額を配分したレシート明細分割
- 02銀行CSVの照合と一括修正
- 03予算管理用の35ツール
- 04書き込み時の厳密な確認
- 05ツールプロファイルと読み取り形式の選択
活用シーン
- 01レシートをカテゴリ別の分割取引に変換
- 02銀行CSVから未記録や不一致の取引を特定
- 03指定期間の支出を確認
- 04予定済みの請求とキャッシュフローを確認
MCP 対応
MCPサーバーはYNAB APIを通じて、予算、口座、取引、予定取引、分析のツールをMCPクライアントに公開します。ローカルで動作し、ツールプロファイル、構造化出力、リソーステンプレートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @dizzlkheinz/ynab-mcpbYNAB_ACCESS_TOKENシークレットYNAB Personal Access Token from https://app.youneedabudget.com/settings/developerYNAB_MCP_WRITE_MODEWrite policy: read-only, preview (default), or enabledYNAB_MCP_TOOL_PROFILEStatic tool profile: core, read-only, or full (default)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
35掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| response_format | enum | いいえ | json | markdown |
詳細
デモ
レシートを貼り付ける → 数秒で明細ごとに分割された取引が完成
できること
| ワークフロー | プロンプトの例 |
|---|---|
| レシートの分割 | "このレシートの分割取引を作成し、税額を割り当ててください。" |
| 銀行口座の照合 | "この CSV を使って当座預金口座を照合してください。" |
| 支出分析 | "今月、テイクアウトにいくら使いましたか?" |
| 予定されているキャッシュフロー | "今月支払期限を迎える予定の請求と収入は何ですか?" |
| 取引の作成 | "昨日、Trader Joe's で 42.18 ドルの取引を作成してください。" |
| 月間の概要 | "1 月の予算概要を表示してください。" |
仕組み
graph LR
U(You) -->|Plain English| C[Claude Desktop<br/>or any MCP client]
C -->|MCP protocol| S[YNAB MCP Server<br/>35 tools]
S -->|YNAB API| Y[(Your Budget)]
style S fill:#2563EB,color:#fff,stroke:#1d4ed8
style Y fill:#16a34a,color:#fff,stroke:#15803d
style C fill:#7c3aed,color:#fff,stroke:#6d28d9
特長
- レシートの明細化 — レシートを貼り付けると、明細項目ごとに税額が自動配分された分割取引を作成できます。
- 銀行口座の照合(ベータ版) — 銀行の CSV をインポートし、YNAB の取引とあいまい一致で照合して、不足または不一致の取引を検出し、一括修正できます。
- 35 個の YNAB ツール — 予定取引と決定論的な期間分析を含む、幅広い機能を利用できます。
- 書き込みはデフォルトで安全 — プレビューモードでは、検証済みのリクエストそのものにひも付けられた、短時間のみ有効な一度限りの確認が必要です。
- 小規模なツールプロファイル — 起動時に
core、read-only、fullを選択できます。動的な登録は行いません。 - 差分同期 — 前回のリクエスト以降に変更されたデータのみを取得するため、高速に動作します。
- Markdown または JSON — すべての読み取りツールで
response_formatを利用でき、人間が読みやすい Markdown テーブル(デフォルト)または構造化 JSON を選択できます。 - MCP ネイティブ — 構造化出力、アノテーション、補完 API、リソーステンプレートに対応しています。
照合の仕組み
ワークフロー図を表示
sequenceDiagram
participant You
participant Claude
participant MCP as YNAB MCP Server
participant YNAB
You->>Claude: "Reconcile my checking<br/>with this CSV"
Claude->>MCP: reconcile_account(csv_data)
MCP->>YNAB: Fetch transactions
YNAB-->>MCP: YNAB transactions
MCP->>MCP: Parse CSV<br/>Fuzzy-match payees & dates<br/>Detect missing / mismatched
MCP-->>Claude: Matches + recommendations
Claude->>You: "Found 47 matches, 3 missing.<br/>Apply changes?"
You->>Claude: "Yes"
Claude->>MCP: Apply recommended changes
MCP->>YNAB: Create / update transactions
MCP-->>Claude: Done
Claude->>You: "3 transactions created,<br/>account reconciled."
セットアップ(2 分)
1 — YNAB トークンを取得する
- YNAB Web アプリを開きます
- アカウント設定 → 開発者設定 → 新しいトークンに移動します
- トークンをコピーします(表示されるのは一度だけです)
2 — インストールする
Claude Desktop — MCPB ファイル(推奨)
- リリースから最新の
.mcpbをダウンロードします - Claude Desktop にドラッグします
- 求められたら
YNAB_ACCESS_TOKENを入力します - Claude Desktop を再起動します
Claude Desktop — npx
Claude Desktop の設定に追加します。
{
"mcpServers": {
"ynab": {
"command": "npx",
"args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}
Cline(VS Code)
{
"mcpServers": {
"ynab": {
"command": "npx",
"args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}
Codex
[mcp_servers.ynab-mcpb]
command = "npx"
args = ["-y", "@dizzlkheinz/ynab-mcpb@latest"]
env = {"YNAB_ACCESS_TOKEN" = "your-token-here"}
startup_timeout_sec = 120
その他の MCP クライアント
- コマンド:
npx - 引数:
["-y", "@dizzlkheinz/ynab-mcpb@latest"] - 環境変数:
YNAB_ACCESS_TOKEN=<your token>
3 — 次のプロンプトを試す
List my budgets and set the default to my main budget.
Show recent transactions in my checking account.
How much did I spend on groceries in the last 30 days?
Create a transaction: $42.18 at Trader Joe's yesterday.
ツール(35)
カテゴリ別にすべてのツールを表示
| カテゴリ | ツール |
|---|---|
| 予算 | list_budgets get_budget get_default_budget set_default_budget |
| アカウント | list_accounts get_account create_account |
| 取引 | list_transactions get_transaction create_transaction create_transactions update_transaction update_transactions delete_transaction export_transactions compare_transactions create_receipt_split_transaction |
| カテゴリ | list_categories get_category update_category |
| 受取人 | list_payees get_payee |
| 月 | list_months get_month |
| 照合 | reconcile_account |
| 定期取引 | list_scheduled_transactions get_scheduled_transaction create_scheduled_transaction update_scheduled_transaction delete_scheduled_transaction |
| 分析 | analyze_spending compare_spending_periods |
| ユーティリティ | get_user diagnostic_info clear_cache |
すべての読み取りツールは response_format("markdown" または "json"、既定値:"markdown")を受け付けます。
完全なリファレンス:docs/reference/API.md
設定
| 変数 | 既定値 | 説明 |
|---|---|---|
YNAB_ACCESS_TOKEN | — | 必須。 YNAB の個人用アクセストークンです。 |
YNAB_EXPORT_PATH | ~/Downloads | エクスポートした取引ファイルの保存先ディレクトリです。 |
YNAB_MCP_ENABLE_DELTA | false | 差分同期(変更されたデータのみ取得)を有効にするには、true に設定します。値は true または false のいずれかである必要があります。 |
YNAB_MCP_WRITE_MODE | preview | read-only は YNAB の変更操作を非表示にします。preview は正確な確認を要求します。enabled は直接書き込みを許可します。 |
YNAB_MCP_TOOL_PROFILE | full | 起動時に公開するツール群として、core、read-only、full のいずれかを指定します。 |
YNAB_MCP_CACHE_DEFAULT_TTL_MS | 300000 | キャッシュの TTL(ミリ秒、5 分)です。 |
YNAB_MCP_CACHE_MAX_ENTRIES | 1000 | LRU による削除が始まるまでのキャッシュエントリの最大数です。 |
すべてのオプションについては .env.example を参照してください。
書き込みモードと互換性
preview は保守的な既定値です。変更操作の呼び出しでは、まず既存の dry_run 処理を実行し、確認トークンを返します。このトークンは 2 分後に期限切れとなり、一度だけ使用でき、同じ正規ツール名と検証済み引数に対してのみ有効です。read-only では、YNAB の変更操作ツールは登録されません。enabled は、明示的にオプトインしたユーザー向けに、安全対策導入前の直接書き込み動作を維持します。
取引金額には、amount_decimal(例:-12.34)または明示的な生データフィールド amount_milliunits(-12340)が優先して使用されるようになりました。カテゴリへの割り当て額には、budgeted_decimal または budgeted_milliunits が優先して使用されます。旧来の amount と budgeted フィールドも、後方互換性のため、非推奨のミリ単位エイリアスとして引き続き受け付けられます。これらの意味を推測することはありません。
ツールプロファイル
プロファイルはサーバー起動時に一度だけ選択されるため、クライアントが受け取る tools/list の応答は安定しています。
coreには、一般的な読み取り、取引の安全なワークフロー、照合、レシートの分割、定期取引の確認、支出分析が含まれます。read-onlyでは、読み取り専用と明示的に注釈されたすべてのツールを公開します。fullでは、選択した書き込みモードに従い、35 個のツールすべてを公開します。
プライバシーと信頼
- サーバープロセスはローカルで実行され、YNAB の API を介して YNAB と通信します。
- YNAB の個人用アクセストークンは機密情報です。MCP クライアントのシークレット設定に保存し、会話、issue、フィクスチャ、ログには決して貼り付けないでください。
- ツールが返し、会話に含まれる財務データは、MCP クライアントで選択した AI プロバイダーによって処理される場合があります。機密情報を共有する前に、そのプロバイダーのデータ管理設定を確認してください。
- トランザクションのエクスポートファイルはローカルディスクの
YNAB_EXPORT_PATH(またはプラットフォームのデフォルトの場所)に保存されます。サーバーがエクスポートファイルを他の場所へアップロードすることはありません。 - YNAB への書き込みを行わない場合は
read-only、リクエストの内容を正確に確認する場合はpreview、直接書き込むことが意図的な互換性上の選択である場合にのみenabledを使用してください。 - この独立したオープンソースプロジェクトは、YNAB とは提携しておらず、YNAB の推奨を受けているものでもありません。
トラブルシューティング
| 症状 | 対処方法 |
|---|---|
npx が失敗する | Node.js 24 以降をインストールしてから、MCP クライアントを再起動してください。 |
| 認証エラーが発生する | YNAB トークンを再生成し、YNAB_ACCESS_TOKEN を更新してください。 |
| ツールが検出されない | 設定を変更した後は、MCP クライアントを再起動してください。 |
| 照合で問題が発生する | 匿名化した CSV のサンプルを添えて、issue を作成してください。 |
開発者向け
git clone https://github.com/dizzlkheinz/ynab-mcpb.git
cd ynab-mcpb
npm ci --ignore-scripts
npm run build
npm test
npm run test:integration
ビルドとオフラインテストに YNAB の認証情報は必要ありません。npm test はユニットテストとパフォーマンステストを実行します。test:integration はモックを使用した統合テストを実行します。テスト一式、カバレッジ、ウォッチモードには、それぞれ test:all、test:coverage、test:watch を使用してください。たとえば npm run test:integration -- transactionTools のように、ファイル名やテスト名のフィルターを直接渡せます。
サーバーをローカルで起動するには、.env.example を .env にコピーし、トークンを追加してから npm start を実行してください。実環境でのスモークテストには、明示的に RUN_LIVE_YNAB_TESTS=true を設定する必要があります。テストは npm run test:live で実行します。SKIP_E2E_TESTS=true を設定すると、テストは無効になります。
ビルドでは、グローバルツールのパッケージ化やインストールは行われません。Claude Desktop バンドルを作成するには、公式 CLI を一度インストールしてから(npm install --global @anthropic-ai/mcpb)、npm run build と npm run package:mcpb を実行してください。npm pack --dry-run --ignore-scripts で npm パッケージの内容を確認してください。
アーキテクチャとコントリビューター向けガイダンス:CLAUDE.md
照合アーキテクチャ:docs/technical/reconciliation-system-architecture.md
コントリビューション
バグ報告や、CSV のエッジケースを再現できる事例を歓迎します。特に銀行口座の照合に関する報告をお待ちしています。 issue を作成
PR も歓迎します。提出前に npm test と npm run lint を実行してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。