mcp-server-billing
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-billingShow me the revenue summary for last month by plan"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-billing
MCP server that gives an AI agent guarded access to a B2B SaaS billing database (customers, subscriptions, invoices, credit notes) and live ECB exchange rates. Six tools: five reads covering the whole billing surface, one carefully fenced write. Runs locally over stdio against docker-compose Postgres, or on AWS behind a Lambda Function URL for about $7.67/month.
Full design rationale, protocol-version notes, and every decision's trade-off: SPEC.md. Implementation conventions and the code review checklist: CODING_STYLE.md.
Tools
Tool | Purpose | Read-only | Idempotent |
| Find customers by name, email, domain, status, country | ✓ | ✓ |
| One customer with subscriptions and open balance | ✓ | ✓ |
| Invoices filtered by customer, status, date range | ✓ | ✓ |
| Monthly MRR/ARR, new vs. churned, by plan or country | ✓ | ✓ |
| Convert an amount via live ECB rates (frankfurter.dev) | ✓ | ✗ |
| The one write. Credit an open invoice, capped and idempotency-keyed | ✗ | ✓ |
Plus one resource (billing://schema, the live DDL) and one prompt (revenue_review,
a guided monthly review). Full schemas, annotations, and example calls: SPEC.md §5.
Related MCP server: NitroWatch Billing Demo
Run it (60 seconds)
docker compose up -d && npm run db:seed
npm run build
cp .env.example .env # fill in MCP_BEARER_TOKEN if you'll also try http/lambda
npm run inspectThe Inspector opens in your browser against the six tools, live, against seeded data (~200 customers, ~2,000 invoices). Requires Node ≥22.19 for the Inspector itself (this repo's own code targets Node ≥20 — the gap is the Inspector CLI, not the server; see SPEC.md §9 for what was verified without it).
Wire it to Claude Desktop
{
"mcpServers": {
"billing": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-aws/dist/stdio.js"],
"env": {
"DATABASE_URL_READER": "postgres://mcp_reader:reader_local_pw@localhost:5434/billing",
"DATABASE_URL_WRITER": "postgres://mcp_writer:writer_local_pw@localhost:5434/billing"
}
}
}
}Use an absolute path — Claude Desktop does not resolve ~ or relative paths.
Deploy to AWS
npm run lambda:prepare # builds + stages dist/ + prod deps + db/init/*.sql
cd terraform
cp terraform.tfvars.example terraform.tfvars # fill in mcp_bearer_token
terraform init && terraform apply
terraform output -raw migrate_command | bash # applies schema, rotates role passwords$/month | |
RDS | 5.35 |
gp3 storage, 20 GB | 2.30 |
Lambda + Function URL, VPC, SSM | ~0.02 |
Total | ≈ 7.67 |
No NAT Gateway: Lambda reaches frankfurter.dev over IPv6
through an egress-only internet gateway (verified live — Frankfurter has AAAA records)
instead of a ~$32.85/month NAT Gateway. terraform destroy takes it to $0. Full cost
breakdown and the architecture diagram: SPEC.md §3.
Eval questions
Five questions an agent should answer using only these tools — multi-tool, verifiable against the seed data, one deliberately negative (does the agent respect the credit cap, or try to split it?). SPEC.md §9.
Development
npm test # unit + integration (needs docker compose up -d)
npm run lint # eslint
npm run typecheck # tsc --noEmit
npm run format:check # prettierBefore opening a PR, run the code review checklist.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
MCP server for Codat — companies, connections, invoices, bills and financial statements.
MCP server for Autumn — read customers, plans, balances & invoices; track usage and attach plans.
Related MCP Servers
- AlicenseCqualityCmaintenanceMCP server for smallinvoice.ch — Swiss SME invoicing and accounting with 146 tools and OAuth2 BYOC authentication.1006 npmMIT
- FlicenseAqualityCmaintenanceA demo MCP server exposing billing operations (invoices, customers) with no built-in safety, designed as a test target for NitroWatch governance. It allows reading, sending, archiving, and permanently deleting accounts/invoices without confirmation.5-
- AlicenseAqualityBmaintenanceMCP server for VoxFactura enabling AI assistants to query business data (invoices, expenses, project margins, clients, VAT) and create draft quotes or mark invoices paid via a scoped API, with no direct client sends.11MIT
- AlicenseAqualityBmaintenanceMCP server wrapping the Chargebee REST API to manage customers, subscriptions, invoices, and transactions.10Apache 2.0