blank-invoice-maker-mcp
by InnarM
README.md
# Blank Invoice Maker — MCP Server
An [MCP](https://modelcontextprotocol.io) server that lets any AI assistant (Claude, and other MCP clients) create invoices with **[Blank Invoice Maker](https://blankinvoicemaker.com)** — the free, no-signup, no-watermark invoice generator.
Ask your assistant to make an invoice, and it returns a link that opens **[blankinvoicemaker.com](https://blankinvoicemaker.com)** with the invoice fully pre-filled, ready to review and download as a PDF.
> **Privacy by design.** The invoice data travels inside the link's URL fragment (`#invoice=…`) and is decoded entirely in your browser. Nothing is uploaded — consistent with Blank Invoice Maker's no-account, no-server-storage model.
## Tools
| Tool | What it does |
| --- | --- |
| `list_templates` | Lists the industry invoice templates available at [blankinvoicemaker.com/templates](https://blankinvoicemaker.com/templates) (slug, name, description, URL). |
| `create_invoice` | Builds an invoice from your details and returns a pre-filled [blankinvoicemaker.com](https://blankinvoicemaker.com) link to review and download. |
### `create_invoice` example
> *"Invoice Globex LLC for 10 hours of design at $90/hr and one $120 hosting setup, net 14, in GBP."*
The assistant calls `create_invoice` with:
```json
{
"business": { "name": "Acme Studio", "email": "hi@acme.studio" },
"client": { "name": "Globex LLC", "email": "ap@globex.com" },
"items": [
{ "description": "Design work", "quantity": 10, "unitPrice": 90, "unit": "hours" },
{ "description": "Hosting setup", "quantity": 1, "unitPrice": 120 }
],
"currency": "GBP",
"paymentTerms": "Net 14"
}
```
…and returns a `https://blankinvoicemaker.com/#invoice=…` link that opens the editor pre-filled.
## Installation
Requires Node.js 18+.
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"blank-invoice-maker": {
"command": "npx",
"args": ["-y", "blank-invoice-maker-mcp"]
}
}
}
```
### Other MCP clients
Run the server over stdio:
```bash
npx -y blank-invoice-maker-mcp
```
## How it works
`create_invoice` maps your input into the invoice structure used by [blankinvoicemaker.com](https://blankinvoicemaker.com), compresses it with [`lz-string`](https://github.com/pieroxy/lz-string), and appends it to the site URL as a `#invoice=` fragment. Opening the link hydrates the editor in your browser — no signup, no watermark, no data leaving your machine.
## Development
```bash
npm install
npm run build # compile TypeScript to dist/
npm test # build + run the unit tests
npm start # run the server over stdio
```
### Keeping templates in sync
`src/templates-data.ts` is generated from the Blank Invoice Maker template registry:
```bash
BIM_APP_DIR=/path/to/blank-invoice-maker npm run generate:templates
```
## Links
- **App:** https://blankinvoicemaker.com
- **Templates:** https://blankinvoicemaker.com/templates
- **Model Context Protocol:** https://modelcontextprotocol.io
## License
[MIT](./LICENSE) © [Blank Invoice Maker](https://blankinvoicemaker.com)
TDQS
A4.4/5.0
Scored across 2 tools
Disambiguation5/5
The two tools have entirely distinct purposes: one lists templates, the other creates invoices from them. There is no overlap or ambiguity.
Naming Consistency5/5
Both tools follow the consistent verb_noun pattern with snake_case (create_invoice, list_templates).
Tool Count3/5
Only 2 tools, which is the minimal end of reasonable for a focused domain. While the server accomplishes its core purpose, the small count feels thin.
Completeness5/5
The tool set covers the full intended workflow: discovering templates and then creating an invoice from one. There are no obvious gaps for the stated scope.
Maintenance
ActivityInactive
ResponsivenessNo issues