Home · Setup · Claude Code

MCP Amortization in Claude Code

Loan and lease schedules derived from the terms of the agreement, in integer minor units, closing exactly on the balloon or on zero. You give it what the agreement says: the principal in minor units, the nominal annual rate in basis points, how often interest compounds, how often a payment falls due, the term in periods, annuity or straight principal, any arrangement fee, any balloon and the drawdown date. It derives the level payment, the effective annual rate beside the nominal one, and the schedule period by period, opening balance, payment, interest, principal, closing balance, every figure a whole minor unit. Compounding and payment frequency are two different clocks here, which is the decision most of the arithmetic rests on: the rate for one payment period is the equivalent rate taken through the compounding clock rather than the nominal rate divided by the number of payments, and on a quarterly-paid, monthly-compounded loan that difference is worth about 1.0 percent of the whole interest bill, in the lender's favour, and is invisible in the quote. The payment never varies: rounding the level payment once leaves the closing balance a few units from zero after a chain of subtractions, and that residual goes into the final period's interest and principal SPLIT rather than into the payment, because the payment is what the borrower is contractually due to pay and the split is not. A level payment rounded once can also clear the debt before the declared term ends, and the schedule stops where the debt does rather than filling out the term with periods that charge negative interest on a balance already gone. Early settlement and partial overpayment are costed gross and net of the penalty, and a penalty larger than the interest saved is reported as a COST rather than as a smaller saving. The journal debits interest expense and loan liability and credits cash in the cash book's own account ids, and the expense payload carries the interest ALONE. Nothing is posted from here, no schedule is stored, currencies are never added together, and month arithmetic clamps rather than rolling forward.

`claude mcp add amortization` at user scope is the level that matches the meter and the data: three agreements in the register is a business's allowance rather than a repository's, and the register is one file per machine anyway. There is no network call in the server, so the payment, the effective rate and every schedule row answer identically offline.

What you get in Claude Code

You sayTool
Record the van finance: 1,000,000 minor units at a nominal 12 percent compounded monthly, twelve monthly payments, drawn 2026-01-15.loan_create
Show me the schedule, and tell me the effective annual rate beside the nominal one.loan_schedule
What would settling at period 6 cost me, after the penalty?loan_repay_early

Rounding the level payment once is a term change, not a rounding detail. Measured on this server's own engine at 250 basis points over 360 annual periods on 1,000,000 minor units: the payment rounds to 25,292, that rounding is worth a fraction of a minor unit, it repeats, and the balance clears at period 356, FOUR PERIODS BEFORE the declared term ends, with a final payment of 4,165. A schedule that keeps subtracting to fill out the declared term does not fail or throw: it reports four more periods, each with a full payment on a balance that has gone negative, each charging negative interest, and the totals still reconcile against themselves. The chain arithmetic is self-consistent all the way down and the only thing wrong with it is that the borrower does not owe the last four rows. A second measured figure from the reference loan: the final period's interest is 882 rather than the 880 an unrounded balance carries, and putting that 2 unit difference into the payment instead would produce a final payment of 88,847, an amount that appears on no agreement.

Install it in Claude Code

The file is .mcp.json, and the key inside it is mcpServers.

ScopePath
local (default)~/.claude.json, this project only
project.mcp.json at the repository root
user~/.claude.json, every project

If you also run Claude Desktop, the shortest path there is one click: amortization.mcpb from the bundle catalog opens as an extension, with no JSON and no terminal. Claude Code reads its own config, so here it is:

From the terminal, against a built file:

claude mcp add --scope user amortization -- node /absolute/path/to/mcp-servers/servers/amortization/dist/index.js
claude mcp list    # health-check it before the first prompt

# or --scope project, committed to .mcp.json for the team

The node command above wants a built file. From a clone, once:

git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers && npm install
npm run build -w packages/mcp-license -w servers/amortization

That writes servers/amortization/dist/index.js, and its absolute path is the one argument the config needs.

The npm packages are not published yet, so the form below returns a 404 today. It is here because it is what the entry becomes the day the publish lands, with nothing else changed:

claude mcp add amortization -- npx -y @theluckystrike/mcp-amortization

No restart. The entry is picked up in the next session, and `/mcp` reconnects one on demand.

Nothing is published to npm yet, so the working install paths are the ones above: the .mcpb bundle from the bundle catalog, a clone and build, or the hosted URL.

No install: the hosted endpoint

The same server runs at https://mcp.zovo.one/mcp/amortization 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 amortization https://mcp.zovo.one/mcp/amortization \
  --header "Authorization: Bearer <token>"

Claude Code notes worth knowing first

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: loan_schedule is free and unlimited on every tier, and so is loan_list. The payment and the interest are the question this server exists to answer, and a free tier that hides the answer is a demo rather than a tool, so neither the schedule nor the balance outstanding is ever metered. The cap is on the number of agreements held instead: three loans or leases in the register, which is the unit of work. Rebuilding the schedule of a loan already recorded is free forever, on every tier, however many times you ask. Pro is $19 once, verified offline.

Questions

Which scope should I use for MCP Amortization?

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.

Why did my first prompt ignore the server?

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.

Can I use MCP Amortization without installing anything?

Yes: claude mcp add --transport http amortization https://mcp.zovo.one/mcp/amortization --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.

Related

MCP Amortization in detail · The same server in Claude Desktop and Cursor · Every server in Claude Code · Guides · Claude Code docs · Buy Pro

Related guides & tools

Loan and lease schedules from chat, closing exactly on zero · Build a loan amortization schedule from chat and export it for Excel