mcp-saas-toolkit
Manage repositories, issues, pull requests, and fetch repository statistics.
Send structured emails, check delivery status, and batch send up to 100 emails.
Send messages with thread support, list channels, set topics, and add emoji reactions.
Manage customers, create invoices, payment links, refunds, check subscriptions, and list products.
Send SMS, check message delivery, list message history, and initiate voice calls.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-saas-toolkit Onboard customer Alice from acme.com and notify Slack"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
What is this?
mcp-saas-toolkit is a Model Context Protocol (MCP) 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.
Related MCP server: devflow-mcp
✨ 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 Slackinvoice_reminder: Check Stripe subscription → Create invoice → Email/SMS customerincident_report: Create GitHub issue → Alert Slack → Email stakeholdersnew_release: Fetch recent commits → Create GitHub issue → Announce on Slack
📊 MCP Resources (Live Feeds):
saas://stripe/balance: Read current Stripe account balancesaas://stripe/recent-charges: Fetch recent charges instantlysaas://github/{owner}/{repo}/overview: Dynamic rich repository telemetry
🚀 Quick Start
1. Install & Configure
npm install -g mcp-saas-toolkit
# Or use directly via npx mcp-saas-toolkitCopy the example .env file and fill in your keys:
# 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):
{
"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
npm install
npm run build
npx @modelcontextprotocol/inspector node dist/index.jsAvailable Tools
24 toolsgithub_create_issueB
Create a new issue in a GitHub repository. Supports labels, assignees, and milestone.
Inputs: repo (required), owner (required), title (required), body, +3 more.
github_create_pull_requestB
Create a pull request in a GitHub repository. Specify source and target branches, title, and body.
Inputs: base (required), head (required), repo (required), owner (required), +3 more.
github_get_repo_infoA
Get detailed information about a GitHub repository including stats, languages, recent commits, and contributor count.
Inputs: repo (required), owner (required).
github_list_issuesC
List and filter issues in a GitHub repository. Supports state, label, assignee, and keyword search.
Inputs: repo (required), owner (required), sort, state, +3 more.
github_list_reposA
List GitHub repositories for the authenticated user or a specific user/org. Returns repo name, description, stars, language, and visibility.
Inputs: sort, type, owner, per_page.
resend_get_emailA
Retrieve details and delivery status of a previously sent email. Returns metadata including delivery timestamps and any error information.
Inputs: email_id (required).
resend_send_batchA
Send a batch of up to 100 emails in a single API call.
Inputs: emails (required).
resend_send_emailB
Send a transactional email via Resend. Supports plain text and HTML content, multiple recipients, CC, BCC, reply-to, and custom headers.
Inputs: to (required), from (required), subject (required), cc, +6 more.
slack_add_reactionA
Add an emoji reaction to a Slack message. Useful for acknowledgements, approvals, or status updates.
Inputs: name (required), channel (required), timestamp (required).
slack_list_channelsA
List Slack channels the bot has access to. Returns channel name, ID, topic, member count, and purpose.
Inputs: limit, types, exclude_archived.
slack_send_messageA
Send a message to a Slack channel or DM. Supports plain text, Markdown (mrkdwn), and thread replies.
Inputs: text (required), channel (required), thread_ts, unfurl_links.
slack_set_topicB
Set or update the topic of a Slack channel.
Inputs: topic (required), channel (required).
stripe_check_subscriptionA
Check the subscription status for a Stripe customer. Returns active subscriptions with plan details, billing period, and current status.
Inputs: customer_id (required), status.
stripe_create_customerA
Create a new Stripe customer with name, email, phone, and optional metadata. Returns the created customer object.
Inputs: email (required), name, phone, metadata, +1 more.
stripe_create_invoiceC
Create and optionally finalize/send an invoice for a Stripe customer. Add line items with descriptions and amounts.
Inputs: items (required), customer_id (required), memo, auto_send, +1 more.
stripe_create_payment_linkA
Create a Stripe Payment Link for a given price. Returns a shareable URL that customers can use to pay.
Inputs: price_id (required), quantity, after_completion_url, allow_promotion_codes.
stripe_get_balanceA
Get the current Stripe account balance. Shows available and pending funds across all currencies.
Inputs: no named parameters.
stripe_issue_refundA
Issue a full or partial refund for a Stripe charge or payment intent. Returns refund details and status.
Inputs: amount, charge, reason, payment_intent.
stripe_list_customersB
List Stripe customers with optional filters. Returns customer ID, name, email, and metadata.
Inputs: email, limit, starting_after.
stripe_list_productsA
List Stripe products with their prices. Useful for browsing your catalog or finding Price IDs for payment links.
Inputs: limit, active.
twilio_check_message_statusB
Check the delivery status of a previously sent Twilio SMS message. Returns current status, error info (if any), and pricing.
Inputs: message_sid (required).
twilio_list_messagesB
List recent SMS messages with optional filters. View sent and received message history with status and pricing.
Inputs: to, from, limit, date_sent_after, +1 more.
twilio_make_callB
Initiate an outbound voice call via Twilio. The call is connected and plays the specified TwiML or reads text aloud via text-to-speech.
Inputs: to (required), say, from, twiml, +1 more.
twilio_send_smsA
Send an SMS message via Twilio. Returns the message SID, status, and price estimate.
Inputs: to (required), body (required), from.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
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.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server providing over 390 tools across 66 providers, including major SaaS platforms like GitHub, Slack, and Stripe. It enables AI assistants to interact directly with a wide array of public APIs and utility services through a single interface.-
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server that provides AI assistants with comprehensive GitHub developer tooling including PR analysis, code review, changelog generation, dependency auditing, commit summarization, and refactoring suggestions.7 npmISC
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server with tools for weather, calculator, and mock database queries, plus resources and prompt templates, featuring a glassmorphism admin dashboard and WebSocket support.MIT
- FlicenseNot gradedqualityDmaintenanceA production-ready MCP server with demo tools (calculator, web search, web fetch) and a Playground UI for interactive testing.-