Expense
MCP serverFiles & storageExpense is a receipt tracker that files your receipts for you. Once added, your AI can take in receipts that arrive by email and keep them tracked and organized without any manual sorting.
Use Expense in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Expense and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use Expense
Needs your own Expense account. You sign in to it and approve access when you connect.
Details
Available today. Use it from your connected AI after setup.
Add the integration, then have receipts sent by email and they will be tracked and filed on their own.
What your AI can do with it
- Track receipts in one place
- Receive receipts by email
- File receipts automatically as they arrive
- Keep receipts organized without manual sorting
Install Expense
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user expense 'https://expense.labnotes.org/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://expense.labnotes.org/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=expense&config=eyJ1cmwiOiJodHRwczovL2V4cGVuc2UubGFibm90ZXMub3JnL21jcCJ9Open the link and Cursor adds the server at that address.
ChatGPT
https://expense.labnotes.org/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add expense --url 'https://expense.labnotes.org/mcp'Run it once, then sign in with codex mcp login expense if the server asks for an account.
From the project's README
As published by assaf/expense in README.md.
Expense is a seamless receipt tracking solution: receipts are automatically sent via email, mileage uses the tax rate provided by the IRS, and a smart AI assistant does your data entry so that you can forget about the process altogether.
PRODUCT.md is the map: what the product is, how it works, the pages a person uses, the architecture and data model, and the vocabulary. This file is the front door; that one is the orientation.
Screenshots
What it does
Receipts come in from a photo, a screenshot, a PDF, the clipboard, a connected Fastmail or Gmail mailbox, or an MCP assistant; each one is read for merchant, amount and category, filed under an IRS Schedule C line, and kept with its image. Drives are mapped and priced at the IRS rate for the trip date and type. The year leaves as a PDF per report, with the receipts attached, or as one ZIP of everything. A warranty document dropped on the warranties page becomes a record you can find by how soon coverage ends.
Free, no card, no ads, no paid tier. Not built for corporate expense policy, approvals, or double-entry bookkeeping. The full tour, with the pages and the rules behind each one, is in PRODUCT.md.
AI assistants (MCP)
The app speaks the Model Context Protocol at https://expense.labnotes.org/mcp.
An assistant connects with OAuth — you sign in and click Allow — so there are no
API keys. A connected assistant can capture a receipt, log a drive, answer
questions about your spending, manage reports, and match a bank statement.
// Claude — .mcp.json (no headers needed: the client discovers OAuth)
{
"mcpServers": {
"expense": {
"type": "http",
"url": "https://expense.labnotes.org/mcp"
}
}
}
The reference is docs/mcp.md; the tools are listed in PRODUCT.md.
Accounts
Email is the login name, hashed with scrypt, with a signed-cookie session. Everything belongs to an account; an account has several users; accounts are fully isolated from each other. Sign up for a new one, or join an existing one with the 8-character invite code in Settings. Image keys are namespaced per account, so two accounts can never collide. More detail in PRODUCT.md and docs/accounts.md.
How it is built
One app, one Postgres database, no monorepo. React Router v8 in framework mode
(SSR), where the URL tree is the filesystem; Prisma 8 contract-first, so
prisma/contract.prisma is the schema and there are no migration files; images
stored as bytes in Postgres rather than in object storage. Deployed on Vercel
plus Supabase Postgres, where a push to main deploys. The diagrams are in
PRODUCT.md.
Run it locally with pnpm dev; the environment variables, the connection
poolers and the deploy path are in docs/operations.md and
docs/deploy.md.
Documentation
| Document | What is in it |
|---|---|
| PRODUCT.md | What it is, how it works, the tour, architecture, vocabulary |
| AGENTS.md | The invariants, commands and traps that bind a change here |
| docs/files.md | Every notable file, one line each |
| docs/operations.md | Env vars, poolers, secrets, incident history |
| docs/deploy.md | Deploy ordering and the smoke checks |
| docs/extraction.md | How a receipt is read, and the caps around it |
| docs/receipts-by-email.md | The Fastmail forwarding path |
| docs/email-connections.md | Connected mailboxes and inbox review |
| docs/reconciliation.md | Matching a statement to expenses |
| docs/accounts.md | Accounts, users, invites |
| docs/mcp.md | The assistant-facing reference |
| docs/code-style.md · docs/testing.md · docs/dark-mode.md | Conventions |
Signals
- GitHub stars
- 6
- Last commit
- Oct 2026
Advanced
- Delivery
- expense MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-assaf-expense- Source
- github.com/assaf/expense
- Hosted endpoint
https://expense.labnotes.org/mcp
More in Files & storage
MCP server · wonderwhy-er
More in Files & storagelocal-mcp
MCP server · colibird-ai
More in Files & storageruntime
MCP server · withruntime
More in Files & storageopen-agreements
MCP server · open-agreements
More in Files & storagegeml
MCP server · geml-spec
More in Files & storagecarbone-mcp
MCP server · carboneio
More in Files & storage