How to connect your bank statements to ChatGPT and Claude with MCP
Stop pasting CSV exports into chat windows. Connect Karchu to Claude, ChatGPT or Cursor over MCP and query your categorized transactions safely.
Almost everyone who uses an AI assistant for money questions has done the same thing at least once: export a CSV, open the chat window, paste a few hundred rows, and hope the model adds them up correctly. It works, sort of. It is also slow, it truncates, it loses the structure that made the export useful, and it hands a complete copy of your financial history to whatever tool you pasted it into, with no record of what happened to it afterwards.
There is a better way now. Karchu runs an MCP server, so an assistant can query your parsed statements directly, under your own login, with every request logged. This post explains what that means, how to set it up in Claude and ChatGPT, what the assistant can and cannot reach, and where it genuinely beats copy and paste.
What MCP actually is
MCP stands for Model Context Protocol. It is an open standard that describes how an AI assistant discovers and calls tools offered by an outside service. The service publishes a list of tools, each with a name, a description and a typed set of inputs. The assistant reads that list, decides which tool answers the question in front of it, calls it, and gets structured data back.
The useful part is the shape of the exchange. The model is not guessing at a pasted table, it is calling a function that returns rows with fields. When you ask what you spent on software last quarter, the assistant does not scan text for anything that looks like a subscription; it calls a search tool with a date range and a category, and gets back the exact rows that match. Arithmetic on those rows is far more reliable than arithmetic on prose.
The other useful part is identity. An MCP connection to Karchu is authenticated as you, through the same login you use in the app. There is no shared API key sitting in a config file, and no service account with visibility into everyone's data.
Why this matters more for financial data than for most things
Financial data has three properties that make the paste-a-CSV approach particularly bad. It is sensitive, so an uncontrolled copy is a real risk. It is large, so a chat window truncates it and the model silently answers from a partial view. And it is precise, so an answer that is nearly right is worse than no answer, because you will act on it.
A tool call fixes all three. Nothing is copied wholesale, because the assistant requests only the rows relevant to the question. Nothing is truncated by a context window, because filtering happens in the database before the rows are returned. And precision holds, because the numbers arrive as numbers with ids attached, so you can open any of them in Karchu and check the source statement.
What Karchu exposes
Seven read-only tools. Nothing in the set can create, edit or delete anything in your account.
- list_organizations tells the assistant which workspaces you belong to, so multi-workspace users get answers scoped to the right one.
- list_transactions returns recent rows with an optional date range and a text search.
- search_transactions is the workhorse: date range, amount range, keywords against description and merchant, direction (money in or money out), category by name, review status, sorting and paging.
- get_transaction pulls one row in full, including which statement it was parsed from, any linked receipt, and recent manual edits.
- financial_summary gives money in, money out, net flow and the top spending categories over a period.
- list_documents lists uploaded statements with bank, period, transaction count and processing status.
- list_categories returns your category taxonomy, including custom categories, so the assistant filters by names you actually use.
That set was chosen deliberately. Read tools make an assistant genuinely useful for analysis; write tools make it capable of quietly corrupting a ledger. Categorization changes still happen in the app, where you can see them and undo them.
Setting it up in Claude
Open Claude's settings and find Connectors. Add a custom connector and paste the Karchu server address, https://karchu.com/mcp. Claude registers itself automatically, then opens a Karchu page in your browser asking you to sign in and approve the connection. Approve it, return to Claude, and the connector shows as connected with the tool list visible.
Your first prompt should name Karchu explicitly so the model reaches for the connector rather than answering from memory: "using Karchu, what did I spend on software between January and March". After a couple of turns it will usually pick the connector on its own for anything money related.
Setting it up in ChatGPT
The flow is the same. Settings, then Connectors, then add a custom or remote MCP connector with the same URL. Complete the Karchu sign in and approval when the browser opens. Whether the option is available depends on your plan and, in a team workspace, on whether an administrator has allowed custom connectors, so that is the first place to check if you cannot find it.
Cursor, Windsurf and most agent frameworks accept the same URL in their MCP configuration. Clients that only speak stdio can bridge to it with a generic remote MCP package. Nothing about the server is tied to one client.
Questions worth asking
Once connected, the interesting prompts are the ones that would take you fifteen minutes in a spreadsheet. A few that work well:
- Compare my spending by category for this quarter against the previous one and tell me what moved most.
- Find anything that looks like a duplicate charge from the same merchant within a few days.
- List every transaction over 1,000 last year that is still unreviewed, so I know what to check before filing.
- Which recurring charges started in the last six months and how much do they add up to annually?
- Show me the largest expense in May, and tell me which statement it came from.
- Are there any statements that failed to process, and what went wrong with them?
Notice that several of these are not really questions about one number. They are questions about patterns across a few hundred rows, which is exactly the work people avoid doing because it is tedious, and exactly the work an assistant with structured access is good at.
What it cannot do, and why that is deliberate
It cannot see another workspace. Access rules are enforced in the database on every single request, not by application code that could be talked around, so a tool physically cannot return rows from a workspace you are not a member of. If someone is removed from a team, their assistant loses that access on the next call.
It cannot read your statement files. Tools return parsed metadata and transaction rows. An assistant can learn that a statement covers March and came from a particular bank without receiving the PDF itself.
It cannot change anything. There is no delete tool, no edit tool, no plan change tool. If a future version adds write capability it will be opt in and it will require an explicit approval per action.
And it cannot run unnoticed. Every request lands in an activity log you can read at Settings, then AI access: which tool ran, what filters it used, how many rows came back, how long it took, whether it succeeded. Fair use limits of 60 requests a minute and 1,000 a day mean a looping agent hits a wall quickly, and the blocked attempts show up in the same log.
Where this fits with the rest of the workflow
MCP is an interface on top of work that has already happened. The quality of what an assistant tells you depends entirely on the quality of the parse and the categorization underneath it. If half your transactions are uncategorized, the assistant will faithfully report that half your transactions are uncategorized.
So the order matters. Upload your statements, let the rule engine categorize them, spend twenty minutes reviewing the ones it flagged as low confidence, and set up rules for the merchants that recur. Then connect the assistant. At that point you are asking questions of a clean ledger rather than asking a language model to clean one for you, which is a much better division of labour.
Getting started
Full setup instructions, the tool reference, and the security details live on the AI integrations page. If you have not run a statement through Karchu yet, start with the bank statement analyzer, then come back and connect your assistant once you can see categorized transactions in the dashboard.