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>
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。