Data & analysis

Tmp.Rd8dBLUSJc

Try it

Pull Credit Karma transactions into a local SQLite database and query them by category, merchant, or account.

What it does

An MCP server for Credit Karma that syncs transactions into a local SQLite database and exposes filterable query tools. Sync runs incrementally by default — using the last sync point minus 30 days — and can be forced to a full re-fetch via `ck_sync_transactions(force_full=true)`. Sync state is persisted, so interrupted runs resume automatically. Query tools support filtering by date, account, category, merchant, amount range, and status, and provide aggregated views such as spending by category, spending by merchant, and per-account totals. A read-only `ck_query_sql` tool runs SELECT statements against the same local database. Authentication is handled by setting `CK_COOKIES` in the MCP con…

When to use it

  • Syncing fresh Credit Karma transactions into a local SQLite store
  • Breaking down spending by category or merchant over a date range
  • Getting per-account transaction counts and amount totals
  • Running custom SELECT queries against the synced transaction database

The skill document

creditkarma-mcp

MCP server for Credit Karma — syncs transactions into a local SQLite database and provides natural-language querying tools.

Setup

Add to .mcp.json in your project or ~/.claude/mcp.json:

{
  "mcpServers": {
    "creditkarma": {
      "command": "npx",
      "args": ["-y", "creditkarma-mcp"],
      "env": {
        "CK_COOKIES": "CKTRKID=...; CKAT=eyJ...%3BeyJ...; ..."
      }
    }
  }
}

Option B — from source

git clone https://github.com/chrischall/creditkarma-mcp
cd creditkarma-mcp
npm install && npm run build

Then add to .mcp.json:

{
  "mcpServers": {
    "creditkarma": {
      "command": "node",
      "args": ["/path/to/creditkarma-mcp/dist/index.js"],
      "env": {
        "CK_COOKIES": "CKTRKID=...; CKAT=eyJ...%3BeyJ...; ..."
      }
    }
  }
}

Or use a .env file in the project directory with CK_COOKIES=.

Getting CK_COOKIES (optional)

Three onboarding paths, in priority order:

1. fetchproxy extension (easiest — no env vars): Install the fetchproxy 0.3.0 extension, sign into creditkarma.com once, and leave CK_COOKIES unset. The MCP reads HttpOnly CKAT + CKTRKID cookies on the first tool call via chrome.cookies.get, then operates direct-to-API from Node.

2. ck_set_session MCP tool: From within Claude, call ck_set_session with a Cookie header you copied from DevTools (see below). The tool persists it to .env.

3. Manual (DevTools):

  1. Log in to creditkarma.com in Chrome
  2. DevTools → Network → any creditkarma.com request → Request Headers
  3. Right-click the cookie header → Copy value
  4. Paste into CK_COOKIES in your Claude config

Authentication

The MCP handles auth automatically once any of the three paths is configured.

  • Access token: ~15 min TTL, auto-refreshed transparently
  • Refresh token: ~8 hours TTL
  • When expired:
    • fetchproxy path: sign back into creditkarma.com — the MCP reads fresh cookies on the next tool call
    • env-var / ck_set_session path: grab a fresh Cookie header from DevTools and update CK_COOKIES (or call ck_set_session again)

Tools

Auth

ToolDescription
ck_set_session(cookies)Store credentials — paste the full Cookie header from a signed-in creditkarma.com request

Sync

ToolDescription
ck_sync_transactions(force_full?)Sync transactions to local SQLite. Incremental by default (since last sync − 30 days). force_full=true re-fetches everything.

Query

ToolDescription
ck_list_transactions(start_date?, end_date?, account?, category?, merchant?, status?, min_amount?, max_amount?, limit?, offset?)Filtered, paginated transaction list
ck_get_recent_transactions(limit?)N most recent transactions (default 20)
ck_get_spending_by_category(start_date?, end_date?)Spending totals grouped by category
ck_get_spending_by_merchant(start_date?, end_date?, limit?)Spending totals grouped by merchant
ck_get_account_summaryTransaction counts and totals per account
ck_query_sql(sql)Read-only SQL query against the local database (SELECT only)

Workflows

First-time setup:

  1. Easiest: install the fetchproxy extension, sign into creditkarma.com, leave CK_COOKIES unset.
  2. Or: copy the Cookie header from DevTools and either set CK_COOKIES in your config or call ck_set_session(cookies) from within Claude.
  3. ck_sync_transactions → initial full sync

Regular use:

  • ck_sync_transactions → pull latest transactions
  • Then query with any of the query tools

Spending analysis:

ck_sync_transactions
ck_get_spending_by_category(start_date: "2026-01-01", end_date: "2026-03-31")
ck_get_spending_by_merchant(start_date: "2026-01-01", limit: 10)

Custom analysis with SQL:

-- Monthly spending totals
SELECT strftime('%Y-%m', date) AS month, SUM(ABS(amount)) AS total
FROM transactions WHERE amount < 0
GROUP BY month ORDER BY month DESC

-- Spending by category this year
SELECT c.name, SUM(ABS(t.amount)) AS total
FROM transactions t JOIN categories c ON t.category_id = c.id
WHERE t.date >= '2026-01-01' AND t.amount < 0
GROUP BY c.name ORDER BY total DESC

Database schema

transactions (id, date, description, status, amount, account_id, category_id, merchant_id, raw_json)
accounts     (id, name, type, provider_name, display)
categories   (id, name, type)
merchants    (id, name)
sync_state   (key, value)

Notes

  • All query tools run against the local SQLite database — sync first
  • Amounts: negative = expense/debit, positive = credit/income
  • ck_query_sql only allows SELECT — no writes to Credit Karma data
  • Sync saves a resume cursor — interrupted syncs can be resumed automatically
  • accounts.id is a synthesized stable key in the form | (e.g. Citi|2630, Ally|7133) because CK's API returns empty account.id strings. The same card under two provider-name spellings shows as two rows.

Questions people ask

How is authentication set up?
Three paths are documented: install the fetchproxy extension and sign into creditkarma.com (no env vars needed), paste the Cookie request header from DevTools into `CK_COOKIES` in your MCP config, or call `ck_set_session(cookies)` from within Claude. The access token auto-refreshes transparently.
How does incremental sync work?
`ck_sync_transactions` fetches transactions since the last sync minus 30 days by default; passing `force_full=true` re-fetches everything. Sync state is persisted so an interrupted sync resumes automatically on the next call.
Can `ck_query_sql` write to Credit Karma or the database?
No. `ck_query_sql` only allows SELECT statements and runs against the local SQLite database — it never writes back to Credit Karma. Amounts use negative for expenses/debits and positive for credits/income.

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

More from chrischall

Browse all skills

Read and write OurFamilyWizard messages, calendar events, expenses, and journal entries from your agent.

by chrischall41 installs

Search, book, and cancel Resy reservations, plus favorites and Priority Notify alerts.

by chrischall29 installs

Manage iOffice buildings, rooms, visitors, maintenance, moves, and mail through natural-language commands.

by chrischall14 installs

Find, inspect, compare, and resolve Compass listings, photos, prices, addresses, and property records.

by chrischall31 installs

Generate and edit images, short videos, and music through Google Gemini models via MCP.

by chrischall9 installs

Look up concert setlists, tour histories, and live-show data on setlist.fm through natural-language MCP tools.

by chrischall12 installs