Invoice-MCP
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.
README
InvoiceMCP
MCP server giving AI agents read access to subscription/SaaS invoice history,
ingested from Gmail and normalized into Postgres (structured data) + MongoDB
(PDFs). See SPEC.md for the full design.
Prerequisites
- Node 22+, pnpm
- Docker (local Postgres/Mongo/Redis) — or Railway database URLs
- Google OAuth client (Gmail API enabled, redirect URI
http://localhost:8787/oauth/callback) - OpenRouter API key
Setup
cp .env.example .envand fill in values (scripts/has key generators noted inline)docker compose up -dpnpm installpnpm migrate up— appliesmigrations/to Postgrespnpm cli seed-org --name "Your Org"pnpm cli auth— browser OAuth consent, stores encrypted refresh tokenpnpm cli check-connections— sanity check all three databases
Running
| Command | What |
|---|---|
pnpm worker |
ingestion worker (BullMQ; registers the monthly sync cron) |
pnpm mcp |
MCP server on :3000 (Streamable HTTP at POST /mcp, API key auth) |
pnpm cli discover |
whole-mailbox billing-sender discovery → auto-backfill |
pnpm cli backfill --service <id> |
full history for one sender |
pnpm cli sync |
incremental sync now (otherwise monthly via SYNC_CRON) |
MCP tools
list_services, list_invoices, get_invoice, get_invoice_pdf,
spend_summary — all scoped to DEFAULT_ORG_ID; money in minor units,
per-currency aggregation, no FX conversion.
Claude Desktop's connector UI expects OAuth, which this MVP doesn't
implement — bridge with mcp-remote
in claude_desktop_config.json instead:
{
"mcpServers": {
"invoice-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://<host>/mcp",
"--header", "Authorization: Bearer <MCP_API_KEY>"
]
}
}
}
Development
pnpm test/pnpm typecheck/pnpm lintpnpm codegen— regeneratesrc/db/types.tsafter schema changestsx scripts/smoke-extract.ts [pdf]— live LLM extraction smoke testtsx scripts/make-fixture-pdf.ts— regenerate the multi-page fixture PDF
Deploy (Railway)
One repo, two services:
- worker — start
pnpm start:worker - mcp — start
pnpm start:mcp(health check/healthz)
Both build with pnpm install && pnpm build. Run pnpm migrate up as the
worker's pre-deploy command. Set env vars per .env.example (Railway injects
database URLs for linked Postgres/Mongo/Redis services).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.