We've shipped two MCP (Model Context Protocol) servers so Claude Desktop, Cursor, ChatGPT, and any MCP-compatible AI assistant can search expenses, submit receipts, scan Gmail, and run analytics directly against your real ExpenseBot account.
Below: what shipped, the 30-second demo that motivated it, the 21 tools your assistant gets, a 3-minute setup walkthrough, and the privacy answers we expect you'll ask.
Skip the read — go to the install page.
The /mcp landing page has the JSON config snippet, both packages, and a one-click token generator.
Install the ExpenseBot MCP →The 30-Second Demo
Here's the scenario that pushed us to ship this. Open Claude Desktop. Type:
"Hey Claude, scan my Gmail for receipts from January and create a Q1 expense report. Share it with my accountant when it's done."
Claude calls scan_gmail with a January date range. ExpenseBot processes whatever new receipts it finds. Claude calls create_report with type "schedule-c" and dates Jan 1 through Mar 31. Then share_report with your accountant's email. Claude reports back with totals by category and a link to the Google Sheet.
Used to take 20 minutes of clicking. Now 30 seconds in a chat box.
Another one we keep using: "Find every Uber receipt I expensed last quarter" — Claude searches, returns the rows, and offers to dump them into a vendor-specific report. The thing your accountant or freelancer self spends an hour on becomes a one-line ask.
What MCP Is (in Plain English)
Model Context Protocol is a standard for connecting AI assistants to external tools and data. Picture it as a universal adapter: instead of every AI app building custom integrations for every other app, MCP defines a shared protocol both sides speak.
An MCP server exposes tools (functions the AI can call). An MCP client (Claude Desktop, Cursor, ChatGPT, agent frameworks) connects to one or more servers and gives its AI the tool catalog. The user asks something in English, the model picks the right tool, the server runs it, the result comes back into context.
Anthropic released MCP as an open standard in late 2024. Anyone can build an MCP server. ExpenseBot just shipped two.
The Two ExpenseBot MCP Servers
We split this into two npm packages because the audience is different:
@expensebot/mcp-server(v0.1.2) — read-only, no authentication, public docs and knowledge base only. Use this if you want Claude to answer questions about how ExpenseBot works, what's deductible on Schedule C, or how T2125 line items map. No account required.@expensebot/mcp-server-auth(v0.3.2) — authenticated, full access to your ExpenseBot account via a personal access token. This is the one that searches your expenses, submits receipts, runs Gmail scans, and creates reports.
Both are published on npm and listed on the official MCP Registry as io.github.TotesMagotes/mcp-server and io.github.TotesMagotes/mcp-server-auth (publishedAt 2026-04-30). Install them like any npm package — Claude Desktop runs them via npx so you don't install anything globally.
# Read-only docs server (no token needed) npx -y @expensebot/mcp-server # Authenticated server (your account, your data) npx -y @expensebot/mcp-server-auth --token=YOUR_TOKEN_HERE
All 21 Tools (With Examples)
The authenticated server ships with 21 tools, grouped into six categories. Each entry below shows what your AI can ask for in plain English.
Capture (5 tools)
- submit_receipt — "Here's a photo of last night's client dinner — log it"
- add_cash_expense — "Add $42 in parking from yesterday, paid cash"
- add_mileage_entry — "Log 38 miles to Friday's client meeting at the standard rate"
- add_income — "Log $4,200 retainer received from Acme today"
- parse_expense — "Parse this email body into an expense row"
Gmail (2 tools)
- process_gmail_receipts — "Process the receipts I labeled in Gmail"
- scan_gmail — "Scan my inbox for January receipts" — pairs naturally with the Gmail receipt scanner flow
Search & Lookup (4 tools)
- search_expenses — "Show me everything from Home Depot in March"
- list_categories — "What expense categories am I using right now?"
- list_tags — "Which tags do I have set up for clients?"
- search_knowledge — "How does ExpenseBot handle T2125 line item 9281?"
Reports (4 tools)
- create_report — "Build me a Schedule C summary for 2026 so far"
- list_reports — "What reports do I already have?"
- get_report_details — "Open the Q1 mileage report and show totals"
- share_report — "Share that report with my accountant at jane@cpafirm.com"
Analytics & Compliance (5 tools)
- get_spending_summary — "What did I spend on travel last quarter?"
- get_deep_analytics — "Which categories grew the most year over year?"
- check_compliance — "Is my Q1 data audit-ready? Anything missing?"
- fix_compliance — "Fix the missing categories on those rows"
- check_tax_deductibility — "Walk me through which of these expenses are deductible"
Onboarding (1 tool)
- get_signup_link — used when an unauthenticated AI assistant nudges a new user toward signing up; surfaces a clean signup URL inline.
Ready to wire it up?
The /mcp landing page has copy-paste configs for Claude Desktop and a token generator.
Get my MCP token →3-Minute Setup (Walkthrough)
Three steps. No code, no server to host, no global installs.
1. Get your token.
Log into ExpenseBot, open Settings → AI Assistant Tokens, and click "Create token." Copy the value (you only see it once — store it somewhere you can find it again).
2. Add the server to your Claude Desktop config.
Claude Desktop reads MCP servers from a JSON file. Locations:
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Open the file (create it if it doesn't exist) and add this block:
{
"mcpServers": {
"expensebot": {
"command": "npx",
"args": ["-y", "@expensebot/mcp-server-auth", "--token=YOUR_TOKEN_HERE"]
}
}
}Replace YOUR_TOKEN_HERE with the token from step 1.
3. Restart Claude Desktop and test.
Quit Claude Desktop fully and reopen it. You should see a new tools indicator near the chat input. Try: "Use ExpenseBot to summarize my March spending." If Claude invokes the get_spending_summary tool, you're live.
If nothing happens: check the JSON for syntax errors (a stray comma kills the whole config), confirm the token is valid in Settings, and try restarting Claude Desktop one more time.
Privacy & Security FAQ
What does Anthropic see?
Only the data Claude explicitly pulls in to answer your question. If you ask "summarize my Q1 spending," Claude calls get_spending_summary, gets back aggregate totals, and uses those to write the answer — that aggregate is what enters Claude's context. Anthropic doesn't get bulk access to your sheet. You can audit every tool call in your ExpenseBot Settings → AI Assistant Tokens log.
What happens if my token leaks?
Revoke it in Settings → AI Assistant Tokens. The MCP server validates every request against the active token list, so a revoked token stops working instantly. Rotation is encouraged — create a new token, update your Claude Desktop config, revoke the old.
Where is my data stored?
Same place it always was: your Google Sheet in your Google Drive. The MCP server is a thin authenticated layer that reads that sheet on demand and writes new rows when you ask for a capture action. No copy of your data lives in an ExpenseBot-owned database for AI consumption.
Are tokens encrypted?
Tokens are hashed with SHA-256 before storage. Even ExpenseBot staff can't read the original value — we can only verify a hash match. Every call is audit-logged in Firestore against the token ID with timestamp, tool name, and result status, so you have a record of exactly what your AI assistant did with your data.
What's Next on the Roadmap
Things we've heard from early users that we're considering:
- Voice triggers. "Hey Claude, log this Uber" while walking out of the car, with the voice MCP doing the capture in the background.
- Agent workflows. Multi-step automations like "every Friday, scan Gmail, categorize, flag anything weird, email me the summary."
- More tool primitives. Bulk recategorize, scheduled scans, comparison reports across years, mileage trip imports.
We'll see what users actually want — file feature requests against the npm packages or email support@expensebot.ai.
Why Gmail-Native Matters (the differentiator)
Most expense MCP servers — and there are now a few, including ExpenseLM published in late 2025 — wrap an existing expense API. That's useful. It means an AI agent can talk to whatever app you've already wired up.
ExpenseBot's MCP wraps a different surface: your Gmail and your Google Sheet. The place receipts actually live. When Claude calls scan_gmail, it's not querying a cleaned database that someone uploaded last week — it's pulling fresh receipts from the inbox, parsing them, and writing them straight into your sheet. The agent doesn't need you to import data first; the data import is part of the agent's job.
This matters more for some workflows than others. A solo freelancer or accountant whose receipts arrive as email confirmations gets the most leverage. Companies with corporate cards may want both — bank-side feeds for cards plus Gmail-native for the long tail of SaaS, travel, and supplies that arrive as email.
Different tools for different workflows. ExpenseLM and similar API-wrapper MCPs are good for what they do; the ExpenseBot MCP is for users who want their AI to manage receipts the way most receipts arrive — through Gmail. Both can coexist; nothing stops you running multiple MCP servers in the same Claude Desktop instance.
If you're an accountant wiring this up for clients, or a freelancer who wants a sane expense system that also plays with the AI tools you already use daily, the ExpenseBot MCP install page is the next step. And if you want more on the Gmail philosophy, our deeper guide on how to track business expenses spells it out.
