# SaaS Brain MCP Ask questions about your SaaS business in plain English using Claude AI. > "Who is about to churn?" • "What's my revenue this week?" • "Who are my best customers?" No dashboards. No SQL. Just ask. ## What it does SaaS Brain is an MCP (Model Context Protocol) server that connects Claude AI to your Stripe and Supabase data. Ask natural language questions and get intelligent business insights instantly. ### Available tools | Tool | What it answers | |---|---| | `getRevenue` | Total revenue for any date range | | `getTopCustomers` | Highest spending customers | | `getActiveSubscriptions` | All active subscribers + plan info | | `getInactiveUsers` | Users who haven't logged in for N days | | `getUserActivity` | Last login + activity for a specific user | | `getChurnRiskUsers` | Paying users who have gone inactive | | `getHighValueUsers` | Customers above a spend threshold | | `getHighValueAtRiskUsers` | High spenders who are now inactive | ### Example questions you can ask Claude - "What's my revenue from January to March?" - "Show me my top 5 customers by spend" - "Which users are at risk of churning?" - "Who pays the most but hasn't logged in recently?" - "Give me a full health report of my SaaS" ## Tech stack - Java 17 + Spring Boot - Stripe API - Supabase REST API - Docker - MCP Protocol (JSON-RPC 2.0) ## Prerequisites - Java 17+ - Maven - A Stripe account (free, test mode works) - A Supabase project (free tier works) - A Claude.ai account (free tier works) ## Setup ### 1. Clone the repo ```bash git clone https://github.com/Mohd16kaif/saas-brain-mcp.git cd saas-brain-mcp ``` ### 2. Add your API keys Create `src/main/resources/application.properties`: ```properties server.port=8080 spring.application.name=saas-brain-mcp stripe.api.key=sk_test_YOUR_STRIPE_KEY supabase.url=https://YOUR_PROJECT.supabase.co supabase.key=YOUR_SERVICE_ROLE_KEY ``` Get your keys from: - Stripe: dashboard.stripe.com → Developers → API Keys - Supabase: app.supabase.com → Settings → API → service_role key ### 3. Run locally ```bash mvn spring-boot:run ``` Test it: ```bash curl -X POST http://localhost:8080/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' ``` ## Deploy to Render (free, 24/7) ### 1. Fork this repo on GitHub ### 2. Create a new Web Service on Render - Go to render.com → New → Web Service - Connect your forked repo - Language: **Docker** - Branch: `main` - Instance Type: **Free** ### 3. Add environment variables in Render | Key | Value | |---|---| | `STRIPE_API_KEY` | your Stripe key | | `SUPABASE_URL` | your Supabase project URL | | `SUPABASE_KEY` | your Supabase service_role key | ### 4. Deploy Render builds and deploys automatically. Your server will be live at: ``` https://your-service-name.onrender.com ``` ## Connect to Claude.ai 1. Go to claude.ai → Settings → Connectors 2. Click **Add custom connector** 3. Name: `saas-brain` 4. URL: `https://your-render-url.onrender.com/mcp` 5. Save and enable in chat Then just ask Claude anything about your business. ## Connect to Claude Desktop Add this to your `claude_desktop_config.json`: ```json { "mcpServers": { "saas-brain": { "type": "http", "url": "https://your-render-url.onrender.com/mcp" } } } ``` File location: - Windows: `%APPDATA%\Claude\claude_desktop_config.json` - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` ## Important notes - Use Supabase's `service_role` key (not the `anon` key) needed to query `auth.users` - Churn detection works by matching emails between Stripe and Supabase make sure users sign up with the same email in both - Free Render instances sleep after 15 minutes of inactivity first request may take 30 seconds to wake up ## Cost **$0** Stripe test mode is free, Supabase free tier is permanent, Render free tier is sufficient for personal use. ## License MIT free to use, modify, and deploy. ## Built by Mohd. Kaif Shaikh [GitHub](https://github.com/Mohd16kaif)