Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Age your receivables into 0-30, 31-60, 61-90 and over 90 day buckets by due date.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
MCP_LICENSE_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Download the maker’s .mcpb file
The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.
Run this in your terminal
Fill in the empty values before running it.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account theluckystrike, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: MCP_LICENSE_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.22.5) reached the registry 24 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need MCPB on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Georgia MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
An MCP server for Georgian public data, read from the organizations that publish it.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
In the [official MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.theluckystrike%2Fstatement-of-account/versions/latest) (io.github.theluckystrike/statement-of-account). Send a client the one document that answers "what do I actually owe you". This MCP server reads the books you already keep in this suite, your invoices, your credit notes and your deposits, and turns them into a statement of account for a period: the balance you were carrying at the start, every invoice you issued, every payment that came in, every credit note you gave, and the balance at the end. It ages what is still open into 0-30, 31-60, 61-90 and over 90 days past due, so you can see at a glance which client is the problem; it writes the statement as pasteable text or as an A4 PDF that looks like your invoices; and it drafts the chaser, at a friendly, a firm or a final level. It never writes anything back into your invoices, and it never invents a late fee.
Built by theluckystrike.
npm publish for @theluckystrike/mcp-statement-of-account is pending, so npx -y @theluckystrike/mcp-statement-of-account returns 404 today. Until then, the .mcpb one-click bundle or a clone+build is the working path.
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": { "statement-of-account": { "command": "npx", "args": ["-y", "@theluckystrike/mcp-statement-of-account"] } } }
claude mcp add statement-of-account -- npx -y @theluckystrike/mcp-statement-of-account
~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.
| tool | what it does |
|---|---|
statement_build | One client's statement for a period: opening balance, invoices issued, payments received, credit notes, deposits applied, closing balance. Every figure in minor units and formatted |
statement_aging | What is owed, split into 0-30, 31-60, 61-90 and over 90 days past the due date as at a chosen date, for one client or for everyone, per currency |
statement_text | The same statement as plain text, movements in date order, ready to paste into an email |
statement_pdf | The same statement as an A4 PDF titled STATEMENT OF ACCOUNT, on the same page layout as your invoices and credit notes |
dunning_text | A payment chaser at level 1 (friendly), 2 (firm) or 3 (final demand), with the overdue list and your bank details |
statements_report | Every client at once: what is outstanding per currency, aged, and the oldest overdue invoice in the book |
license_status | Free or Pro, and where to upgrade |
license_activate | Activate a Pro key |
Plus the statement://sources resource, which says which of the three stores this server could read and how many rows each holds, and the chase_overdue prompt.
| Free | Pro | |
|---|---|---|
| Statements built | 5 a calendar month | unlimited |
| Rebuilding a statement already built | unlimited | unlimited |
statement_aging | unlimited | unlimited |
statement_text | yes | yes |
dunning_text levels 1 and 2 | yes | yes |
dunning_text level 3, final demand | no | yes |
statement_pdf | no | yes |
statements_report | no | yes |
| PDF footer credit | shown | removed |
Aging is free and unlimited on purpose. "Who owes me money" is the question this whole server exists for, and a free tier that hides it is a demo rather than a tool. The meter is on the statement, the document that actually goes to a client, and it counts distinct statements: the same client, period and currency built again is free forever.
Get Pro, one-time, lifetime, for this server. Keys verify offline.
Nothing here is typed in twice. The server reads three stores and writes to none of them:
| store | server | what is taken from it |
|---|---|---|
invoices.json | mcp-invoice | the invoices, their due dates and how much of each is paid |
credit-notes.json | mcp-billing-docs | the credit notes, already stored with a negative sign |
deposits.json | mcp-deposits | the deposit applications, and what is still held |
A store you have never installed is simply absent, and the statement is built without it. A store that is on disk and cannot be READ is a different thing entirely, and is reported as such on every figure, because a balance that could not be computed must never be shown as a balance of nothing owed. The one store the server refuses to work without is the invoice ledger.
Aging a past date with today's payment figures is not slightly wrong, it is silently empty. Aging is usually written as "take each invoice, subtract what has been paid, and bucket by the due date". The subtraction is the part nobody dates. On the worked month in test/_client.mjs, aged at 2026-06-10, the two rules give:
| rule | outstanding | overdue |
|---|---|---|
| as at 2026-06-10 | 2,500.00 EUR | 500.00 EUR, 31 days late |
today's paid_minor | 1,700.00 EUR | 0.00 EUR |
The naive rule understates what was owed by 800.00 of 2,500.00, a third of the balance, and it reports NOTHING overdue on a date when an invoice was a month late, because a payment that arrived two days later has already been subtracted from it. The failure is invisible: the answer looks tidy, the buckets add up, and it cannot be reproduced next month because the input keeps moving. So every figure in statement_aging is taken as at the date asked for, in both directions: an invoice issued after it is not on the books, a payment made after it has not happened, and a credit note issued after it has not been given.
The second thing measurement showed: paid_minor and payments[] on an invoice do not have to agree, and routinely do not. invoice_mark_paid writes both, but deposit_apply raises paid_minor and appends no payment row at all, and an invoice created before that field existed has no rows either. Reconstructing receipts from payments[] would have lost 300.00 of the worked month's 900.00 of receipts, a third of the cash, with no error anywhere. paid_minor is treated as the authority and the rows are only the attribution.
All data stays on your machine. The invoices, credit notes and deposits are read from ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/, this server's own register of built statements is written to .../mcp-servers/statement-of-account/, and nothing is sent anywhere. There is no network call in this server at all. License keys verify offline.
MIT. Support: support@zovo.one
Built by theluckystrike.
Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install: