freshcrate
Skin:/
Home > MCP Servers > copilot-money-mcp

copilot-money-mcp

MCP server for Copilot Money App - AI powered personal finance queries using local data

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

MCP server for Copilot Money App - AI powered personal finance queries using local data

README

Copilot Money MCP Server

Query and manage your personal finances with AI using local Copilot Money data

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

Disclaimer

This is an independent, community-driven project and is not affiliated with, endorsed by, or associated with Copilot Money or its parent company in any way. This tool was created by an independent developer to enable AI-powered queries of locally cached data. "Copilot Money" is a trademark of its respective owner.

Overview

An MCP server that gives AI assistants access to your Copilot Money personal finance data. It reads from the locally cached Firestore database (LevelDB + Protocol Buffers) on your Mac. Reads are 100% local with zero network requests.

17 read tools across spending, investments, budgets, goals, and more โ€” query transactions, accounts, holdings, balances, categories, recurring charges, budgets, goals, and investment performance.

Privacy First

We never collect, store, or transmit your data to any server operated by this project โ€” we don't have any. See our Privacy Policy for details.

  • No analytics, telemetry, or tracking of any kind
  • Reads are fully local โ€” zero network requests
  • Open source โ€” verify the code yourself

Important

Heads up about AI providers. While this server itself runs locally and never sends your data to any server operated by this project, the AI assistant you connect it to (Claude, ChatGPT, Gemini, etc.) will see your Copilot Money data as part of answering your questions. That means your financial data will be transmitted to and processed by the provider of whichever model you choose โ€” Anthropic, OpenAI, Google, or another third party โ€” subject to that provider's own privacy policy and data retention terms.

By using this MCP server with a hosted AI model, you are knowingly sharing your financial data with that AI provider. Only use this tool if you are comfortable with that trade-off. If you are not, consider waiting for an official Copilot Money integration or using a fully local model.

Quick Start

Prerequisites

  • Node.js 18+ (comes bundled with Claude Desktop)
  • Copilot Money (macOS App Store version)
  • Claude Desktop, Cursor, or any MCP-compatible client

Installation via Claude Desktop

  1. Download the latest .mcpb bundle from Releases
  2. Double-click the .mcpb file to install in Claude Desktop
  3. Restart Claude Desktop
  4. Start asking questions about your finances!

Installation via npm

npm install -g copilot-money-mcp

Then add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

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

Installation for Cursor

  1. Install the package globally:

    npm install -g copilot-money-mcp
  2. Open Cursor Settings (Cmd + ,) > Features > MCP Servers

  3. Add the server configuration:

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

What You Can Do

Spending Analysis

"How much did I spend on dining out last month?"

"Show me all my Amazon purchases in the last 30 days"

"What are my top 5 spending categories this year?"

Uses get_transactions, get_categories with date ranges, text search, and category filters.

Account Overview

"What's my net worth across all accounts?"

"Show me my checking account balance over the past 6 months, monthly"

"Which bank connections need attention?"

Uses get_accounts, get_balance_history, get_connection_status.

Investment Portfolio

"What are my current holdings and total returns?"

"Show me AAPL price history for the past year"

"What's my time-weighted return this quarter?"

Uses get_holdings, get_investment_prices, get_securities, get_investment_performance, get_twr_returns.

Budgets & Goals

"Am I on track with my budgets this month?"

"How is my emergency fund progressing?"

"Show me my goal history over the past 6 months"

Uses get_budgets, get_goals, get_goal_history.

Subscriptions & Recurring

"What subscriptions am I paying for?"

"How much do I spend on recurring charges per month?"

Uses get_recurring_transactions.

Available Tools

Read Tools (17)

Tool Description
get_transactions Query transactions with filters โ€” date range, category, merchant, amount, account, location, text search, and special types (foreign, refunds, duplicates, HSA-eligible).
get_accounts List all accounts with balances, filter by type (checking, savings, credit, investment). Includes net worth calculation.
get_categories List categories with transaction counts and spending totals. Supports list, tree, and search views.
get_recurring_transactions Identify subscriptions and recurring charges with frequency, cost, and next expected date.
get_budgets Get budgets with spending vs. limit comparisons.
get_goals Get financial goals with target amounts, progress, and monthly contributions.
get_goal_history Monthly progress snapshots for goals with daily data and contribution records.
get_balance_history Daily balance snapshots for accounts over time. Supports daily, weekly, or monthly granularity.
get_holdings Current investment holdings with ticker, quantity, price, cost basis, and total return.
get_investment_prices Historical price data (daily + high-frequency) for stocks, ETFs, mutual funds, and crypto.
get_investment_splits Stock split history with ratios, dates, and multipliers.
get_investment_performance Per-security investment performance data.
get_twr_returns Time-weighted return (TWR) monthly data for investment holdings.
get_securities Security master data โ€” ticker, name, type, price, and identifiers (ISIN/CUSIP).
get_connection_status Bank sync health for linked institutions, including last sync timestamps and errors.
get_cache_info Local cache metadata โ€” date range, transaction count, cache age.
refresh_database Reload data from disk. Cache auto-refreshes every 5 minutes.

Configuration

Cache TTL

The server caches data in memory for 5 minutes. Configure via environment variable:

# 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

You can also refresh manually using the refresh_database tool.

Decode Timeout

For large databases (500MB+), increase the decode timeout (default: 90 seconds):

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

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

For databases over 1GB, also increase Node.js memory:

{
  "mcpServers": {
    "copilot-money": {
      "command": "node",
      "args": [
        "--max-old-space-size=4096",
        "/path/to/copilot-money-mcp/dist/cli.js",
        "--timeout", "600000"
      ]
    }
  }
}

Supported Date Periods

The period parameter supports these shortcuts:

this_month last_month last_7_days last_30_days last_90_days ytd this_year last_year

Known Limitations

Local Cache Dependency

This server reads from Copilot Money's local Firestore cache, not the cloud. Firestore's offline persistence caches every document the app has ever fetched, so the local database generally contains all transactions, accounts, budgets, goals, and other data you've viewed in the app. The default Firestore cache size is 100 MB (enough for tens of thousands of transactions), and older documents are only evicted via LRU garbage collection if that limit is exceeded.

To maximize cached data: Open the Copilot Money app and browse through your data (transaction history, accounts, budgets) to ensure it has been fetched and cached locally.

Troubleshooting

Database Not Found

If you see "Database not available":

  1. Ensure Copilot Money is installed and has synced data
  2. Check the database location: ~/Library/Containers/com.copilot.production/Data/Library/Application Support/firestore/__FIRAPP_DEFAULT/copilot-production-22904/main
  3. Verify .ldb files exist in the directory
  4. Provide a custom path: copilot-money-mcp --db-path /path/to/database

Decode Worker Timed Out

If you see "Decode worker timed out":

  1. Increase the timeout: copilot-money-mcp --timeout 300000 (5 minutes)
  2. For 1GB+ databases, also increase Node.js memory: node --max-old-space-size=4096 dist/cli.js --timeout 300000

No Transactions Found

  • Open the Copilot Money app and wait for sync
  • The database structure may have changed โ€” open an issue

Contributing

See CONTRIBUTING.md for development setup, architecture, and how to add new tools.

License

MIT License - See LICENSE for details.

Acknowledgments

  • Built with MCP SDK by Anthropic
  • Data validation with Zod
  • Developed with Bun

Release History

VersionChangesUrgencyDate
v2.2.0 This release closes Phases 1โ€“3 of the `--live-reads` migration (GraphQL-backed reads layered over the local LevelDB cache, gated by `--live-reads` and a browser session). The live surface now covers transactions, accounts, categories, budgets, recurring charges, holdings, balances, investment prices, tags, net worth, monthly spend, and upcoming recurrings โ€” 13 live read/utility tools that swap in for 6 cache-mode equivalents and add 7 new ones. Default mode (no flags) stays fully local and offlHigh5/13/2026
v2.1.0 ### Added - **Four new transaction write tools** bringing the write surface to 17 (total: 17 read + 17 write = 34 tools). All mirror the shapes Copilot's own web app uses via GraphQL: - **`create_transaction`** ([#320](https://github.com/ignaciohermosillacornejo/copilot-money-mcp/pull/320)) โ€” add a manual transaction to a non-Plaid account. Supports `internal_transfer` flag and amount bounds. The GraphQL response is mapped back to the project's Transaction shape and returned directly; `get_tHigh4/23/2026
v2.0.1 ### Added - **Optimistic in-memory cache patching after writes.** Every successful GraphQL write now patches the corresponding entity in `CopilotDatabase`'s in-memory cache, so a subsequent read returns the new value without needing `refresh_database` + re-decode from LevelDB. Removes the stale-after-write UX for agents that write-then-read. - **Local-only `pack:mcpb:write` build script.** Produces a `copilot-money-mcp-write.mcpb` bundle advertising all 30 tools (17 read + 13 write) with `--wrHigh4/16/2026
v2.0.0**Write tools are back** โ€” rewritten onto Copilot Money's official GraphQL API (`https://app.copilot.money/api/graphql`) after direct Firestore writes were blocked by Copilot's server-side type-check deploy. Opt-in via `--write` (unchanged). 13 write tools (down from 18) across transactions, tags, categories, budgets, and recurrings. **.mcpb bundle note:** The `.mcpb` attached to this release is intentionally **read-only** (17 read tools, `--write` not in `mcp_config.args`). Non-technical usersHigh4/15/2026
v1.7.1 ### Fixed - **Extension now installs on current Claude Desktop** (#249, upstream [mcpb#229](https://github.com/modelcontextprotocol/mcpb/issues/229)): Claude Desktop 1.2581+ runs Node MCPB extensions inside an Electron UtilityProcess that enforces macOS hardened-runtime library validation, which rejects ad-hoc-signed npm prebuilds (our `classic-level` binding). The process died in `dlopen` before any of our code ran, leaving users with a silent "Server disconnected" status. Routes the launch thHigh4/15/2026
v1.7.0 ### Changed - **Published CLI is now read-only.** Copilot Money has restricted direct Firestore writes from third-party clients (403 `PERMISSION_DENIED`), so the 18 write tools can no longer succeed against the live backend. The `copilot-money-mcp` CLI shipped via npm and the `.mcpb` bundle now advertises only the 17 read tools; passing `--write` prints a notice and still starts read-only. Write tool source (`src/tools/`, `FirestoreClient`, auth) is preserved on `main` for a future GraphQL-baseHigh4/14/2026
v1.6.1 ### Fixed - **`create_category` writes app-compatible documents** (#232): MCP-created categories were invisible to the Copilot Money app because they were missing required fields (`id`, `emoji`, `color`, `bg_color`, `order`, `is_other`, `auto_budget_lock`, `auto_delete_lock`, `plaid_category_ids`, `partial_name_rules`) and used a `custom_*` ID format the app doesn't recognize. Now uses Firestore auto-generated IDs and writes all app-required fields with sensible defaults. - **`get_categories` uHigh4/13/2026
v1.6.0## What's Changed * Update total balance calculation in getAccounts: subtract debt from assets by @martco in https://github.com/ignaciohermosillacornejo/copilot-money-mcp/pull/151 * feat: add total_assets and total_liabilities to getAccounts by @ignaciohermosillacornejo in https://github.com/ignaciohermosillacornejo/copilot-money-mcp/pull/155 * chore(ci): bump 1password/load-secrets-action from 3 to 4 by @dependabot[bot] in https://github.com/ignaciohermosillacornejo/copilot-money-mcp/pull/152 *Medium4/12/2026
v1.5.0## Added - **`get_holdings` tool**: Current investment positions with ticker, name, quantity, price, average cost, and total return per holding - **`get_investment_prices` tool**: Historical price data (daily + high-frequency) for stocks, ETFs, mutual funds, and crypto - **`get_investment_splits` tool**: Stock split history with ratios, dates, and multipliers - Database accessors for securities and holdings history collections - Full decode coverage for all 35 Firestore collection paths (securitHigh4/6/2026
v1.4.0## Fixed - **Decode timeout**: Made decode timeout configurable via `--timeout` CLI flag, with a sensible default of 90 seconds - Threaded timeout config through the stack instead of using environment variables - Prevented promise hang when decode worker exits without sending a result ## Changed - CI: Skip AI code review on Dependabot and forked PRs ## What's Changed * ci: skip AI code review on forked PRs by @ignaciohermosillacornejo in https://github.com/ignaciohermosillacornejo/copilot-moneMedium4/6/2026
v1.3.0## What's New ### New Feature - **`get_connection_status` tool** โ€” Check bank sync health and connection status for your accounts (#120) ### Fixes - Reuse `item.ts` helpers and fix status logic in connection status tool - Prevent promise hang when decode worker exits without sending result - Use transaction_id for dedup and reconcile pending/posted pairs - Isolate LevelDB decoding in worker thread to prevent memory leak - Correct package.json main field to `dist/server.js` ### CI/CD - Bump `aLow3/19/2026
v1.2.3## What's Changed Dependency updates via Dependabot: ### Production - `@modelcontextprotocol/sdk` 1.25.3 โ†’ 1.26.0 (includes security fix for [GHSA-345p-7cg4-v4c7](https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-345p-7cg4-v4c7)) - `zod` 4.3.5 โ†’ 4.3.6 - `globals` 17.0.0 โ†’ 17.3.0 - `typescript-eslint` 8.53.1 โ†’ 8.54.0 ### Dev - `@types/bun` 1.3.6 โ†’ 1.3.8 - `@types/node` 25.0.10 โ†’ 25.2.0 **Full Changelog**: https://github.com/ignaciohermosillacornejo/copilot-money-Low2/24/2026
v1.2.2## Fixed - **Cursor/Electron compatibility**: Fixed native module loading error in Cursor and other Electron-based editors - Added dual distribution strategy: bundled build for Claude Desktop (.mcpb), external native modules for npm - Resolves "No native build was found for platform=darwin arch=arm64 runtime=electron abi=141" error ## Changed - Build scripts now use separate targets for npm (`build`) and .mcpb (`build:mcpb`) ## Installation **Claude Desktop (.mcpb):** Download and instaLow1/22/2026
v1.2.1## Fixed - Filter out budgets with orphaned category references from `get_budgets` results - Prevents raw Firestore IDs (like `rXFkilafMIseI6OMZ6ze`) from leaking through as `category_name` - Added `isKnownPlaidCategory()` helper function to validate category IDs ## What's Changed * Filter out budgets with orphaned category references by @ignaciohermosillacornejo in https://github.com/ignaciohermosillacornejo/copilot-money-mcp/pull/91 **Full Changelog**: https://github.com/ignaciohermosillacoLow1/20/2026
v1.2.0## What's New ### Cache Refresh Feature - **Automatic cache invalidation**: In-memory cache now expires after 5 minutes and reloads fresh data from disk - **Manual refresh**: New `refresh_database` tool lets you explicitly refresh the cache when you've synced new data in Copilot Money - **Configurable TTL**: Set `COPILOT_CACHE_TTL_MINUTES` environment variable to customize cache duration (set to 0 to disable caching) ### Documentation & Quality - Fixed README to accurately reflect the 8 availaLow1/20/2026
v1.1.0# v1.1.0 - Data Quality Tools & Enhanced Analysis ## ๐Ÿ†• New Features ### Data Quality Report Tool **`get_data_quality_report`** - A comprehensive tool to identify and fix data quality issues in your Copilot Money data. **Detects:** - โœ… Unresolved category IDs that can't be mapped to readable names - โœ… Potential currency conversion issues (foreign amounts displaying incorrectly) - โœ… Non-unique transaction IDs (multiple transactions sharing same ID) - โœ… Duplicate accounts (same name and type) -Low1/13/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

vobaseThe app framework built for AI coding agents. Own every line. Your AI already knows how to build on it.@vobase/template@3.19.0
studioOpen-source control plane for your AI agents. Connect tools, hire agents, track every token and dollarv2.396.1
keryxKeryx: The Fullstack TypeScript Framework for MCP and APIsv0.30.0
agentconfig.orgElevate your AI assistants by configuring them for any role or workflow. Explore the primitives that unlock their full potential.0.0.0
dingtalk-moltbot-connector๐Ÿค– Connect DingTalk with OpenClaw Gateway for AI-driven chat responses and session management using a bot or DEAP Agent integration.main@2026-06-08

More in MCP Servers

bifrostFastest enterprise AI gateway (50x faster than LiteLLM) with adaptive load balancer, cluster mode, guardrails, 1000+ models support & <100 ยตs overhead at 5k RPS.
claude-code-plugins-plus-skills423 plugins, 2,849 skills, 177 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.
vexaOpen-source meeting transcription API for Google Meet, Microsoft Teams & Zoom. Auto-join bots, real-time WebSocket transcripts, MCP server for AI agents. Self-host or use hosted SaaS.
npcpyThe python library for research and development in NLP, multimodal LLMs, Agents, ML, Knowledge Graphs, and more.