mcpField
M
monzo-mcp

monzo-mcp

ローカル
github.com/partymola金融データ43 日前に更新

monzo-mcp について

monzo-mcp は、Monzo の口座、残高、ポット、取引履歴、支出分析にアクセスする読み取り専用の MCP サーバーです。OAuth トークンの自動更新と、永続化されるローカル SQLite 取引キャッシュを備えています。

主な機能

  1. 017 種類の読み取り専用銀行ツール
  2. 02OAuth トークンの自動更新
  3. 03永続化された SQLite 取引キャッシュ
  4. 04カテゴリ別・加盟店別の支出分析
  5. 05詳細条件による取引検索

活用シーン

  1. 01口座残高と貯蓄ポットの確認
  2. 02カテゴリや加盟店別の支出分析
  3. 03キャッシュ済み取引履歴の検索

MCP 対応

MCP クライアントに Monzo の口座情報と取引情報を読み取り専用ツールとして公開します。キャッシュを読むツールは、その日の同期がまだであれば自動で同期します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"partymola-monzo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/partymola/monzo-mcp:v0.10.0"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/partymola/monzo-mcp:v0.10.0

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

パッケージ
ocighcr.io/partymola/monzo-mcp:v0.10.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

monzo-mcp

CI License: GPL v3 Python 3.13+ Glama MCP Server

Monzo 銀行 API 用の MCP サーバーです。Claude Code または任意の MCP クライアントを通じて、口座、残高、ポット、取引、支出分析に読み取り専用でアクセスできます。

生のベアラートークンを使用する他の Monzo MCP 実装とは異なり(トークンの有効期限は 6 時間です)、このサーバーはトークンの自動更新を含む完全な OAuthに対応しています。

特長

  • 読み取り専用ツール 7 種類 - 書き込み操作や資金移動はありません
  • 自動更新対応 OAuth - トークンは自動で更新されるため、手動で再生成する必要はありません
  • ローカル取引キャッシュ - SQLite データベースにより、Monzo の 90 日間の SCA ウィンドウを超えてデータを保持します
  • 必要に応じた自動同期 - キャッシュ読み取りツールは、当日まだ同期されていない場合に差分同期を自動実行するため、手動で monzo_sync を呼び出す必要はほとんどありません
  • 支出分析 - カテゴリー別の内訳、主要加盟店、前月との比較
  • 取引検索 - キャッシュされた履歴から、加盟店、受取人(取引相手)、説明、メモで検索できます
  • 取引相手の詳細情報 - 銀行振込(高速決済、P2P、Bacs)は、受取人の氏名、ソートコード、口座番号とともにキャッシュされます

ツール

ツール説明データソース
monzo_list_accounts種類と ID を含む口座一覧ライブ API
monzo_get_balance現在の残高と本日の支出ライブ API
monzo_list_pots貯蓄ポットと残高ライブ API
monzo_sync取引をローカルキャッシュに同期ライブ API -> SQLite
monzo_list_transactionsキャッシュされた取引の一覧表示/絞り込みローカルキャッシュ(古い場合は自動同期)
monzo_search_transactions加盟店/受取人/説明/メモで検索ローカルキャッシュ(古い場合は自動同期)
monzo_spendingカテゴリー別内訳を含む支出分析ローカルキャッシュ(古い場合は自動同期)

前提条件

  • Python 3.13+(CI で Linux、macOS、Windows 上の 3.13 および 3.14 をテスト済み)
  • uv(推奨)または pip
  • developers.monzo.com で OAuth クライアントを登録した Monzo アカウント

インストール

git clone https://github.com/partymola/monzo-mcp.git
cd monzo-mcp
uv venv --python 3.13 .venv
uv pip install -e .

このパッケージは PyPI にはありません。名称は無関係な別のプロジェクトが使用しています。代わりにコンテナーイメージを公開しています。詳しくはDockerをご覧ください。

セットアップ

1. Monzo OAuth クライアントを登録する

developers.monzo.com にアクセスし、OAuth クライアントを作成します。

  • リダイレクト URL を http://localhost:6600/callback に設定します
  • Client ID と Client Secret を控えておきます
2. 認証する
monzo-mcp auth

Monzo OAuth のためにブラウザーが開きます。認証後、5 分以内にMonzo アプリでログインを承認すると、取引履歴全体にアクセスできます(Monzo の SCA ウィンドウ)。

3. Claude Code に登録する
claude mcp add -s user monzo -- /path/to/monzo-mcp/.venv/bin/monzo-mcp

Windows では、コンソールスクリプトは .venv\Scripts\monzo-mcp.exe にあります。

4. 初回同期

Claude Code で monzo_sync を実行し、取引キャッシュを作成します。SCA ウィンドウを活用するため、認証後すぐに実行してください(最大 11 か月分の履歴を取得できます)。

Docker

イメージは ghcr.io/partymola/monzo-mcp に公開されています。タグには v プレフィックスが付き(:vX.Y.Z)、:latest は最新リリースを指します。

コンテナにはボリュームが必要です。 認証情報と取引キャッシュは /data に保存されます。ここに何もマウントしなくてもコンテナは起動しますが、すべてのツールが未設定であると報告し、認証した内容もコンテナを置き換えると失われます。

まず、セットアップ手順 1 の説明に従って OAuth クライアントを登録します。auth はクライアント ID とシークレットの入力を求めます。後からこれらを指定する方法はありません。リダイレクト URL は、ソースからのインストールと同じ http://localhost:6600/callback です。

名前付きボリュームを使って、認証を一度行います。実行する前に、代わりにバインドマウントを使うかどうかを決めてください。後から切り替える場合は、再認証が必要です。

docker volume create monzo-mcp-data
docker run --rm -it \
  -v monzo-mcp-data:/data \
  -p 127.0.0.1:6600:6600 \
  ghcr.io/partymola/monzo-mcp:latest auth

公開ポートが必要なのはこの手順だけです。OAuth リダイレクトがコンテナに到達できるようにします。127.0.0.1 にバインドすると、コールバックリスナーがネットワークに公開されません。ブラウザーは開きません。コンテナにはブラウザーがないため、表示された URL をコピーしてください。その後、5 分以内に Monzo アプリでログインを承認します(Monzo SCA の有効時間を参照)。

次に、同じボリュームを再利用してサーバーを登録します。

claude mcp add -s user monzo -- \
  docker run --rm -i -v monzo-mcp-data:/data ghcr.io/partymola/monzo-mcp:latest

-i は必須です。サーバーは stdin と stdout を介して JSON-RPC を使用します。

すぐに同期してください。 Monzo アプリで承認してから 5 分後に、11 か月分のバックフィルができなくなります(Monzo SCA の有効時間を参照)。また、この方法はソースからのインストールより手順が長いため、サーバーの登録後すぐに monzo_sync を呼び出してください。間に合わないと、エラーが表示されないまま、代わりに 90 日分しか取得できなくなります。

ファイルを読み取り可能な場所に保存するには、名前付きボリュームの代わりにバインドマウントを使用します。コンテナは root として実行され、認証情報は所有者のみが読み取り可能な状態で書き込まれるため、--user を指定しないと root 所有になります。

mkdir -p ~/monzo-mcp-data/config
docker run --rm -it \
  -v ~/monzo-mcp-data:/data \
  --user $(id -u):$(id -g) \
  -p 127.0.0.1:6600:6600 \
  ghcr.io/partymola/monzo-mcp:latest auth

サーバーのコマンドにも同じ -v と --user を指定してください。先にディレクトリを作成してください。名前付きボリュームに対して --user を指定すると、イメージから root 所有で初期化されるため失敗します。

CLI

monzo-mcp              Start the MCP server (stdio transport)
monzo-mcp auth         Interactive OAuth setup (opens the browser)
monzo-mcp --version    Print the installed package version

設定

すべての設定は環境変数で行います(任意)。

変数デフォルト説明
MONZO_MCP_CONFIG_DIR<package>/config/OAuth 認証情報とトークンの保存ディレクトリ
MONZO_MCP_DB_PATH<package>/monzo.dbSQLite 取引キャッシュへのパス
MONZO_MCP_CALLBACK_HOSTlocalhostauth コールバックサーバーがバインドするインターフェース。リダイレクト URI には影響しません

コンテナイメージでは、最初の 2 つの変数を /data 以下に設定しています。パッケージ相対のデフォルト値では、マウントできないインタープリターの lib ディレクトリ内に解決されるためです。また、公開ポートへの接続はコンテナのブリッジインターフェースに届き、localhost へのバインドでは接続が拒否されるため、3 つ目の変数を 0.0.0.0 に設定しています。

認証情報ファイル(monzo-mcp auth が作成):

  • config/monzo_client.json - OAuth クライアント ID とシークレット
  • config/monzo_tokens.json - アクセストークンとリフレッシュトークン(自動更新)

Monzo SCA の有効時間

Monzo の強力な顧客認証(SCA)により、取引履歴へのアクセスが制限されます。

  • アプリでの承認から 5 分以内:最大約 11 か月分の履歴
  • 有効時間の経過後:直近 90 日分のみ

ローカルの SQLite キャッシュには、同期したすべての取引が永続的に保存されるため、monzo-mcp auth の後、速やかに monzo_sync を実行してください。

特定の期間をバックフィルするには、monzo_sync に since を渡します。ISO 日付(2026-01-01)または日時(2026-01-01T14:30:00Z)を指定できます。直近 90 日以内であれば、いつでも実行できます。それより前まで遡れるのは SCA の有効時間内に限られます。有効時間外ではリクエストが拒否され、同期ではエラーなしに、キャッシュ内の最新の取引より新しいデータのみが取得されます。

古いキャッシュ済み取引に新しいバージョンで追加されたフィールド(銀行振込の取引相手/受取人の詳細など)が追加されるのは、再取得した場合のみです。認証後の全件同期では、再取得対象の履歴についてこれらのフィールドが追加されます。

セキュリティ

  • 書き込みツールはありません - 送金、ポット間の資金移動、取引の変更はできません
  • Monzo API 自体は外部口座に送金できません
  • トークンは config/ ディレクトリ内の JSON ファイルとして保存されます(gitignore 対象)
  • すべての API 呼び出しは、Bearer トークン認証を使った GET リクエストです

トラブルシューティング

  • 「SCA required」と表示される、または90日分の履歴しか取得できない - monzo-mcp auth を再実行し、5分以内に Monzo アプリでログインを承認してから、すぐに同期してください(上記の SCA 有効期間を参照)。
  • トークンの期限切れ/更新されない - monzo-mcp auth を再実行して、再認証してください。
  • 「No transaction data available」と表示される - キャッシュが空です。認証後に一度 monzo_sync(またはキャッシュを読み取るツール。自動的に同期されます)を呼び出してください。
  • Docker で各ツールが「not configured」と報告する、または再起動後に認証状態が保持されない - /data に何もマウントされていません。Docker を参照してください。auth の実行時とサーバーの起動時に、同じボリュームを渡す必要があります。
  • 承認後も auth が「Waiting for callback...」のままになる - コールバックが届いていません。Ctrl-C を押して、もう一度実行してください。Docker の場合、ポートが公開されていることを確認してください(-p 127.0.0.1:6600:6600)。

コントリビュート

開発環境のセットアップ、テストのワークフロー、プリコミットフックについては CONTRIBUTING.md を参照してください。変更内容は CHANGELOG.md で追跡されています。

ライセンス

GPL-3.0-or-later。LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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