https://github.com/npow/stripe-analytics-mcp
30-second Stripe morning check via MCP: MRR, churn, failed payments, and trial risk.
https://github.com/npow/stripe-analytics-mcp
billing-analytics churn-analytics mcp model-context-protocol mrr npm saas-metrics stripe typescript
Last synced: 27 days ago
JSON representation
30-second Stripe morning check via MCP: MRR, churn, failed payments, and trial risk.
- Host: GitHub
- URL: https://github.com/npow/stripe-analytics-mcp
- Owner: npow
- License: mit
- Created: 2026-02-23T05:37:01.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-09T20:36:18.000Z (3 months ago)
- Last Synced: 2026-03-10T01:49:13.417Z (3 months ago)
- Topics: billing-analytics, churn-analytics, mcp, model-context-protocol, mrr, npm, saas-metrics, stripe, typescript
- Language: TypeScript
- Size: 82 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# stripe-analytics-mcp
[](https://github.com/npow/stripe-analytics-mcp/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/stripe-analytics-mcp)
[](LICENSE)
[](https://nodejs.org/) [](https://mintlify.com/npow/stripe-analytics-mcp)
Ask your AI assistant "how's my business doing?" and get your MRR, churn, failed payments, and expiring trials in one answer.
## The problem
You check your Stripe dashboard for MRR, churn, and revenue breakdown every day. Stripe's official MCP server only does operations — create customers, send invoices. It can't tell you what your MRR is. ChartMogul and Baremetrics compute these metrics but cost $100+/month and have no MCP interface. You're switching between your editor and browser tabs just to check a number.
## The morning check
> "How's my business doing?" / "Morning check" / "What happened overnight?"
One question, one answer, 30-second scan. Everything you'd normally check across 4 Stripe dashboard pages:
```
Dashboard — 2026-02-24
MRR: $4,280 (+$120 this week)
Subscriptions: 42 active, 3 trialing, 1 past due
MRR Movement (last 7 days)
- New: +$198 (2 new customers)
- Expansion: +$49 (1 upgrade)
- Contraction: -$0
- Churned: -$127 (1 cancellation)
- Net: +$120
Quick Ratio: 1.9 (healthy)
Failed Payments (2 — $147 at risk)
- alice@acme.com — $98 — card_declined — attempt 2
- bob@startup.io — $49 — insufficient_funds — attempt 1
Trials Expiring Soon (3 — $147 potential MRR)
- carol@bigco.com — Pro — 2 days left — $49/mo
- dave@agency.net — Basic — 1 day left — $19/mo
- eve@freelance.co — Pro — 3 days left — $49/mo
```
## Recover failed payments
> "Am I losing money to failed payments?"
Failed payments are the easiest revenue to recover — these customers already want to pay you. Get the list with failure reasons so you can reach out today:
```
Failed Payments
Total at risk: $245.00
Failed invoices: 3
| Customer | Amount | Reason | Attempts | Last Attempt | Plan |
|-------------------|--------|-------------------|----------|--------------|------|
| alice@acme.com | $98.00 | card_declined | 2 | 2026-02-23 | Pro |
| bob@startup.io | $49.00 | insufficient_funds| 1 | 2026-02-22 | Pro |
| carol@agency.net | $98.00 | expired_card | 3 | 2026-02-21 | Pro |
```
## Track MRR growth
> "How did my MRR change this month?"
See exactly where growth is coming from and where you're leaking:
```
MRR Movement — Last 30 days
Net New MRR: +$840
- New MRR: +$570 (from new customers)
- Expansion MRR: +$390 (from upgrades)
- Contraction MRR: -$49 (from downgrades)
- Churned MRR: -$71 (from cancellations)
```
## Watch your trial funnel
The dashboard flags trials expiring within 3 days — customers about to decide whether to convert or leave. The highest-leverage moment to intervene.
## Understand churn
> "What's my churn rate?"
Both customer churn and revenue churn — because losing one $500/mo customer hurts more than losing five $10/mo customers:
```
Churn Analysis — Last 30 days
Customer Churn Rate: 3.2%
Revenue Churn Rate: 1.8%
Churned Customers: 4
Churned MRR: $127.00
```
## Know which plans work
> "Which plan makes the most money?"
```
| Plan | Subscribers | MRR | % of Total |
|------------|-------------|-----------|------------|
| Pro | 28 | $2,744.00 | 64.1% |
| Basic | 35 | $665.00 | 15.5% |
| Enterprise | 3 | $871.00 | 20.4% |
```
## Quick start
```bash
STRIPE_SECRET_KEY=sk_test_... npx stripe-analytics-mcp
```
Then ask your AI assistant: "How's my business doing?"
## Install
```bash
npx stripe-analytics-mcp
```
Add to your Claude Code / Cursor / Windsurf MCP config:
```json
{
"mcpServers": {
"stripe-analytics": {
"command": "npx",
"args": ["stripe-analytics-mcp"],
"env": {
"STRIPE_SECRET_KEY": "sk_test_..."
}
}
}
}
```
## How it works
Connects to Stripe (read-only), computes metrics from live subscription data, returns markdown your AI assistant renders naturally.
- **MRR**: Sums subscription items, normalizes annual/weekly to monthly, applies discounts, excludes trials
- **Movement**: Tracks new, expansion, contraction, and churn MRR from Stripe events
- **Quick Ratio**: (New + Expansion) / (Contraction + Churn) — above 1.0 means growing
- **Failed payments**: Scans open invoices with failed attempts
- **Trials**: Identifies trialing subscriptions about to expire
Stateless — every query hits Stripe fresh. No data cached. No database. No account needed.
## Configuration
| Variable | Required | Description |
|----------|----------|-------------|
| `STRIPE_SECRET_KEY` | Yes | Stripe secret key (`sk_test_...` or `sk_live_...`). Read-only access is sufficient. |
## Development
```bash
git clone https://github.com/npow/stripe-analytics-mcp
cd stripe-analytics-mcp
npm install
npm run build
npm test
```
## License
[MIT](LICENSE)