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
claude mcp add amortization -- npx -y @theluckystrike/mcp-amortization
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-amortization is pending; until then use the .mcpb bundle or a clone and build from the latest release.

No install: the hosted endpoint

The same server runs at https://mcp.zovo.one/mcp/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/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 https://mcp.zovo.one/mcp/amortization https://mcp.zovo.one/mcp/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