Zovo Depreciation Schedule

io.github.theluckystrike由 GitHub 帳號 theluckystrike 發布v1.0.0更新於 Nov 8, 2026

Depreciation calculator for tax and bookkeeping, for small businesses, landlords and bookkeepers.

已驗證Streamable HTTP可網頁執行金融資料與分析

概覽

AI 產生的概覽

維護固定資產清冊,並依內建的波蘭、英國與美國稅務折舊表計算折舊排程、月度分錄與處分損益。

可以做什麼
  • 新增、列出與刪除本機清冊中的資產,查看成本、累計折舊與帳面淨值
  • 產生按年或按月的折舊排程,也可為尚未建檔的資產先行試算
  • 產生某月份的分錄(借記折舊費用、貸記累計折舊),並依類別與幣別報告帳面淨值
  • 記錄出售、報廢或沖銷,並計算相對於帳面淨值的處分損益
  • 查詢或啟用 Pro 授權,並讀取內建類別表的稅率及其出處
適用情境
適合需要可重複的固定資產清冊與折舊數據的記帳或會計工作,依波蘭 KST 稅率、英國資本減讓池或美國 MACRS 半年慣例表計算,且資產資料不必離開本機。
執行需求
以本機程序執行,可在 Claude Desktop 透過 .mcpb 套件安裝,或以 npx 設定(npm 套件尚未發布)。不需帳號、API 金鑰或網路連線;資料以 JSON 形式存放於本機使用者資料目錄。MCP_LICENSE_KEY 中的 Pro 授權金鑰為選用,離線驗證。
安裝前請注意
免費版清冊上限為 10 項資產,且不含分錄與報表工具;Pro 為一次性付費購買。內建表刻意省略許多項目(例如波蘭 18% 與 25%、美國季中慣例及更長年限類別),相關資產會被拒絕而非估算。稅率為靜態檔案,附有生效日期,依賴前應先核對。分錄僅回傳供獨立費用記錄工具使用的參數,不會自動入帳。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Zovo Depreciation Schedule,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.theluckystrike%2Fdepreciation/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "zovo-depreciation-schedule": {
      "type": "http",
      "url": "https://depreciation.zovo.one/mcp"
    }
  }
}

README

mcp-asset-register

In the official MCP Registry (io.github.theluckystrike/asset-register). 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.

Install

One-click (.mcpb): download asset-register.mcpb from the latest release and double-click it in Claude Desktop: https://github.com/theluckystrike/mcp-servers/releases/latest

Hosted, no install: point a URL-based client at https://mcp.zovo.one/mcp/asset-register. GET https://mcp.zovo.one/mcp/connect mints a token and prints a ready URL.

npm publish for @theluckystrike/mcp-asset-register is pending, so the npx line below returns 404 today.

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

json
{  "mcpServers": {    "asset-register": {      "command": "npx",      "args": ["-y", "@theluckystrike/mcp-asset-register"]    }  }}

Claude Code:

sh
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.

Tools

toolwhat it does
asset_addAdd one asset to the register. The rate, the useful life and the convention come from the bundled table; both can be overridden.
asset_listThe register with cost, accumulated depreciation and net book value at a date, totalled per currency.
asset_scheduleThe 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_journalOne month's journal: debit depreciation expense, credit accumulated depreciation, per asset and in total, plus an expense_add payload.
asset_disposeRecord a sale, a scrapping or a write-off and get the gain or loss against net book value at that date.
asset_deleteRemove an asset nothing depends on, and get its free-tier slot back. An asset that has been disposed of or journaled is refused, with the dependent named.
asset_reportNet book value by category and currency, the year's charge, and every disposal in the year with its result.
license_statusFree or Pro, and where to upgrade.
license_activateActivate 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 vs Pro

FreePro
Assets in the register10Unlimited
asset_scheduleYes, unlimitedYes
asset_list, asset_dispose, asset_deleteYes, unlimitedYes
asset_journalNoYes
asset_reportNoYes

Get Pro: $19 one-time, or $39 for the bundle.

What is in the tables, and what is deliberately not

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.

tablebundledleft out
Poland, KST33 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 eachThe 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 allowancesThe 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 capThe 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, MACRSThe 3, 5 and 7 year GDS classes under the half-year convention, as the published Pub 946 Table A-1 percentagesThe 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.

Rules the engine applies

  • Poland charges from the month AFTER the asset enters the register (art. 16h ust. 1 pkt 1). An asset in service on 15 March starts on 1 April, so year one is nine twelfths of the annual rate and the schedule runs one calendar year longer than the life suggests. Every answer names the first charge month.
  • The Polish declining-balance method switches (art. 16k). The rate is multiplied by a coefficient of up to 2.0 on the written-down value, and in the first year the declining amount would fall below the straight-line amount, the rest of the schedule is straight line. Passenger cars (KST 741) and buildings are excluded from the method entirely and are refused rather than quietly computed.
  • A UK writing down allowance is a pool rate, not a per-asset charge. This server applies it to one asset so a per-asset figure exists, and says so in every answer. A pure reducing balance never reaches zero, so the schedule is cut at 25 periods and the last one writes off what is left, with the basis line saying that is what happened.
  • MACRS ignores salvage value. The published percentages recover the whole cost. A residual passed for a US asset is reported back as ignored and kept on the record for book purposes, rather than silently reducing the base.
  • The periods sum to the depreciable base, to the minor unit. Money is integer minor units end to end and the schedule is allocated by cumulative rounding, so sum(periods) == cost - residual holds for every input, and the monthly rows sum to their year.
  • A byte-identical asset is refused, not stored twice. asset_add normalises the name, the category, the cost, the currency, the dates, the method, the life, the scheme and the salvage value, and a record that matches an asset already on the register is refused by that asset's id with nothing written. A retried call and a re-run script look exactly like a second machine, and on a ten-asset free tier the second row is a slot you cannot get back. Two genuinely identical units are a legitimate register: give the second one a distinguishing name and it is accepted.
  • asset_delete is the way back, and it is free. It removes an asset nothing depends on. A recorded disposal or a month asset_journal has already journaled is a dependent, and the delete is refused with that dependent named rather than removing the cost behind a figure that has already left this server. The id is never reissued.
  • Depreciation is charged up to and including the month of disposal, then stops. The gain or loss is proceeds less net book value at that month, and the disposal journal balances to zero.
  • Currencies are never added together. There is no exchange rate in this server, so a PLN register and a USD one stay two figures.

Posting to the expense tracker

asset_journal returns the exact expense_add arguments for the expense-tracker server, one payload per currency, and writes no expense 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. It does mark the register: each asset it produced a line for records the month, so asset_delete can refuse an asset whose depreciation has already been journaled instead of deleting the cost behind a posted figure.

No vat_rate is set on the payload. Depreciation is a book charge, not a purchase, so there is no input VAT on it.

A measured insight

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.

Privacy

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.

License

MIT. Support: [email protected]

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

來源:servers/asset-register/README.md,提交 1bd9d69

工具

2

calculate_depreciation

Calculate depreciation for one asset

Use this when the user wants a depreciation calculator result for one asset: a straight-line depreciation schedule, double declining balance or 150% declining balance, sum-of-the-years' digits, units of production, or a MACRS depreciation calculator result for a computer, vehicle, equipment, rental property (27.5-year) or commercial building (39-year). Only cost is required; method, life or property class, salvage value and date placed in service are optional with stated defaults. Returns the year-by-year schedule (depreciation, accumulated depreciation, book value) to the cent, and PDF, Excel and CSV downloads. Does not model Section 179, bonus depreciation, ADS or dispositions, and is not tax advice. Do not use for several assets (use generate_depreciation_schedule).

輸入參數costnamemethodconventionland_valueunits_totalsalvage_valuedeclining_rateproperty_classunits_per_yearplaced_in_serviceuseful_life_years另有 2 個

generate_depreciation_schedule

Generate a depreciation schedule for several assets

Use this when the user wants a depreciation schedule template filled in for several assets or a fixed asset register: a list of assets, pasted CSV, or an attached CSV/Excel file, each with cost, date placed in service and method (straight-line, declining balance, sum-of-the-years' digits, units of production or MACRS). Returns each asset's schedule, totals by year, the IRS 40% mid-quarter test for MACRS assets, and a PDF, Excel workbook and CSV. Rows that cannot be read are listed with the reason, never dropped silently. Does not model Section 179, bonus depreciation, ADS or dispositions, and is not tax advice. Do not use for a single asset (use calculate_depreciation).

輸入參數filetitleassetsmethodconventiondeclining_rateplaced_in_serviceuseful_life_years

版本歷史

2
  1. v0.22.5Oct 14, 2026
  2. v0.21.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分