Skip to main content
Glama
santimentasti

mcp-server-billing

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

billing_search_customers

Find customers by name, email, domain, status, country

billing_get_customer

One customer with subscriptions and open balance

billing_list_invoices

Invoices filtered by customer, status, date range

billing_revenue_summary

Monthly MRR/ARR, new vs. churned, by plan or country

billing_convert_currency

Convert an amount via live ECB rates (frankfurter.dev)

billing_issue_credit_note

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 inspect

The 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 db.t4g.micro, 11h/day (power-scheduled)

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   # prettier

Before opening a PR, run the code review checklist.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server for smallinvoice.ch — Swiss SME invoicing and accounting with 146 tools and OAuth2 BYOC authentication.
    100
    10
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A 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
  • A
    license
    A
    quality
    B
    maintenance
    MCP 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.
    11
    MIT
  • F
    license
    -
    quality
    B
    maintenance
    MCP server that gives AI agents read access to subscription/SaaS invoice history, ingested from Gmail and stored in Postgres and MongoDB, with tools for listing invoices, retrieving PDFs, and summarizing spend.

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.

  • A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/santimentasti/mcp-server-billing'

If you have feedback or need assistance with the MCP directory API, please join our Discord server