mcp-server-creem
MCP server for Creem.io providing tools to manage subscriptions, products, payments, license keys, and more through the Creem API.
README
MCP Server for Creem.io
A Model Context Protocol (MCP) server for Creem.io - the payment partner for SaaS businesses. This server provides tools to manage subscriptions, products, payments, and more through the Creem API.
Features
- Product Management: Create, retrieve, and search products
- Checkout Sessions: Generate payment links and checkout sessions
- Subscription Management: Handle recurring subscriptions, upgrades, and cancellations
- Customer Management: Manage customers and generate portal links
- License Keys: Activate, validate, and deactivate software licenses
- Discount Codes: Create and manage discount codes
- Transactions: Search and retrieve payment transactions
- Test Mode: Full support for Creem's test environment
Installation
npm install mcp-server-creem
Or install from source:
git clone https://github.com/Selenium39/mcp-server-creem.git
cd mcp-server-creem
npm install
npm run build
Configuration
Environment Variables
Set the following environment variables:
CREEM_API_KEY(required): Your Creem API keyCREEM_TEST_MODE(optional): Set totrueto use test mode (default:false)
Getting Your API Key
- Go to the Creem Dashboard
- Navigate to the "Developers" section in the top navbar
- Click the eye icon to reveal your API key
- Copy and save it securely
MCP Settings Configuration
Add this to your MCP settings file (e.g., claude_desktop_config.json):
{
"mcpServers": {
"creem": {
"command": "node",
"args": ["/path/to/mcp-server-creem/build/index.js"],
"env": {
"CREEM_API_KEY": "your-api-key-here",
"CREEM_TEST_MODE": "true"
}
}
}
}
For Claude Desktop on macOS, the config file is typically at:
~/Library/Application Support/Claude/claude_desktop_config.json
Available Tools
Product Management
create_product
Create a new product (one-time or subscription).
Parameters:
name(required): Product nameprice(required): Price in cents (e.g., 1000 = $10.00)billing_type(required): "one-time" or "recurring"description(optional): Product descriptioncurrency(optional): Currency code (default: "EUR")billing_period(optional): For recurring products (e.g., "every-month", "every-year")tax_category(optional): Tax category (default: "saas")image_url(optional): Product image URL
Example:
{
"name": "Pro Plan",
"description": "Professional subscription",
"price": 2900,
"currency": "USD",
"billing_type": "recurring",
"billing_period": "every-month"
}
get_product
Retrieve product details by ID.
Parameters:
product_id(required): Product ID
search_products
List all products.
Parameters:
page_number(optional): Page number (default: 1)page_size(optional): Items per page (default: 50, max: 100)
Checkout Sessions
create_checkout
Create a checkout session for a product.
Parameters:
product_id(required): Product IDrequest_id(optional): Custom tracking IDsuccess_url(optional): Redirect URL after paymentcustomer_email(optional): Pre-fill customer emailcustomer_name(optional): Pre-fill customer namediscount_code(optional): Apply discount codeunits(optional): Number of seats/unitsmetadata(optional): Custom metadata object
Example:
{
"product_id": "prod_abc123",
"customer_email": "user@example.com",
"success_url": "https://myapp.com/success",
"metadata": {
"user_id": "12345",
"plan": "pro"
}
}
get_checkout
Retrieve checkout session details.
Parameters:
checkout_id(required): Checkout session ID
Customer Management
get_customer
Get customer details by email or ID.
Parameters:
email(optional): Customer emailcustomer_id(optional): Customer ID
list_customers
List all customers.
Parameters:
page_number(optional): Page number (default: 1)page_size(optional): Items per page (default: 50)
create_customer_portal_link
Generate a customer portal login link.
Parameters:
customer_id(required): Customer ID
Subscription Management
get_subscription
Retrieve subscription details.
Parameters:
subscription_id(required): Subscription ID
cancel_subscription
Cancel an active subscription.
Parameters:
subscription_id(required): Subscription ID
update_subscription
Update subscription (e.g., change seats).
Parameters:
subscription_id(required): Subscription IDitems(required): Array of items withidandunits
Example:
{
"subscription_id": "sub_xyz789",
"items": [
{
"id": "sitem_abc123",
"units": 5
}
]
}
upgrade_subscription
Upgrade or downgrade to a different product.
Parameters:
subscription_id(required): Subscription IDproduct_id(required): New product IDupdate_behavior(optional): "proration-charge-immediately", "proration-charge", or "proration-none"
License Key Management
activate_license
Activate a license key for a device/instance.
Parameters:
key(required): License keyinstance_name(required): Unique device identifier
deactivate_license
Deactivate a license instance.
Parameters:
key(required): License keyinstance_id(required): Instance ID
validate_license
Validate a license key.
Parameters:
key(required): License keyinstance_id(required): Instance ID
Discount Codes
create_discount
Create a discount code.
Parameters:
code(required): Discount code (e.g., "SUMMER50")type(required): "percentage" or "fixed"value(required): Discount valuecurrency(optional): For fixed discountsmax_redemptions(optional): Usage limitexpires_at(optional): Expiration date (ISO 8601)
Example:
{
"code": "LAUNCH50",
"type": "percentage",
"value": 50,
"max_redemptions": 100
}
get_discount
Retrieve discount details.
Parameters:
code(required): Discount code
delete_discount
Delete a discount code.
Parameters:
discount_id(required): Discount ID
Transactions
search_transactions
Search and list transactions.
Parameters:
product_id(optional): Filter by productpage_number(optional): Page number (default: 1)page_size(optional): Items per page (default: 50)
Usage Examples
Creating a Product and Checkout
// 1. Create a product
const product = await create_product({
name: "Premium Plan",
price: 4900,
billing_type: "recurring",
billing_period: "every-month"
});
// 2. Create checkout session
const checkout = await create_checkout({
product_id: product.id,
customer_email: "customer@example.com",
success_url: "https://myapp.com/welcome"
});
// 3. Redirect customer to checkout.checkout_url
Managing Subscriptions
// Get subscription details
const subscription = await get_subscription({
subscription_id: "sub_abc123"
});
// Update seat count
await update_subscription({
subscription_id: "sub_abc123",
items: [{
id: "sitem_xyz789",
units: 10
}]
});
// Cancel subscription
await cancel_subscription({
subscription_id: "sub_abc123"
});
License Key Workflow
// Activate license
const activated = await activate_license({
key: "LICENSE-KEY-HERE",
instance_name: "user-macbook-pro"
});
// Validate on app startup
const isValid = await validate_license({
key: "LICENSE-KEY-HERE",
instance_id: activated.instance[0].id
});
// Deactivate when transferring
await deactivate_license({
key: "LICENSE-KEY-HERE",
instance_id: activated.instance[0].id
});
Test Mode
To test your integration without real payments:
- Set
CREEM_TEST_MODE=truein your environment - Use test API key from your Creem dashboard
- Use test card:
4242 4242 4242 4242(any CVV/expiry)
All functionality works the same in test mode, but no real charges occur.
Error Handling
The server returns detailed error messages:
{
"content": [{
"type": "text",
"text": "Error: Creem API Error (401): Invalid API key"
}],
"isError": true
}
Common errors:
- 401: Invalid API key
- 403: Forbidden - check permissions
- 404: Resource not found
- 400: Invalid parameters
Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run watch
# Run in development
npm run dev
Resources
Support
- Email: support@creem.io
- Discord: Join Community
- Documentation: docs.creem.io
License
MIT
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
Security
Never commit your API keys. Always use environment variables. Report security issues to support@creem.io.
Sponsored By
<div align="center">
This project is proudly supported by ChatTempMail
ChatTempMail - Professional temporary email service for developers and testers.
🚀 Looking for more MCP servers? Check out mcp-server-tempmail - A powerful MCP server for managing temporary email addresses!
</div>
<div align="center">
Made with ❤️ for the MCP community
Report Bug · Request Feature · GitHub
</div>
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.