Home · Setup · Claude Code
A petty cash float on the imprest system: vouchers out of the tin, a count that reconciles them to the minor unit, and the replenishment that puts the float back. You open a tin with an imprest amount and a custodian, and then you type the receipts as they come: amount in whole minor units, date, category, description, payee, receipt reference. Whenever you count the cash, reconcile tells you what the paperwork said the tin should hold, what you actually counted, the difference to the minor unit, and every voucher that count covers, all marked reconciled. A count is treated as a FACT, so it moves the book balance: the difference is carried forward as an over or short rather than re-reported at every later count, which is what makes a tin that is short by a little every month readable as a run rather than as one number. When the tin runs low, replenish_request works out what the cheque has to be, and this is the decision the whole server rests on: it is imprest minus balance, never the sum of the vouchers. The two differ by exactly what the counts found over or short. The difference comes back as its own cash_over_short journal line rather than folded into an expense category where it would look like postage, and under the imprest system the petty_cash account does not move at a replenishment at all: the journal credits cash and debits the expenses per category, in the cash book's own account ids, so a category spelled Office Supplies, office supplies and OFFICE SUPPLIES is one account and not three. A voucher larger than the balance on its own date is refused, and so is a back-dated one that would make any LATER day negative, which the at-the-date check alone does not catch. A reconciled voucher cannot be deleted, because the cash it took out was already counted. No balance is stored anywhere: every balance is derived on the call from the imprest, the top-ups, the vouchers and what each count found.
`claude mcp add petty-cash` at user scope is the level that matches both the meter and the data: one float and twenty vouchers a calendar month is a business's allowance rather than a repository's, and the store is one directory per machine anyway. There is no network call in the server, so the balance, the difference a count found and the replenishment answer identically offline.
| You say | Tool |
|---|---|
| Open a EUR 500 office float on 2026-03-01, Anna holds the tin. | float_open |
| Stamps 1,250 minor units on 2026-03-02, postage. Taxi 3,480 on the 5th, travel, receipt 4471. | voucher_add |
| I counted 29,795 in the tin on 2026-03-31. What is the difference, and what does the replenishment cheque have to be? | reconcile |
The cheque is not the sum of the vouchers, and nothing in the voucher trail says so. Measured on this server's worked month: a 50,000 minor unit imprest, five vouchers totalling 20,194, so the paperwork says the tin holds 29,806 on the 31st. It holds 29,795. The count is short by exactly 11 minor units, eleven cents no receipt will ever explain. The replenishment is therefore 20,205, not 20,194. Reimbursing the voucher total instead is not obviously wrong: it is what the paperwork adds up to, it reconciles against the receipts, and the next count comes back short by 11 again, which reads as a fresh 11 rather than the same one. The unit suite runs three cycles of exactly that and the float ends at 49,967 against a 50,000 imprest, 33 minor units light, with three clean-looking reconciliations behind it, each reporting a difference of exactly 11 and nothing worse. The tin gets smaller and no single number in the record ever looks wrong.
The file is .mcp.json, and the key inside it is mcpServers.
| Scope | Path |
|---|---|
| local (default) | ~/.claude.json, this project only |
| project | .mcp.json at the repository root |
| user | ~/.claude.json, every project |
claude mcp add petty-cash -- npx -y @theluckystrike/mcp-petty-cash
claude mcp list # health-check it before the first prompt
# or --scope project, committed to .mcp.json for the team
No restart. The entry is picked up in the next session, and `/mcp` reconnects one on demand.
The npm publish of @theluckystrike/mcp-petty-cash is pending; until then use the .mcpb bundle or a clone and build from the latest release.
The same server runs at https://mcp.zovo.one/mcp/https://mcp.zovo.one/mcp/petty-cash over MCP streamable HTTP, no install. Mint a free token with curl https://mcp.zovo.one/mcp/token, or use a Pro key. It has no filesystem, so a file comes back as a one-hour download link.
claude mcp add --transport http petty-cash https://mcp.zovo.one/mcp/https://mcp.zovo.one/mcp/petty-cash \
--header "Authorization: Bearer <token>"
The `--` is load-bearing: it separates Claude Code's own options, such as --transport, --env and --scope, from the command that runs the server. And the default scope is local, private to you and to the directory you ran it in, so adding it in the wrong folder leaves the tools absent with no error at all.
Free: reconcile is free and unlimited on every tier. Whether the cash in the tin matches the paperwork is the question this server exists to answer, and a free tier that withholds the answer is a demo rather than a tool, so the count and its difference are never metered. voucher_delete and topup_record are free for the same reason: a voucher typed in twice would otherwise cost a slot with no way back but a key, and the cash physically going back into the tin is not a feature to sell. The meter is on the volume of record keeping instead: one float, and twenty vouchers a calendar month, which is a real one-tin office. Pro is $19 once, verified offline.
Local, the default, writes ~/.claude.json and is private to you and that directory. --scope project writes .mcp.json at the repository root, shared through version control. --scope user loads it everywhere.
Measured, not documented: of three fresh projects, one first prompt made zero tool calls although initialize answered in 1.05 seconds. Run claude mcp list once first: it prints Connected, and the next run used the tool.
Yes: claude mcp add --transport http https://mcp.zovo.one/mcp/petty-cash https://mcp.zovo.one/mcp/https://mcp.zovo.one/mcp/petty-cash --header "Authorization: Bearer <token>". Mint a free token at https://mcp.zovo.one/mcp/token or use a Pro key. -t and -H are the short forms.
MCP Petty Cash in detail · The same server in Claude Desktop and Cursor · Every server in Claude Code · Guides · Claude Code docs · Buy Pro