Home · Guides

Choosing an invoicing MCP server

The official MCP registry fills a whole page of 100 rows for invoice and reports a cursor for more behind it, and returns 91 complete for invoicing. Both measured on 2026-09-07 with GET registry.modelcontextprotocol.io/v0/servers?search=<token>&limit=100, reading metadata.count and metadata.nextCursor. That is a crowded token, and most of the difference between those rows is not visible from a name.

Run it yourself before you install anything:

curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=invoice&limit=100"   | python3 -c "import sys,json;m=json.load(sys.stdin)['metadata'];print(m['count'], bool(m.get('nextCursor')))"

A full page of 100 with a cursor means the number is a floor rather than a total.

Seven questions separate them. Ask them of anything, including this one.

1. Does it need an account somewhere else?

Many invoicing servers are API wrappers around a SaaS product. They are useful if you already pay for that product and useless if you do not, and the README does not always lead with it. Look for an API key in the config block. No key means no external account.

2. Where does the money arithmetic happen?

Floating point money is the classic defect and it survives testing, because it only shows up on particular values. Ask whether amounts are held in integer minor units and whether each line is rounded once before summing. In this one they are, so the printed total equals the sum of the printed lines and there is no drift between the PDF and what the client pays.

3. Can it put more than one tax rate on a document?

A single invoice-level rate breaks the moment you have a zero-rated reverse charge line next to a domestic one. Per-line rates with one tax line per distinct rate in the totals block is the shape that survives a real client mix.

4. Are invoice numbers allocated, or generated?

A number derived from a timestamp or a hash is not a sequence, and most jurisdictions expect a sequence with no gaps and no reuse. INV-YYYY-NNNN allocated in order, never reused, is the answer to look for.

5. Does the PDF go anywhere?

Rendering server-side means your client list and your rates went to somebody's machine. Local rendering means they did not. This one renders with pdfkit in-process and makes no network call at all.

6. What happens when you hit the free limit?

The failure mode matters more than the number. A cap that locks you out of invoices you already created is a hostage situation. Here the cap is 3 new invoices a calendar month; lists, PDFs of existing invoices and the overdue report keep working.

7. Is there anything to read about how it fails?

A project that publishes its defects is telling you it looked. This repository records docs/USER_VALUE_R27.md with two open defects named in it, D-R95 where a hand-written vat_rate silently produced a zero-VAT invoice, and D-R96 where invoice_get reported a balance that ignored a credit note. Both are written down rather than waiting to be found. The test suite is 1,518 tests with 1,507 passing, 0 failing and 11 skipped at release v0.20.0, from data/tests.json.

Where this one is weak

It is a fair question and the answer should not be nothing. There is no VAT id validation, because the server makes no network calls. There is no OCR, so a supplier invoice arrives as a PDF and leaves as a PDF. One invoice carries one currency, and a mix is refused rather than converted. The npm packages are not published yet, so installing means a bundle or a build. And it does not decide whether reverse charge applies to your sale; you decide and it prints what you decided.

Product page: MCP Invoice. The full comparison against other named servers is at compare/invoice.

Questions

How do I check how crowded a token is myself?

curl the registry servers endpoint with search=<token> and limit=100, then read metadata.count and metadata.nextCursor. A full page with a cursor means the count is a floor, not a total. Search is a substring match on the name only, not on descriptions, so a count also includes accidental matches and is an upper bound on real competitors.

Does a high count mean avoid the category?

For picking a server, no: it means read carefully. For building one, it is a real signal, and it is exactly how the server choices in this repository were made. data/intel_r13.json records 30 tokens probed with their counts and a build or no-build decision against a stated rule.

What should I install first to try one out?

Whatever answers a question you have today. For invoicing, set the business profile and issue one real invoice for a client you actually have. Three a month is free, which is enough to find out whether the PDF is good enough to send before anything is paid.

Is a local server slower than a hosted one?

Faster, usually, because there is no network round trip. The cost of local is the install; the cost of hosted is that it cannot see your files and it can see your data.

Related

All MCP servers and prices · All guides · Buy the bundle $39