All servers · Buy Pro $19 · Source · Claude Desktop bundle (.mcpb)
Keep a fixed asset register and depreciate it on the rates the tax authorities actually publish. You give it what you bought, what it cost, when it went into use and which category it falls in; it gives you the rate, the useful life, the convention, the full schedule year by year or month by month, the monthly journal entry, and the gain or loss when you sell it. Three tables ship with it: the Polish annual depreciation rates from the annex to the CIT and PIT acts keyed to the KST classification, the UK capital allowance pools with the annual investment allowance, and the US MACRS GDS half-year tables for 3, 5 and 7 year property. The tables are bundled files, not a live feed, so the same asset depreciated twice gives the same answer, and every rate carries its instrument, its source URL and the date it took effect. Nothing leaves your machine.
Built by theluckystrike.
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"asset-register": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-asset-register"]
}
}
}
Claude Code:
claude mcp add asset-register -- npx -y @theluckystrike/mcp-asset-register
Cursor (~/.cursor/mcp.json or .cursor/mcp.json): the same entry as Claude Desktop.
| tool | what it does |
|---|---|
asset_add |
Add one asset to the register. The rate, the useful life and the convention come from the bundled table; both can be overridden. |
asset_list |
The register with cost, accumulated depreciation and net book value at a date, totalled per currency. |
asset_schedule |
The full schedule for a stored asset or for one you are only pricing, per year or per month, down to zero or the residual. |
asset_journal |
One month's journal: debit depreciation expense, credit accumulated depreciation, per asset and in total, plus an expense_add payload. |
asset_dispose |
Record a sale, a scrapping or a write-off and get the gain or loss against net book value at that date. |
asset_report |
Net book value by category and currency, the year's charge, and every disposal in the year with its result. |
license_status |
Free or Pro, and where to upgrade. |
license_activate |
Activate a Pro key. Verified offline. |
Read the assets://categories resource for every bundled category, its code, its rate and what each table leaves out.
| Free | Pro | |
|---|---|---|
| Assets in the register | 10 | Unlimited |
asset_schedule |
Yes, unlimited | Yes |
asset_list, asset_dispose |
Yes, unlimited | Yes |
asset_journal |
No | Yes |
asset_report |
No | Yes |
Get Pro: $19 one-time, or $39 for the bundle. Or the nineteen-server bundle for $39.
Every table under src/tables/ carries a header with the authority, the instrument, the source URL, the date the rates took effect and the date they were read. The assets://categories resource returns those headers with the rates, so the provenance travels with the number.
The rule for what is in them: a value that could not be stated with confidence from the public text was left out, not guessed. A depreciation rate ends up on a tax return. A wrong one that looks authoritative is worse than an absent one, because an absent one is refused by name and you go and look it up.
| table | bundled | left out |
|---|---|---|
| Poland, KST | 33 rows covering the annex positions this build could state with confidence: 0 percent (land, not depreciated at all), 1.5, 2.5, 4.5, 7, 10, 14, 20 and 30 percent, at the KST group and subgroup level, with the declining-balance eligibility of each | The 18 and 25 percent positions of the annex. Their KST membership could not be stated with confidence, so no row claims them. Also every individual six-digit KST code: a taxpayer classifies the asset, this table carries the rate |
| UK, capital allowances | The main rate pool at 18 percent, the special rate pool at 6 percent, and the annual investment allowance as a 100 percent first-year row with its GBP 1,000,000 cap | The first-year and full-expensing rules, the structures and buildings allowance, the small pools allowance, the CO2 thresholds that decide which pool a car enters, and every balancing charge. All date-sensitive, none stated with confidence here |
| US, MACRS | The 3, 5 and 7 year GDS classes under the half-year convention, as the published Pub 946 Table A-1 percentages | The mid-quarter and mid-month conventions, the 27.5 and 39 year real property classes, the 10, 15 and 20 year classes, the Alternative Depreciation System, section 179 and bonus depreciation. A 10-year class is refused by name, not approximated to the 7-year one |
Rates change. Check the effective_date in any answer before you rely on it, and read the source_url if the purchase is recent.
sum(periods) == cost - residual holds for every input, and the monthly rows sum to their year.asset_journal returns the exact expense_add arguments for the expense-tracker server, one payload per currency, and writes nothing itself. That is deliberate: expense-tracker publishes no library entry point, and its id counter, its category rules, its VAT split and its currency defaults all live inside its own expense_add handler under its own lock. Appending a row to its data.json directly would produce an entry with none of those applied: one that looks native and is not. Handing back the arguments is the same contract per-diem and kanban use.
No vat_rate is set on the payload. Depreciation is a book charge, not a purchase, so there is no input VAT on it.
The yearly schedule is where you look for rounding errors, and the monthly journal is where they actually are.
Of the 67 schedules these three tables can produce for one test asset (cost 12,345.67, residual 45.67, in service 12 March 2026), the yearly rows come out clean under almost any rounding rule, because an annual amount is a percentage of a base and lands on or near a whole cent. Split those same years into months by rounding each month independently and 35 of the 67 no longer sum to the depreciable base, off by up to 390 minor units, 3.90 on a 12,345.67 asset. The worst offenders are the longest-lived rows: a residential building at 1.5 percent spreads its base over 800 months, and 800 half-cent roundings is where the 3.90 comes from.
That is the wrong way round from the intuition. The monthly split feels like the harmless presentational step, the one after the real arithmetic has been done, so it is the step that gets a bare Math.round and no test. It is also the only step whose output is posted: nobody journals a year, they journal a month, so the number that reaches the ledger is the one from the step that was not checked. The fix is that allocate rounds the CUMULATIVE total at each step and takes each amount as the difference between two rounded cumulatives, with the last period set to whatever is left, and it is applied to the monthly split as well as the yearly one. test/contract.test.mjs then asserts the identity for every schedule the tables can produce rather than for the two or three a unit test would have picked.
Everything stays on your machine. Assets are JSON under ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/asset-register/. The rate tables are files inside the package. There is no network call anywhere in this server, no account and no API key. License keys are verified offline.
MIT. Support: support@zovo.one
Three prompts that scored 3 of 3, measured in round 24, 2026-09-05. Paste one in as it is written.
I bought a Dell workstation for 8,499 zloty and put it into use on 15 March 2026. It is a computer. Add it to my fixed asset register and tell me what rate it depreciates at and what the schedule looks like.
What it did, measured in round 24, 2026-09-05: asset_add allocated ASSET-2026-0001 and asset_schedule with granularity month returned the schedule.
Show me that same asset month by month instead, and confirm the monthly amounts add back up to the yearly ones and to the depreciable base.
What it did, measured in round 24, 2026-09-05: Zero tool calls, and that is correct rather than a shortcut: p1's asset_schedule had already been called with granularity month, so the 45 monthly rows were in the conversation and calling again would have returned the same bytes.
Separately, for a US company: what does a 10,000 dollar 5-year MACRS asset depreciate by each year under the half-year convention?
What it did, measured in round 24, 2026-09-05: One asset_schedule against the us table returned 2,000.00 / 3,200.00 / 1,920.00 / 1,152.00 / 1,152.00 / 576.00, which is IRS Pub 946 Table A-1 for 5-year GDS half-year exactly, summing to 10,000.00.
On the free tier for this path: Depreciation schedules are unlimited on every tier: the rates are public information a tax authority published, and metering the reading of a regulation would be charging for the government's work. The cap is on the SIZE of the register, 10 assets, plus unlimited asset_list and asset_dispose.
Exact config path, entry and caveats: Claude Desktop · Claude Code · Cursor · VS Code · Windsurf · Cline · Claude.ai and Claude Desktop connectors · all clients
How to track billable hours inside Claude Code and Cursor · Create an invoice PDF from a chat message with an MCP server · Ask questions about an Excel or CSV file from Cursor or Claude · Watch a product price with Claude and get told when it drops · What the free tier includes and what Pro adds · Log expenses and mileage in Claude, split VAT, rebill to an invoice · Convert currencies in Claude with real ECB rates, no API key · Generate Word proposals and contracts from a chat message · Find a meeting time across time zones without doing the arithmetic · Write a resume and a cover letter from chat, without inventing anything · Bill a retainer on a schedule without a billing SaaS · Assemble a contract from your own clause library, in chat · Connect MCP servers to Claude.ai, Claude Desktop, Cursor and VS Code without installing anything · Merge, split and stamp PDFs from chat, and why some come back as glyph numbers · Read a .ics calendar in Claude: free and busy, conflicts, and billable meetings · Run a kanban board in Claude, with time tracking on the same task · Resize, compress and watermark images from a chat message · Categorize and reconcile a bank CSV export from chat · Send a quote from chat, then turn the yes into an invoice · Put a SEPA payment QR code on an invoice from chat · Zip and unzip archives safely from Claude or Cursor · Client deposits and retainers from chat, applied to your real invoices · Fixed assets and depreciation from chat, on the rates the tax authorities publish · Per diem and travel allowances from chat, on the rate tables the tax authorities publish · Credit notes and purchase orders from chat, against your real invoices · One install, every server: the office-suite bundle · All guides