mcpField
M
Monarch MCP Server

Monarch MCP Server

ローカル
github.com/jamiew金融データ284 週間前に更新

Monarch MCP Server について

Monarch MCP Server は、AI アシスタントが Monarch Money の口座、取引、予算を読み取り・更新できるようにする MCP サーバーです。colvint 版サーバーを FastMCP で書き直したフォークで、すべての API メソッドを公開するのではなく、支出分析とワークフロー連携に重点を置いています。

主な機能

  1. 01取引の検索と一括編集、項目ごとの結果表示
  2. 02カテゴリ、口座、月別の支出集計
  3. 03口座と予算をまとめて取得する概要機能
  4. 04取引の分割と定期取引スケジュールの管理
  5. 05引数補完付きの MCP リソースとプロンプト

活用シーン

  1. 01加盟店名やキーワードで取引を探し、カテゴリを一括変更する
  2. 02月ごとの支出傾向と予測を比較する
  3. 03会話を通じて口座残高と予算の進捗を確認する

MCP 対応

本プロジェクトは MCP サーバーとして 29 のツールを MCP クライアントに公開し、口座・カテゴリ・金融機関のリソースおよびガイド付きプロンプトも提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jamiew-monarch": {
"command": "uvx",
"args": [
"monarch-mcp-jamiew"
],
"env": {
"MONARCH_EMAIL": "<MONARCH_EMAIL>",
"MONARCH_PASSWORD": "<MONARCH_PASSWORD>",
"MONARCH_MFA_SECRET": "<MONARCH_MFA_SECRET>",
"MONARCH_FORCE_LOGIN": "<MONARCH_FORCE_LOGIN>"
}
}
}
}
起動コマンドuvx monarch-mcp-jamiew
設定が必要な環境変数
MONARCH_EMAILMonarch Money account email
MONARCH_PASSWORDシークレットMonarch Money account password
MONARCH_MFA_SECRETシークレットTOTP secret for 2FA, not a rotating code
MONARCH_FORCE_LOGINSet to 'true' to skip the cached session

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimonarch-mcp-jamiew0.5.2

ツール

29

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

Monarch Money MCP Server

AI アシスタントを使って、MCP 経由で Monarch Money の口座、取引、予算を読み取り、更新できます。

このフォークの特長

この FastMCP による書き換え版では、colvint のオリジナルサーバーに次のツールを追加しています。

  • 検索と一括編集: search_transactions で加盟店やキーワードを検索できます。update_transactions_bulk では、項目ごとの結果を確認しながら取引を並行して編集できます。
  • 支出分析: get_spending_summary でカテゴリ、口座、月ごとに合計を集計できます。analyze_spending_patterns で月ごとの比較を行えます。
  • 1 回の呼び出しで全体を把握: get_complete_financial_overview で口座、予算、キャッシュフロー、取引、カテゴリをまとめて確認できます。
  • 分割と定期スケジュール: 取引の分割内容の読み取りと置き換え、予定された発生分の確認、加盟店全体の定期設定の編集ができます。

オリジナル版や keithah の機能強化版 Python フォークとは異なり、このサーバーでは次の機能も提供しています。

  • 型付きの結果: outputSchema を使った構造化出力と、テキスト形式のフォールバックを備えています。
  • MCP リソースとプロンプト: 口座、カテゴリ、金融機関のリソース、口座ごとの保有資産・履歴テンプレート、引数の補完機能付きのガイド付きプロンプトを提供します。
  • アシスタント向けの呼び出し: コンパクトな取引・カテゴリの記録、自然言語の日付、読み取り/書き込みラベル、一括分析の進行状況を提供します。

比較の確認日は 2026 年 9 月 14 日です。他のフォークも金融ツールの機能が一部重複しています。機能強化版 Python フォークは、より広範なライブラリ API を公開しています。このプロジェクトは、すべての API メソッドを公開するのではなく、分析ワークフローと MCP 連携に重点を置いています。ツール一覧をご覧ください。

セットアップ

uv をインストールし、MCP クライアントが uvx monarch-mcp-jamiew を実行するよう設定してください。Monarch のメールアドレスとパスワードに加えて、TOTP ベースの 2FA に必要な MFA シークレットが必要です。

これらの機能は 0.5.2 に含まれており、PyPI から利用できます。

標準設定

mcpServers 設定を使用するクライアントの場合:

{
  "mcpServers": {
    "monarch-money": {
      "command": "uvx",
      "args": ["monarch-mcp-jamiew"],
      "env": {
        "MONARCH_EMAIL": "[email protected]",
        "MONARCH_PASSWORD": "your-password",
        "MONARCH_MFA_SECRET": "your-mfa-secret-key"
      }
    }
  }
}
Claude Desktop

標準設定のmonarch-moneyエントリーを、設定ファイルのmcpServersオブジェクトに追加します(必要に応じてファイルを作成してください)。

  • macOS:~/Library/Application\ Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

その後、Claude Desktop を完全に終了してから、再度開きます。

Claude Code
claude mcp add monarch-money \
  -e [email protected] \
  -e MONARCH_PASSWORD=your-password \
  -e MONARCH_MFA_SECRET=your-mfa-secret-key \
  -- uvx monarch-mcp-jamiew

すべてのプロジェクトで使えるようにするには、-s userを追加します。claude mcp listで確認してください。

Codex CLI
codex mcp add monarch-money \
  --env [email protected] \
  --env MONARCH_PASSWORD=your-password \
  --env MONARCH_MFA_SECRET=your-mfa-secret-key \
  -- uvx monarch-mcp-jamiew

または、同等のブロックを~/.codex/config.tomlに追加します。

[mcp_servers.monarch-money]
command = "uvx"
args = ["monarch-mcp-jamiew"]
env = { MONARCH_EMAIL = "[email protected]", MONARCH_PASSWORD = "your-password", MONARCH_MFA_SECRET = "your-mfa-secret-key" }
.mcp.json(プロジェクト単位)

Claude Code のプロジェクトスコープで使う場合は、標準設定を.mcp.jsonとしてプロジェクトのルートに保存します。認証情報を含むファイルは、バージョン管理の対象外にしてください。

Hermes

~/.hermes/config.yamlのmcp_servers:の下に追加し、その後/reload-mcpを実行します(または Hermes を再起動します)。

mcp_servers:
  monarch-money:
    command: uvx
    args: ["monarch-mcp-jamiew"]
    env:
      MONARCH_EMAIL: "[email protected]"
      MONARCH_PASSWORD: "your-password"
      MONARCH_MFA_SECRET: "your-mfa-secret-key"
OpenClaw

標準設定を~/.openclaw/openclaw.jsonのmcpServersの下に追加し、その後ゲートウェイを再起動します。

その他の MCP クライアント(Cursor、VS Code、Windsurf、Cline、Zed など)

コマンドにuvx、引数にmonarch-mcp-jamiew、上記の認証情報を指定して、ローカルの stdio MCP サーバーを設定します。クライアントの設定形式に従ってください。

方法がわからない場合は、エージェントに次のように伝えてください。

https://github.com/jamiew/monarch-mcp から Monarch Money MCP サーバーをインストールしてください。PyPI パッケージはmonarch-mcp-jamiewで、uvx monarch-mcp-jamiewを使って実行します。TOTP ベースの 2FA に必要な環境変数はMONARCH_EMAIL、MONARCH_PASSWORD、MONARCH_MFA_SECRETです。

ソースから(開発用)

ソースからインストールする場合は、固定されたmonarchmoneycommunityのコミットを使用します。

git clone https://github.com/jamiew/monarch-mcp
cd monarch-mcp
uv sync --locked

次に、絶対パスを使ってクライアントからローカルコピーを指定します(which uvとpwdでパスを確認できます)。

{
  "mcpServers": {
    "monarch-money": {
      "command": "/abs/path/to/uv",
      "args": ["--directory", "/abs/path/to/monarch-mcp", "run", "python", "server.py"],
      "env": {
        "MONARCH_EMAIL": "[email protected]",
        "MONARCH_PASSWORD": "your-password",
        "MONARCH_MFA_SECRET": "your-mfa-secret-key"
      }
    }
  }
}

メモ

claude mcp addおよびcodex mcp addコマンドは、認証情報をシェルの履歴に保存する場合があります。これを避けるには、クライアントの設定を直接編集し、設定ファイルを保護してください。

MFA シークレットの取得
  1. Monarch Money の設定に移動し、2FA を有効にします。
  2. QR コードが表示されたら、「Can't scan?」または「Enter manually」を探します。
  3. ローテーションする6桁のコードではなく、TOTP シークレットキーをコピーします。
  4. これをMONARCH_MFA_SECRETとして使用します。

ツール

このサーバーは、次の29個のツールを公開します。

ツール説明
get_accounts残高付きの口座一覧
get_transactions日付、口座、カテゴリによる取引の取得。保留中/確定済みで絞り込み可能
search_transactions店舗名またはキーワードで検索。保留中/確定済みのみの指定も可能
get_transaction_categoriesカテゴリ一覧(デフォルトではコンパクト表示)
get_transaction_rules優先順位順にコンパクトな自動化ルールをページごとに取得
create_transaction_rule店舗名、明細テキスト、または金額に一致するルールを作成
update_transaction_ruleルールを編集し、必要に応じて過去の取引にも適用
delete_transaction_ruleルールを削除。すでに変更された取引はそのまま残ります
get_household_members所有者の更新に使う世帯メンバーと ID
create_transaction手動取引を作成
update_transaction取引の項目を更新、または所有者を割り当て
update_transactions_bulk項目または所有者を更新し、項目ごとの成功/失敗を返す
get_transaction_splits取引の分割情報を取得
get_transaction_details分割の親 ID と各明細 ID を解決し、分割フラグ、カテゴリ ID、解決済みの取引 ID を返す
update_transaction_splitsすべての分割情報を置き換えます。空のリストを指定すると削除されます
get_budgets予算データと支出分析
get_cashflow収入と支出の分析
get_account_holdings口座の投資保有資産(account_id が必要)
get_all_holdings証券口座ごとにまとめた保有資産。他の口座種別は対象外
get_account_historyページ分割された残高履歴。指定した ISO 日付の範囲を含み、ローカルで適用
get_institutionsリンク済みの金融機関
get_recurring_transactions日付範囲内に予定されている取引
update_recurring_transaction店舗の定期取引スケジュールを変更
set_budget_amount予算カテゴリの金額を設定
create_manual_account手動追跡する口座を作成
refresh_accounts口座データの更新を開始
get_spending_summaryカテゴリ、口座、または月ごとに集計した支出
get_complete_financial_overview口座、取引、予算、キャッシュフローのコンパクトな概要。完全なセクションはオプトイン
analyze_spending_patterns月次の傾向と予測。コンパクトな予算情報と明示的な上流エラーを含む

保留中の取引には is_pending=True、確定済みの取引には False を指定します。両方を対象にする場合は省略します。単一更新と一括更新では、get_household_members から取得した owner_user_id を指定できます。 空文字列を指定すると共有所有権が設定され、省略または null の場合は所有権が変更されません。 割り当てを行うと、継承された所有権は上書きされます。verbose=True を指定して ownedByUser を確認してください。 更新レスポンスには含まれません。

ルールはデフォルトで 1 ページあたり 25 件(最大 100 件)、履歴はデフォルトで 100 件(最大 1,000 件)です。 limit、offset、返された next_offset を使って続きを取得してください。total_count には一致するすべてのレコードが含まれます。 ルールの詳細は verbose=True で引き続き取得できます。

ルールでは、カテゴリ、店舗名、タグ、または確認ステータスを設定できます。また、レポートから取引を非表示にすることもできます。各ルールでは、店舗名、明細テキスト、または金額のいずれかを照合条件として指定する必要があります。条件に該当しないルールへの編集は Monarch に無視されます。

ルールを編集するとき、省略した項目は変更されません。値を消去するには、[] または "" を渡します。Monarch は編集のたびにルール全体を置き換えるため、サーバーは変更を含むルール全体を返します。これにより、所有者、目標、分割情報など、ツールでは編集できない設定が保持されます。

apply_to_existing_transactions=True を指定すると、一致する過去の取引も変更されます。元に戻すのが難しいため、まず search_transactions で一致する取引を確認してください。

概要と支出分析は、デフォルトではコンパクトな要約を返します。verbose=True を指定すると完全なセクションが返されます。詳細モードでも、取引サンプルはそれぞれ最大 500 件と 2,000 件に制限されます。合計が完全なものとして扱えるか判断する前に、batch_metadata.transactions_truncated を確認してください。null は、上流で件数を取得できなかったことを意味します。

定期取引

get_recurring_transactions(start_date, end_date) は、記録済みの履歴ではなく予測を返します。 日付は ISO 形式または自然言語で指定できます。日付を指定しない場合は今月が選択され、日付を 1 つだけ指定した場合は、その月から不足している範囲の境界が補われます。

発生項目には、ストリーム、口座、カテゴリ、および利用可能な場合は一致する transactionId が含まれます。isPast は支払い済みを意味しません。記録済みの取引には get_transactions(is_recurring=True) を使用し、予測と記録済みの一致項目を二重に数えないでください。

update_recurring_transaction は、個別の発生項目ではなく、加盟店全体のスケジュールを変更します。stream.id や transactionId ではなく stream.merchant.id を使用し、名前が変更されないよう現在の加盟店名を指定してください。変更する設定のみを渡します:frequency、base_date、amount、is_recurring、または is_active。省略した設定は変更されません。Monarch の頻度と符号付き金額を使用してください。この操作では、サブスクリプションの解約、送金、記録済み取引の作成は行われません。

取引の形式

get_transactions と search_transactions は、デフォルトで簡潔なレコードを返します:

{
  "id": "txn_123",
  "date": "2025-03-15",
  "amount": -12.50,
  "merchant": "Corner Deli",
  "plaidName": "CORNER DELI NYC",
  "category": "Restaurants & Bars",
  "categoryId": "cat_001",
  "account": "Main Credit Card",
  "needsReview": true
}

pending は true の場合のみ表示され、notes は空でない場合のみ表示されます。取引の詳細をすべて取得するには get_transactions または search_transactions で、カテゴリの詳細をすべて取得するには get_transaction_categories で verbose=True を設定してください。

セッション管理

セッションは、次回以降のログインを高速化するために ~/.monarch-mcp/ にキャッシュされます(場所は MONARCH_SESSION_DIR 環境変数で変更できます)。認証に問題が発生した場合:

  • キャッシュされたセッションを消去するには、~/.monarch-mcp/session.pickle を削除します
  • 新たにログインするには、環境設定で MONARCH_FORCE_LOGIN=true を設定します
  • システムクロックが正確であることを確認します(TOTP に必要です)

開発

ローカルセットアップ

実際の環境でチェックを行う場合は、.env ファイル(Git の追跡対象外)を作成し、uv --env-file で明示的に読み込みます:

MONARCH_EMAIL="[email protected]"
MONARCH_PASSWORD="your-password"
MONARCH_MFA_SECRET="YOUR_TOTP_SECRET_KEY"
テスト
uv run pytest tests/ -v                          # offline; live tests are skipped
MONARCH_RUN_INTEGRATION=true uv run --env-file .env pytest tests/test_integration.py -v
uv run --env-file .env scripts/health_check.py    # live API connectivity check

統合テストでは、MFA の再利用とログインのスロットリングを避けるため、1 回の新しいログインを共有します。テストが .env を自ら読み込んだり、保存済みセッションを読み書きしたりすることはありません。

CI チェック

CI と同じチェックを実行します:

uv run python scripts/ci.py
リリース

/release を使用して pyproject.toml のバージョンを更新し、コミットして vX.Y.Z のタグを付け、プッシュして GitHub リリースを作成します。公開ワークフロー は OIDC を通じて PyPI と MCP Registry に公開し、タグから server.json のバージョンを設定します。

ログ分析

ツール呼び出し回数と出力サイズを測定します:

uv run scripts/analyze_logs.py                    # full report
uv run scripts/analyze_logs.py --json             # JSON output
uv run scripts/eval_session.py snapshot           # mark log position
# ... use tools in Claude ...
uv run scripts/eval_session.py analyze            # analyze new entries

セキュリティ

警告: このサーバーは、Monarch Money API への非公式なアクセスを使用します。認証情報により、書き込みを含むアカウントへの完全なアクセスが可能になります。

  • サーバーはローカルで実行され、要求された財務データを MCP クライアントに返します。クライアントのプライバシー設定とツールの承認を確認してください。
  • パスワードと MFA シークレットを保護してください。TOTP シークレットがあれば、継続的にコードを生成できます。
  • ~/.monarch-mcp/ 内のセッションファイルには認証トークンが含まれています。これらと、カスタムの MONARCH_SESSION_DIR を保護してください。
  • ログには財務情報の入力値やエラーの詳細が含まれる場合があります。共有する前に確認してください。
  • 認証情報を含む .env、.mcp.json、クライアント設定ファイルは、決してコミットしないでください。
  • Monarch Money は、非公式 API へのアクセスをいつでも変更または制限する可能性があります。

クレジット

colvint/monarch-money-mcp からフォークしました。API アクセスには bradleyseanf/monarchmoneycommunity を使用しています。これは hammem/monarchmoney を基にしています。ソースからインストールする場合はコミットを固定し、PyPI からインストールする場合は公開済みのライブラリを使用します。

貢献者: @caseypugh(取引の分割)、@seanperkins(支出サマリーのページネーション)、@rajatbhagat(セットアップドキュメント)、@samyk(取引ルール)、@prerak-proof(取引の詳細)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。