UNPKG

revenuecat-mcp

Version:

MCP server exposing complete RevenueCat v2 REST API for IDE integration with AI agents

219 lines (172 loc) 6.36 kB
# RevenueCat MCP Server A Model Context Protocol (MCP) server that exposes the complete RevenueCat v2 REST API for seamless integration with AI agents and IDEs like Cursor and VS Code. ## Features - **Complete API Coverage**: All 25 CRUD operations across 5 RevenueCat resources - **IDE Integration**: Native MCP support for Cursor, VS Code, and other compatible IDEs - **Type Safety**: Full TypeScript implementation with comprehensive validation - **Production Ready**: Retry logic, error handling, and structured logging - **Lightweight**: Single executable under 5MB ## Supported Resources | Resource | Create | Read | Update | Delete | List | |----------|--------|------|--------|--------|------| | Offerings | ✅ | ✅ | ✅ | ✅ | ✅ | | Products | ✅ | ✅ | ✅ | ✅ | ✅ | | Entitlements | ✅ | ✅ | ✅ | ✅ | ✅ | | Packages | ✅ | ✅ | ✅ | ✅ | ✅ | | Price Experiments | ✅ | ✅ | ✅ | ✅ | ✅ | ## Installation ### Option 1: Global Installation (Recommended) ```bash npm install -g revenuecat-mcp ``` ### Option 2: From Source ```bash git clone https://github.com/iamhenry/revenuecat-mcp.git cd revenuecat-mcp npm install npm run build npm install -g . ``` ## Configuration ### 1. Environment Setup Create a `.env` file in your project or set environment variables: ```env REVENUECAT_SECRET_KEY=sk_your_secret_key_here RC_API_URL=https://api.revenuecat.com/v2 # Optional LOG_LEVEL=info # Optional ``` ### 2. Get Your RevenueCat Credentials 1. Log in to your [RevenueCat Dashboard](https://app.revenuecat.com) 2. Navigate to your project settings 3. Generate a secret key with appropriate permissions 4. Note your project ID from the URL or project settings ## IDE Integration ### Cursor ```bash # Add the MCP server to Cursor claude mcp add revenuecat revenuecat-mcp # Test the integration claude mcp test revenuecat ``` ### VS Code Add to your MCP configuration file: ```json { "servers": { "revenuecat": { "command": "revenuecat-mcp" } } } ``` ## Usage Examples ### List Products ```bash echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "ListProducts", "arguments": {"project_id": "your_project_id"}}}' | revenuecat-mcp ``` ### Create Offering ```bash echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "CreateOffering", "arguments": {"project_id": "your_project_id", "name": "Premium Offering", "description": "Our premium subscription offering"}}}' | revenuecat-mcp ``` ### Get Product Details ```bash echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "GetProduct", "arguments": {"project_id": "your_project_id", "id": "prod_123456"}}}' | revenuecat-mcp ``` ## Available MCP Tools ### Offerings - `CreateOffering` - Create a new offering - `GetOffering` - Retrieve offering details - `UpdateOffering` - Update offering properties - `DeleteOffering` - Delete an offering - `ListOfferings` - List all offerings with pagination ### Products - `CreateProduct` - Create a new product - `GetProduct` - Retrieve product details - `UpdateProduct` - Update product properties - `DeleteProduct` - Delete a product - `ListProducts` - List all products with pagination ### Entitlements - `CreateEntitlement` - Create a new entitlement - `GetEntitlement` - Retrieve entitlement details - `UpdateEntitlement` - Update entitlement properties - `DeleteEntitlement` - Delete an entitlement - `ListEntitlements` - List all entitlements with pagination ### Packages - `CreatePackage` - Create a new package - `GetPackage` - Retrieve package details - `UpdatePackage` - Update package properties - `DeletePackage` - Delete a package - `ListPackages` - List all packages with pagination ### Price Experiments - `CreatePriceExperiment` - Create a new price experiment - `GetPriceExperiment` - Retrieve price experiment details - `UpdatePriceExperiment` - Update price experiment properties - `DeletePriceExperiment` - Delete a price experiment - `ListPriceExperiments` - List all price experiments with pagination ## Error Handling The server maps RevenueCat HTTP errors to appropriate MCP error codes: - `400 Bad Request``VALIDATION_ERROR` - `401 Unauthorized``UNAUTHENTICATED` - `403 Forbidden``FORBIDDEN` - `404 Not Found``NOT_FOUND` - `429 Too Many Requests``RATE_LIMITED` - `500+ Server Errors``INTERNAL` ## Development ### Prerequisites - Node.js ≥18 - npm or yarn - RevenueCat account with API access ### Local Development ```bash # Clone the repository git clone https://github.com/iamhenry/revenuecat-mcp.git cd revenuecat-mcp # Install dependencies npm install # Set up environment cp .env.example .env # Edit .env with your credentials # Build the project npm run build # Test locally npm run dev ``` ### Project Structure ``` src/ ├── index.ts # MCP server entry point ├── core/ │ ├── config.ts # Environment configuration │ ├── entities/ # TypeScript interfaces │ ├── use-cases/ # Business logic │ └── validation/ # Input validation ├── infrastructure/ │ ├── revenuecat-client.ts # HTTP client │ └── logger.ts # Structured logging └── presentation/ └── mcp-server.ts # MCP protocol handler ``` ## Security - NO secrets are logged (automatic redaction) - Environment variables are validated at startup - Input validation for all API calls - Secure error handling without data leakage ## Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feature-name` 3. Make your changes and add tests 4. Commit: `git commit -am 'Add feature'` 5. Push: `git push origin feature-name` 6. Submit a pull request ## License MIT License - see [LICENSE](LICENSE) file for details. ## Support - 📚 [RevenueCat Documentation](https://docs.revenuecat.com) - 🐛 [Issue Tracker](https://github.com/iamhenry/revenuecat-mcp/issues) - 💬 [Discussions](https://github.com/iamhenry/revenuecat-mcp/discussions) ## Changelog ### v1.0.0 - Initial release with complete RevenueCat v2 API coverage - Support for all 5 resources with full CRUD operations - MCP integration for popular IDEs - Production-ready error handling and logging