mcpField
C
Copilot Money

Copilot Money

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

Copilot Money について

Copilot Moneyは、Mac上のCopilot Moneyアプリのローカルキャッシュを使って個人の財務を照会・管理するMCPサーバーです。標準の読み取りではネットワーク通信を行わず、ライブ読み取りや書き込みではログイン済みブラウザーセッションでGraphQL APIに接続します。

主な機能

  1. 01ローカルキャッシュから財務データを読み取り
  2. 02取引、口座、保有資産、予算の照会
  3. 03任意のライブ読み取りと書き込みツール
  4. 04カテゴリ、予算、定期取引の管理

活用シーン

  1. 01期間を指定して支出を分析
  2. 02口座残高と純資産の推移を確認
  3. 03保有資産、予算、定期支払いを確認
  4. 04取引を分類、または予算を調整

MCP 対応

MCPクライアントに個人財務データの照会・管理ツールを提供します。標準モードではローカルキャッシュのみを読み取り、ライブ読み取りと書き込みではログイン済みブラウザーセッションを使ってCopilot MoneyのGraphQL APIと通信します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ignaciohermosillacornejo-copilot-money": {
"command": "npx",
"args": [
"-y",
"copilot-money-mcp"
]
}
}
}
起動コマンドnpx -y copilot-money-mcp

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

パッケージ
npmcopilot-money-mcp3.0.0

ツール

14

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

パラメーター型必須説明
latnumberいいえ近接検索の緯度(lon および radius_km と併用)
lonnumberいいえ近接検索の経度(lat および radius_km と併用)
tagstringいいえタグ名で絞り込む(例:"vacation")
citystringいいえ都市名で絞り込む(部分一致)
limitintegerいいえ結果の最大件数(デフォルト:100)
querystringいいえ加盟店名/取引名をフリーテキスト検索
offsetintegerいいえページネーションでスキップする結果数(デフォルト:0)
periodstringいいえ期間の略称:this_month、last_month、last_7_days、last_30_days、last_90_days、ytd、this_year、last_year
regionstringいいえ地域/都市で絞り込む(大文字と小文字を区別しない部分一致)
countrystringいいえ国コードで絞り込む(例:US、CL)
pendingbooleanいいえ保留状態で絞り込む(true は保留中のみ、false は決済済みのみ)
categorystringいいえカテゴリで絞り込む(大文字と小文字を区別しない部分一致)
end_datestringいいえ終了日(YYYY-MM-DD)
merchantstringいいえ加盟店名で絞り込む(大文字と小文字を区別しない部分一致)
radius_kmnumberいいえ検索半径(キロメートル、デフォルト:10)
account_idstringいいえアカウント IDでフィルタリングする
max_amountnumberいいえ取引金額の上限
min_amountnumberいいえ取引金額の下限
start_datestringいいえ開始日(YYYY-MM-DD)
transaction_idstringいいえID で単一の取引を取得(他の絞り込み条件は無視)
exclude_deletedbooleanいいえPlaid によって削除済みとマークされた取引を除外(デフォルト:true)
exclude_excludedbooleanいいえユーザーが除外した取引を除外(デフォルト:true)
transaction_typeenumいいえ特殊な種類で絞り込む:foreign(海外取引)、refunds(返金)、credits(キャッシュバック/特典)、duplicates(重複の可能性がある取引)、hsa_eligible(医療費)、tagged(タグあり)foreign | refunds | credits | duplicates | hsa_eligible | tagged
exclude_transfersbooleanいいえ口座間の振替とクレジットカードの支払いを除外(デフォルト:true)
exclude_split_parentsbooleanいいえ分割取引の親レコード(children_transaction_ids を含むドキュメント)を除外します。子レコードには実際の分類済み金額が含まれているため、親レコードを返すと支出が二重計上されます。デフォルト:true。

詳細

Copilot Money MCP サーバー

ローカルの Copilot Money データを使って、AI で個人の財務状況を照会・管理できます

License: MIT Node.js 18+ TypeScript Tests codecov copilot-money-mcp MCP server MCP Registry

免責事項

これは独立したコミュニティ主導のプロジェクトであり、Copilot Money またはその親会社とは一切提携、承認、関係がありません。 このツールは、ローカルにキャッシュされたデータを AI で照会できるようにするため、独立した開発者が作成しました。「Copilot Money」は、それぞれの所有者の商標です。

メモ

Copilot Money は、公式 MCP サーバーを発表しました(現在はウェイトリスト制で、読み取り専用です)。 ファーストパーティの読み取り専用連携で要件を満たせる場合は、このコミュニティプロジェクトではなく、そちらの利用を強くご検討ください。詳細の確認とウェイトリストへの登録は、agent.copilot.money から行えます。

書き込みツール(取引のカテゴリ分類、予算管理、定期支払いの編集など)が必要な場合、ネットワークリクエストを一切行わない完全オフラインのキャッシュモードで読み取りたい場合、あるいは公式版の公開を待たずに今すぐ利用したい場合には、このプロジェクトが引き続き役立ちます。

警告

現在、公式 MCP ベータ版では Plaid 接続口座が表示されません。 Copilot チームはこの制限を認めており、解決策に取り組んでいるとしていますが、時期は未定です。金融機関の口座の大半を Plaid 経由で接続している場合、公式 MCP では財務状況を完全に把握できません。このコミュニティサーバーにはこの制限がありません。アプリのローカルキャッシュ全体を読み取り(ライブモードでは、アプリが使用するものと同じ GraphQL API を利用する)ため、Plaid 接続口座も含まれます。

概要

AI アシスタントが Copilot Money の個人財務データにアクセスできるようにする MCP サーバーです。Mac 上のローカルにキャッシュされた Firestore データベース(LevelDB + Protocol Buffers)を読み取ります。読み取りはすべてローカルで行われ、ネットワークリクエストは一切発生しません。

キャッシュモードの読み取りツール 14 個(--live-reads モードでは 25 個:キャッシュ側で引き続き使用できる 8 個 + ライブ側の 17 個)に加え、最大 19 個の書き込みツール — 取引、口座、保有資産、残高、カテゴリ、定期支払い、予算、目標、投資パフォーマンスを照会・変更できます。以下のモード別ツールをご覧ください。

コントリビューター向け:書き込み処理では、当プロジェクトが所有していない API を利用します。リポジトリが Copilot の GraphQL サーフェスのモデルを、気付かないうちに実態から乖離させないための仕組み(適合性台帳、ライブスモークテスト、週次の乖離チェック)については、docs/CONFORMANCE_ARCHITECTURE.md をご覧ください。

プライバシーを最優先

このプロジェクトが運営するサーバーに、お客様のデータを収集、保存、送信することは一切ありません。そもそもそのようなサーバーはありません。詳しくは、プライバシーポリシーをご覧ください。

  • あらゆる種類の分析、テレメトリー、トラッキングは行いません
  • 読み取りは完全にローカルで行われ、ネットワークリクエストは一切ありません
  • オープンソースなので、コードをご自身で確認できます

重要

AI プロバイダーに関する注意事項。 このサーバー自体はローカルで動作し、このプロジェクトが運営するサーバーにデータを送信することはありませんが、接続先の AI アシスタント(Claude、ChatGPT、Gemini など)は、質問への回答の一環として Copilot Money のデータを参照します。 つまり、選択したモデルのプロバイダーであるAnthropic、OpenAI、Google、またはその他のサードパーティに、お客様の財務データが送信され、処理されます。これは各プロバイダー独自のプライバシーポリシーとデータ保持条件に従います。

この MCP サーバーをホスト型 AI モデルと使用すると、お客様の財務データがその AI プロバイダーと共有されることを認識したうえで利用することになります。 このトレードオフを受け入れられる場合にのみ、このツールをご利用ください。受け入れられない場合は、Copilot Money の公式連携を待つか、完全ローカルモデルの利用をご検討ください。

モード別のツール

このサーバーでは、有効にする CLI フラグに応じて、利用可能なツールが異なります。

モードフラグ機能認証ネットワーク利用可能なツール
🟢 デフォルト(none)ローカルの LevelDB キャッシュから読み取ります❌ なし🔌 ゼロ(オフライン)キャッシュモードの読み取りツールとユーティリティツール、合計14個
🌐 ライブ読み取り--live-readsCopilot の GraphQL API 経由でリアルタイムに読み取ります。キャッシュツール6個を入れ替え、ライブ専用ツール11個を追加します🔒 ブラウザーセッション🌐 リクエストごとに HTTPS読み取りツール25個(キャッシュ8個+ライブ17個)
✍️ 書き込み--writeミューテーションツール(取引、タグ、カテゴリ、予算、定期取引、分割)を追加し、--live-reads も自動的に有効にします。書き込みにはサーバー上の最新の取引メタデータが必要なため、ライブ読み取りは書き込みモードと連動します🔒 ブラウザーセッション🌐 リクエストごとに HTTPSライブ読み取りツール25個に加えて、書き込みツール19個

--write を指定すると --live-reads も有効になります。読み取り専用のライブアクセスには、--live-reads のみを指定できます。

📖 ステータス、注意点、既知の制限(目標、株式分割、レスポンスサイズ上限など)を含むツールごとの全一覧は、docs/tools-by-mode.mdをご覧ください。

⬆️ v2 からアップグレードしますか? v3.0.0 では読み取りレスポンスの形式が変更されました。**docs/MIGRATING-v3.md**をご覧ください。ツールの名前変更や削除はありません。行が簡潔になり、2つの引数が廃止されました。


クイックスタート

前提条件
  • Node.js 18+(Claude Desktop にバンドルされています)
  • Copilot Money(macOS App Store 版)
  • Claude Desktop、Cursor、または MCP 互換クライアント
  • --live-reads または --write のみ: app.copilot.money にログイン済みの対応ブラウザー(Chromium 系、Firefox、Safari)。対応ブラウザーの一覧はdocs/graphql-live-reads.mdをご覧ください。 サーバーはそのセッションの Firebase リフレッシュトークンを再利用します。ログインしていなくてもサーバーは起動し、最初のライブ読み取りまたは書き込みツールの呼び出し時に、アシスタントからログインを求められます。ログインして再試行してください。再起動は不要です。デフォルトモードではローカルキャッシュを読み取り、ネットワークリクエストを行わないため、何も必要ありません。
Claude Desktop 経由でインストール
  1. Releasesから最新の.mcpbバンドルをダウンロードします
  2. .mcpbファイルをダブルクリックして、Claude Desktop にインストールします
  3. Claude Desktop を再起動します
  4. 財務について質問してみましょう!
npm 経由でインストール
npm install -g copilot-money-mcp

次に、Claude Desktop の設定(~/Library/Application Support/Claude/claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "copilot-money": {
      "command": "copilot-money-mcp"
    }
  }
}
Cursor へのインストール
  1. パッケージをグローバルにインストールします。

    npm install -g copilot-money-mcp
    
  2. Cursor の設定(Cmd + ,)を開き、機能 > MCP サーバーを選択します

  3. サーバー設定を追加します。

    {
      "mcpServers": {
        "copilot-money": {
          "command": "copilot-money-mcp"
        }
      }
    }
    

できること

支出分析

「先月の外食費はいくらでしたか?」

「過去30日間に購入したAmazonの商品をすべて表示してください」

「今年の支出カテゴリの上位5件を教えてください」

日付範囲、テキスト検索、カテゴリフィルターを指定して、get_transactions(または--live-reads経由で最新データを取得するget_transactions_live)とget_categories(またはget_categories_live)を使用します。

アカウントの概要

「すべてのアカウントを合計した純資産はいくらですか?」

「過去6か月間の当座預金口座の残高を月ごとに表示してください」

「対応が必要な銀行接続はどれですか?」

get_accounts(または--live-reads経由で最新の残高を取得するget_accounts_live)、get_balance_history(アカウントごとのライブ版であるget_balance_history_liveも任意で使用可能)、get_connection_status、および純資産の推移を示すグラフ用のget_networth_liveを使用します。

投資ポートフォリオ

「現在の保有資産と合計リターンを教えてください」

「保有額が最も大きい株式の過去1年間の価格推移を表示してください」

「METAの現在の取得原価はいくらですか?」

get_holdings(またはライブの取得原価を取得するget_holdings_live)と、get_investment_prices(または証券ごとの価格履歴をライブで取得するget_investment_prices_live)を使用します。

予算と目標

「今月の予算は予定どおりに進んでいますか?」

「緊急資金の積み立て状況はどうですか?」

「過去6か月間の目標の履歴を表示してください」

get_budgets(または--live-reads経由のget_budgets_live)と、get_goals/get_goal_historyを使用します(キャッシュのみです。CopilotのGraphQLエンドポイントでは目標データを取得できません)。

サブスクリプションと定期支払い

「支払い中のサブスクリプションを教えてください」

「毎月の定期支払いにいくら使っていますか?」

get_recurring_transactions(または--live-reads経由のget_recurring_live)と、次回支払期日が到来する未払い項目を取得するget_upcoming_recurrings_liveを使用します。

設定

キャッシュTTL

サーバーはデータをメモリに5分間キャッシュします。環境変数で設定できます。

# Set cache TTL to 10 minutes
COPILOT_CACHE_TTL_MINUTES=10 copilot-money-mcp

# Disable caching (always reload from disk)
COPILOT_CACHE_TTL_MINUTES=0 copilot-money-mcp

# Write tools resolve account/item ids for a transaction id via a live
# window fetch when the in-memory index (fed by live reads) misses.
# Default window: 13 months. Raise it to edit older transactions:
COPILOT_WRITE_RESOLVE_WINDOW_MONTHS=30 copilot-money-mcp --write

# Write-resolution routing ids (opaque transaction/account/item ids only —
# never amounts or names) persist whenever live reads are enabled (including
# --write mode), keyed by the logged-in account, so cross-session writes
# skip the live window fetch.
# The same switch also disables the persisted split-parent record
# (split-parents.<uid>.jsonl, opaque ids only): delete_transaction then
# remembers a parent split through this server only until it restarts, and
# after a restart relies on the local cache to refuse it (#842).
# Disable both entirely:
COPILOT_DISABLE_PERSISTENT_INDEX=1 copilot-money-mcp --write

refresh_databaseツールを使って手動で更新することもできます。

デコードタイムアウト

大規模なデータベース(500MB以上)では、デコードタイムアウト(デフォルト:90秒)を延長してください。

# Via environment variable
DECODE_TIMEOUT_MS=600000 copilot-money-mcp

# Via CLI flag
copilot-money-mcp --timeout 600000

1GBを超えるデータベースでは、Node.jsのメモリも増やしてください。

{
  "mcpServers": {
    "copilot-money": {
      "command": "node",
      "args": [
        "--max-old-space-size=4096",
        "/path/to/copilot-money-mcp/dist/cli.js",
        "--timeout", "600000"
      ]
    }
  }
}
対応する日付期間

periodパラメーターでは、次のショートカットを使用できます。

this_month last_month last_7_days last_30_days last_90_days ytd this_year last_year

認証とオプションモード

--live-readsと--writeはどちらも、Copilot MoneyのGraphQL API(app.copilot.money/api/graphql)に対して認証済みの呼び出しを行います。app.copilot.moneyにログイン済みのブラウザーセッションが必要です。サーバーは、Webアプリがブラウザーに保存するものと同じFirebaseのリフレッシュトークンを読み取ります。10種類のブラウザー(Chrome、Arc、Microsoft Edge、Brave、Vivaldi、Chromium、Opera、Opera GX、Safari、Firefox)を検索します。Chromium系ブラウザーは、デフォルトだけでなく、すべてのプロファイルが検索対象です。読み取るファイルとその理由、およびブラウザー全体のLocal Storageの読み取りがCopilotのオリジンに限定されない理由については、PRIVACY.mdを参照してください。

Linuxでは、代わりにLinuxの保存場所を検索します。対象は、Chrome(~/.config/google-chromeと-beta/-unstable)、Microsoft Edge(~/.config/microsoft-edge)、Brave(~/.config/BraveSoftware/Brave-Browser)、Vivaldi(~/.config/vivaldi)、Chromium(~/.config/chromiumおよびsnap版の~/snap/chromium/common/chromium)、Opera(~/.config/opera)、Firefox(~/.mozilla/firefox、~/.mozillaがない場合にFirefox 147以降が新しいプロファイルを作成する~/.config/mozilla/firefox、snap版の~/snap/firefox/common/.mozilla/firefox、flatpak版の~/.var/app/org.mozilla.firefox/.mozilla/firefox)です。~/.configの保存場所ではXDG_CONFIG_HOMEが尊重されます。Arc、Safari、Opera GXはmacOS専用です。

ブラウザーとプロファイルの選択:--browser/--browser-profile

デフォルトでは、上記のブラウザーが固定された順序で試され、最初に見つかった動作中のセッションが使用されます。マシンに複数の Copilot アカウントでログインしている場合(たとえば、ある人は Brave、別の人は Chrome)、使用するアカウントを指定してください。

フラグ環境変数値
--browser <name>COPILOT_BROWSERchrome、arc、edge(または microsoft-edge)、brave、vivaldi、chromium、opera、opera-gx(または operagx)、safari、firefox — 大文字と小文字は区別されません
--browser-profile <name>COPILOT_BROWSER_PROFILEChromium 系:プロファイルのディレクトリ(Default、Profile 2)またはブラウザーに表示されるプロファイル名。Firefox:プロファイルのディレクトリ(abcd1234.default-release)、最初のピリオド以降の部分(default-release)、または profiles.ini の Name=。大文字と小文字は区別されません。複数のプロファイルに一致する名前は拒否されます(下記参照)。ディレクトリ名と完全一致し、大文字と小文字を区別して照合するには dir: を付けます(dir:Profile 1)。表示名/Name= のみと照合するには name: を付けます(dir: または name: で始まる名前の場合は、接頭辞を二重に付けます。例:name:name:Work)。Linux では、Chrome のプロファイル名は安定版、ベータ版、開発版の各チャンネルで照合され、一致するすべてのプロファイルが検索されます。ブラウザーが必要です。
--browser-data-dir <path>COPILOT_BROWSER_DATA_DIRブラウザーのデフォルトの場所を置き換えるカスタムユーザーデータルートです。--user-data-dir で起動したブラウザー、ポータブルインストール、コピーしたプロファイルに使用します。Chromium 系:Local State と Default/Profile N ディレクトリを含むフォルダー(Opera ではルートレイアウトのストレージも含みます)。Firefox:profiles.ini やプロファイルディレクトリを直接、または Profiles/ の下に含むプロファイルルート、あるいは単一のプロファイルディレクトリ(storage/default、prefs.js、times.json のいずれかを含むもの)。絶対パスを使用してください。先頭の ~ は展開され、相対パスはサーバーの作業ディレクトリを基準に解決されます。MCP ホストでは、作業ディレクトリが / に設定されていることがよくあります。ブラウザーが必要です。Safari ではサポートされていません。

各フラグは、対応する環境変数より優先されます。ブラウザーを指定すると、読み取られるのはそのブラウザーのみ(プロファイルも指定した場合は、そのプロファイルのみ)で、他のブラウザーへのフォールバックはありません。そのため、別の人のブラウザーからセッションが気付かないうちに読み込まれることはありません。見つからない場合は、検索対象を正確に示すエラーが表示されます。例:No Copilot Money session found in Brave (profile "Default"). …。また、ブラウザーのデータディレクトリまたはプロファイルが存在しない場合は、その旨も表示されます。 プロファイル名では、必ず1つだけのプロファイルを指定する必要があります。表示名は一意ではありません。また、Microsoft Edge に組み込まれているプロファイルの表示名は、ディレクトリ名と1つずつずれています(ディレクトリ Default は「Profile 1」、ディレクトリ Profile 1 は「Profile 2」と表示されます)。そのため、あるプロファイルのディレクトリ名と別のプロファイルの表示名に一致する名前、複数の表示名に一致する名前、または複数の Firefox プロファイルに一致する名前は拒否され、検索は行われません。--browser-profile "Profile 1" is ambiguous in Microsoft Edge: it matches directory "Profile 1" and the display name of directory "Default". Pick exactly one with --browser-profile "dir:Default" or "dir:Profile 1". 拒否時に提示される値は、いずれもプロファイルを必ず1つだけ選択します。profiles.ini によってプロファイルディレクトリの外に置かれている Firefox プロファイルは、dir: ではリストされたディレクトリしか参照できないため、代わりに name: として提示されます。また、名前で区別できない2つの Firefox プロファイル(同じディレクトリ名が --browser-data-dir 直下とその Profiles/ 配下にある場合、または profiles.ini の2つのエントリに同じ Name= があり、プロファイルディレクトリの外に置かれている場合)は、パスで指定します。--browser-profile を省略し、--browser-data-dir で対象を指定してください。dir: 形式では必ずプロファイルを1つだけ指定します。そのため、3つ以上のプロファイルがある標準の Edge では、中央にあるすべての Profile N がディレクトリ名と別のプロファイルの表示名の両方に該当する場合でも、各プロファイルを選択できます。ディレクトリ名とそのディレクトリ自体の表示名が同じでも、曖昧にはなりません。Linux では、いずれか1つの Chrome チャネル内で曖昧さがあると、選択全体が拒否され、エラーメッセージにはそのチャネルのディレクトリ名が示されます。

選択が適用されるのは、--live-reads または --write を指定した場合のみです。その場合、未知のブラウザー名、ブラウザーがないプロファイル、Linux での macOS 専用ブラウザー、または不正な --browser-data-dir があると、サーバーは起動時にエラーで停止します。デフォルトのキャッシュのみのモードではブラウザーを読み取らないため、フラグまたは環境変数で指定した選択は、有効かどうかにかかわらず無視され、サーバーは停止せず、標準エラー出力に警告が1行表示されます。

--browser-data-dir を指定すると、そのディレクトリだけが読み取られます。ブラウザーのデフォルトの場所や、ほかのブラウザーは読み取られません。その場合、--browser-profile はそのディレクトリ内のプロファイル(ディレクトリ名、Local State の表示名、Firefox のサフィックス、または profiles.ini の Name=。相対パスの Path= エントリはデータディレクトリを基準に解決されます)を照合します。単一の Firefox プロファイルを指定する場合は、--browser-profile は不要です。別のプロファイルを指定すると拒否されます。パスが存在しない場合、ディレクトリではない場合、ブラウザーが指定されていない場合、またはブラウザーが Safari(場所が macOS で固定されているため)の場合、サーバーは起動を拒否します。ディレクトリにセッションがない場合は、エラーにそのディレクトリ名が示されます。No Copilot Money session found in Chrome (data dir "/home/me/chrome-profile/Fork-18"). … また、パスがユーザーデータのルートではなく Chromium の単一プロファイル(名前が Default / Profile N、または Preferences ファイルを含む)のように見える場合は、その旨と、親ディレクトリおよび --browser-profile を指定するよう案内するエラーが表示されます。

{
  "mcpServers": {
    "copilot-money": {
      "command": "copilot-money-mcp",
      "args": ["--live-reads", "--browser", "brave", "--browser-profile", "Default"]
    }
  }
}

または、同じエントリに "env": { "COPILOT_BROWSER": "brave", "COPILOT_BROWSER_PROFILE": "Default" } を指定しても同じです。カスタムの --user-data-dir で起動した Chrome の場合:

"args": ["--live-reads", "--browser", "chrome", "--browser-data-dir", "/home/me/chrome-profile/Fork-18"]

デフォルトモードでは認証は不要で、ネットワークリクエストは一切発生しません。読み取り元はローカルの LevelDB キャッシュです。

--live-reads:GraphQL によるリアルタイム読み取り
copilot-money-mcp --live-reads

キャッシュモードの読み取りツール 6 個(get_transactions、get_accounts、get_categories、get_budgets、get_recurring_transactions、get_holdings)を、GraphQL を利用した同等のライブツールに置き換え、新たに 11 個のツール(get_tags_live、get_networth_live、get_upcoming_recurrings_live、get_monthly_spend_live、get_balance_history_live、get_investment_prices_live、refresh_cache、get_investment_allocation_live、get_top_movers_live、get_aggregated_holdings_live、get_investment_balance_live)を追加します。

次のような場合に使用します。

  • macOS アプリがまだ事前取得していない取引が必要な場合(自動取得の対象期間は通常約 30 日です。それより前の取引を取得するには、アプリを開いて過去にさかのぼり、キャッシュへの保存を促すか、--live-reads を使ってサーバーに直接クエリを送信してください)。
  • 証券ごとの最新の取得原価や、期間ごとの残高データが必要な場合。
  • macOS アプリが最近同期されていない場合。
--write:GraphQL による変更(--live-reads を含みます)
copilot-money-mcp --write

取引、タグ、カテゴリ、定期取引、予算、分割取引に対応する 19 個の変更ツールを追加します。デフォルトでは無効で、明示的に有効にしない限り、サーバーは読み取り専用です。

--write を有効にすると、--live-reads も自動的に有効になります。書き込みツールは、ライブ GraphQL インターフェースを使って取引のメタデータ(アカウント/アイテム ID)を解決するため、ローカルの LevelDB キャッシュに保存されている約 30 日分の取引だけでなく、API が公開しているあらゆる取引を編集できます。書き込みに必要な認証済みネットワーク呼び出しに同意した後は、読み取りを古いキャッシュに限定しておくことでプライバシーやパフォーマンスが向上する理由はありません。

copilot-money-mcp --write --live-reads   # equivalent to `--write` alone; --live-reads is redundant
Claude Desktop/Cursor での設定

MCP 設定の args 配列にフラグを追加します。

{
  "mcpServers": {
    "copilot-money": {
      "command": "copilot-money-mcp",
      "args": ["--write"]
    }
  }
}

編集後、Claude Desktop/Cursor を再起動してください。

既知の制限事項

ローカルキャッシュへの依存

このサーバーはクラウドではなく、Copilot Money のローカル Firestore キャッシュから読み取ります。Firestore のオフライン永続化機能は、アプリがこれまでに取得したすべてのドキュメントをキャッシュするため、ローカルデータベースには通常、アプリで表示したすべての取引、アカウント、予算、目標、その他のデータが含まれています。Firestore のデフォルトのキャッシュサイズは 100 MB(数万件の取引を保存できる容量)です。この上限を超えない限り、古いドキュメントが削除されるのは LRU ガベージコレクションによる場合のみです。

キャッシュデータを最大限に増やすには: Copilot Money アプリを開き、取引履歴、アカウント、予算などのデータを表示して、取得およびローカルへのキャッシュを確実に行ってください。

目標は読み取り専用です

get_goals と get_goal_history は動作します(キャッシュのみ)が、目標の書き込みツールはありません。Copilot の GraphQL エンドポイントでは目標の変更が公開されていないためです。Copilot での目標の作成、編集、拠出はモバイルアプリのみで行え、iOS/デスクトップの通信をキャプチャしない限り、このプロジェクトではアクセスできない経路を通ります。

投資の分割情報は、現在保有している証券に限られます

get_investment_splits は、現在保有している証券の分割イベント(日付と調整倍率)を返します。保有しなくなった証券は、やがてキャッシュから削除されます。分割情報を取得する GraphQL エンドポイントはないため、これが唯一の方法です。

また、get_investment_prices と get_investment_prices_live は、すでに分割調整済みおよび配当調整済みの価格を返します(Copilot がサーバー側で Plaid の調整係数を適用します)。通常、価格を過去にさかのぼって補正するために、未調整の分割イベントを取得する必要はありません。

ライブ投資価格の取得には保有状況の確認が必要です

get_investment_prices_live は、現在リンク済みアカウントにある証券に対してのみ動作します。保有していないティッカーの価格系列を要求すると、「リンク済みアカウントにありません」という明示的なエラーが返されます。

長い時系列の応答には上限があります

時系列のライブツール(get_balance_history_live、get_networth_live、get_investment_prices_live)は、MCP の単一ツール結果のトークン上限に収めるため、デフォルトで応答を 500 行に制限します。ページネーションには max_rows / offset を渡すか、行数を減らすために time_frame を狭めてください。

get_investment_balance_live には、別の名前でより厳しい独自の上限があります。history_limit のデフォルトは 30 ポイントで、系列全体を取得するには 0 を指定します。応答には常に history_total_count と history_truncated が含まれ、current の値は別途取得されるため、切り捨てによって失われることはありません。

トラブルシューティング

データベースが見つからない

「Database not available」と表示された場合:

  1. Copilot Money がインストールされ、データが同期されていることを確認してください
  2. データベースの場所を確認してください:~/Library/Containers/com.copilot.production/Data/Library/Application Support/firestore/__FIRAPP_DEFAULT/copilot-production-22904/main
  3. ディレクトリに .ldb ファイルが存在することを確認してください
  4. カスタムパスを指定してください:copilot-money-mcp --db-path /path/to/database
デコードワーカーがタイムアウトした

「Decode worker timed out」と表示された場合:

  1. タイムアウトを延長してください:copilot-money-mcp --timeout 300000(5 分)
  2. 1GB 以上のデータベースでは、Node.js のメモリも増やしてください:node --max-old-space-size=4096 dist/cli.js --timeout 300000
取引が見つからない
  • Copilot Money アプリを開き、同期が完了するまでお待ちください
  • データベースの構造が変更された可能性があります — issue を作成してください

コントリビューション

開発環境のセットアップ、アーキテクチャ、新しいツールの追加方法については、CONTRIBUTING.md を参照してください。

ライセンス

MIT ライセンス - 詳細は LICENSE を参照してください。

謝辞

  • Anthropic の MCP SDK を使用して構築
  • Zod でデータを検証
  • Bun を使用して開発

コメント

MCP は初めてですか?

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

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