mcp-saas-toolkit
<h1 align="center">
🧰 mcp-saas-toolkit (Power Edition)
</h1>
<p align="center">
<strong>Give Claude superpowers over your SaaS stack.</strong><br />
A production-ready MCP server with 24 tools for Stripe, Twilio, Resend, GitHub, and Slack — plus pre-built workflow prompts and live resources.
</p>
<p align="center">
<a href="https://www.npmjs.com/package/mcp-saas-toolkit"><img src="https://img.shields.io/npm/v/mcp-saas-toolkit?style=flat-square&color=CB3837" alt="npm version" /></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License: MIT" /></a>
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-8A2BE2?style=flat-square" alt="MCP Compatible" /></a>
</p>
<p align="center">
<em>Supported by Claude for Open Source</em>
</p>
---
## What is this?
**mcp-saas-toolkit** is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that equips Claude with tools to call popular SaaS APIs on your behalf. Instead of copy-pasting API keys into chat, you configure the server once and then ask Claude things like:
> *"Onboard a new customer named Alice with email alice@example.com (customer, email, slack announcement)."*
> *"Create a payment link for price_1ABC, email it to them, and let me know on Slack when sent."*
> *"Open a GitHub issue for the memory leak and assign it to John."*
Claude uses the right tools, calls the right APIs, handles failures via built-in retry backoffs, and gives you the result — all within the conversation.
---
## ✨ Supported Integrations & Features
**24 Tools across 5 Services:**
* **Stripe (8):** List/create customers, create invoices/payment links, check subscriptions, issue refunds, get balance, list products.
* **Twilio (4):** Send SMS, check message delivery, list message history, initiate voice calls (TTS/TwiML).
* **Resend (3):** Send structured emails, fetch delivery status, batch send up to 100 emails.
* **GitHub (5):** List repos, get rich repo stats, list issues, create issues, open pull requests.
* **Slack (4):** Send messages (with thread support), list channels, set topics, add emoji reactions.
**🔋 MCP Prompts (Workflow Templates):**
- `onboard_customer`: Create Stripe customer → Send welcome email → Notify Slack
- `invoice_reminder`: Check Stripe subscription → Create invoice → Email/SMS customer
- `incident_report`: Create GitHub issue → Alert Slack → Email stakeholders
- `new_release`: Fetch recent commits → Create GitHub issue → Announce on Slack
**📊 MCP Resources (Live Feeds):**
- `saas://stripe/balance`: Read current Stripe account balance
- `saas://stripe/recent-charges`: Fetch recent charges instantly
- `saas://github/{owner}/{repo}/overview`: Dynamic rich repository telemetry
---
## 🚀 Quick Start
### 1. Install & Configure
```bash
npm install -g mcp-saas-toolkit
# Or use directly via npx mcp-saas-toolkit
```
Copy the example `.env` file and fill in your keys:
```env
# Logging level (debug, info, warn, error)
LOG_LEVEL=info
# Services (Only set keys for the ones you want to use)
GITHUB_TOKEN=ghp_...
SLACK_BOT_TOKEN=xoxb-...
STRIPE_SECRET_KEY=sk_test_...
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TWILIO_PHONE_NUMBER=+1234567890
RESEND_API_KEY=re_...
```
### 2. Add to Claude Desktop
Open your config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows):
```json
{
"mcpServers": {
"saas-toolkit": {
"command": "npx",
"args": ["-y", "mcp-saas-toolkit"],
"env": {
"GITHUB_TOKEN": "ghp_...",
"STRIPE_SECRET_KEY": "sk_test_...",
"SLACK_BOT_TOKEN": "xoxb-..."
}
}
}
}
```
Restart Claude Desktop. You should see all tools, resources, and templates appear!
## 💬 Example Prompts
Once the server is connected, try these multi-tool workflows:
> **"Look up the Stripe customer with email john@acme.com, check their subscription, and if it's past due, send them an SMS reminder at +15551234567."**
>
> **"We have a prod incident. Open a bug report on the frontend repo, email the on-call at ops@co.com, and drop a red alert in the Slack #engineering channel."**
>
> **"Read my Stripe balance resource, and summarize how we did this week to the #general channel."**
---
## 🏗️ Architecture & Development
Built with robustness in mind:
- **Resiliency:** All external API interactions are wrapped in an exponential backoff retry handler to safely absorb rate limits and 5xx errors.
- **Lazy Initialization:** SDK clients are booted only when first invoked. Missing API keys will not crash the server but will cleanly surface actionably errors.
- **Strict Formatting:** Input schemas strictly define all expectations. Output always maps to an `{ success: true, data }` envelope.
### Local verification
```bash
npm install
npm run build
npx @modelcontextprotocol/inspector node dist/index.js
```
TDQS
Scored across 24 tools
Each tool is clearly scoped to a specific service and action, with no overlap across services or within service groups. For example, github_create_issue and github_list_issues are distinct, and tools from different services (e.g., Slack vs. Twilio) address unrelated domains.
All tools follow a consistent service_verb_noun pattern using snake_case (e.g., stripe_get_balance, slack_send_message). The service prefix provides immediate context, and verbs (create, get, list, send) are uniformly applied.
With 24 tools across five SaaS services, the count is slightly high but appropriate for a 'toolkit' that aims to cover common operations for each integration. Each service has a focused subset (3-8 tools), avoiding excessive bloat while providing meaningful functionality.
Each service covers core operations but lacks update/delete endpoints (e.g., GitHub has no update_issue, Stripe no update_customer). While the basics for reading and creating are present, notable gaps in lifecycle management will force agents to rely on other means for modifications.