MCP Clevertap API
Overview
A Model Context Protocol (MCP) server for the CleverTap REST API. Exposes CleverTap's user profiles, events, campaigns, and reports as tools that any MCP-compatible AI assistant (Claude, Cursor, etc.) can call directly. - — manage multiple CleverTap accounts from a single server instance - — if no project is configured, clevertap_configure walks you through the process - — events, profiles, campaigns, and reports - — long-running operations (event/profile counts) are polled automatically install the Playwright Chromium binary once after npm install: The server reads project credentials from the CLEVERTAP_PROJECTS environment variable — a JSON array of project objects: You can also use individual environment variables for a single project: In your claude_desktop_config.json (or ~/.claude.json): CLEVERTAP_PROJECTS must be a serialized JSON (not a native JSON object) inside the env block.
README
clevertap-mcp
A Model Context Protocol (MCP) server for the CleverTap REST API. Exposes CleverTap’s user profiles, events, campaigns, and reports as tools that any MCP-compatible AI assistant (Claude, Cursor, etc.) can call directly.
Features
- Multi-project — manage multiple CleverTap accounts from a single server instance
- Guided setup — if no project is configured,
clevertap_configurewalks you through the process - Full API coverage — events, profiles, campaigns, and reports
- Async polling — long-running operations (event/profile counts) are polled automatically
Tools
Meta
| Tool | Description |
|---|---|
clevertap_configure |
Guided setup to add a project or generate the CLEVERTAP_PROJECTS config |
clevertap_list_projects |
List all configured projects and their regions |
Events
| Tool | Description |
|---|---|
clevertap_upload_events |
Upload one or more events for a user |
clevertap_get_events |
Query event data with filters |
clevertap_get_events_cursor |
Fetch the next page of event results via cursor |
clevertap_get_event_count |
Get the total count of an event (with async polling) |
Profiles
| Tool | Description |
|---|---|
clevertap_upload_profiles |
Create or update user profiles |
clevertap_get_profile |
Look up a single user by identity, email, or objectId |
clevertap_get_profiles_by_event |
Get profiles of users who performed an event |
clevertap_get_profiles_cursor |
Fetch the next page of profile results via cursor |
clevertap_delete_profile |
Delete a user profile |
clevertap_upload_device_token |
Register a push token for a user |
clevertap_get_profile_count |
Count profiles matching a segment |
clevertap_demerge_profiles |
Split merged profiles apart |
clevertap_subscribe |
Subscribe/unsubscribe a user to channels |
clevertap_disassociate_phone |
Remove a phone number from a profile |
Campaigns
| Tool | Description |
|---|---|
clevertap_get_campaigns |
List campaigns within a date range |
clevertap_get_campaign_report |
Get delivery and engagement stats for a campaign |
clevertap_stop_campaign |
Stop a running campaign |
clevertap_create_campaign |
Create and launch a campaign |
Reports
| Tool | Description |
|---|---|
clevertap_get_message_report |
Message-level delivery report |
clevertap_get_top_property_count |
Top property value counts for an event |
clevertap_get_event_trend |
Daily/weekly/monthly trend for an event |
clevertap_get_dau |
Daily active users trend |
clevertap_get_uninstall_report |
Uninstall trend report |
clevertap_get_real_time_counts |
Real-time active user counts |
Generic
| Tool | Description |
|---|---|
clevertap_request |
Make any raw REST API request |
clevertap_poll |
Poll a pending async request by req_id |
Web / Browser
| Tool | Description |
|---|---|
clevertap_web_login |
Open a Chromium window and capture the dashboard session cookie + CSRF token after manual login (supports SSO and 2FA) |
clevertap_web_session_status |
Check whether a web session has been captured for a project, and when it was obtained |
clevertap_web_request |
Make an authenticated request to any CleverTap dashboard endpoint using the captured session |
clevertap_get_campaigns_ui |
List campaigns from the dashboard UI API — richer data than the REST API (status, sent, impressions, clicks, edit URL) |
clevertap_send_test_push |
Send a test push notification to a specific device token. Accepts the push token from clevertap_get_profile (platformInfo[].push_token), the target platform (ios/android), the push channel name, and an optional deep link URL. |
Prerequisite for web tools: install the Playwright Chromium binary once after
npm install:npx playwright install chromium
Installation
git clone https://github.com/your-org/clevertap-mcp.git
cd clevertap-mcp
npm install
npx playwright install chromium # required for web/browser tools
npm run build
Configuration
The server reads project credentials from the CLEVERTAP_PROJECTS environment variable — a JSON array of project objects:
[
{
"name": "My App - Production",
"account_id": "XXX-XXX-XXXX",
"passcode": "YYY-YYY-YYYY",
"region": "us1"
},
{
"name": "My App - Staging",
"account_id": "AAA-AAA-AAAA",
"passcode": "BBB-BBB-BBBB",
"region": "us1"
}
]
Supported regions: in1, us1, eu1, sg1, aps3, mec1
Single-project fallback
You can also use individual environment variables for a single project:
CLEVERTAP_ACCOUNT_ID=XXX-XXX-XXXX
CLEVERTAP_PASSCODE=YYY-YYY-YYYY
CLEVERTAP_REGION=us1
Adding to Claude Desktop
In your claude_desktop_config.json (or ~/.claude.json):
{
"mcpServers": {
"clevertap": {
"command": "node",
"args": ["/absolute/path/to/clevertap-mcp/dist/index.js"],
"env": {
"CLEVERTAP_PROJECTS": "[{\"name\":\"My App\",\"account_id\":\"XXX-XXX-XXXX\",\"passcode\":\"YYY-YYY-YYYY\",\"region\":\"us1\"}]"
}
}
}
}
Important:
CLEVERTAP_PROJECTSmust be a serialized JSON string (not a native JSON object) inside theenvblock.
Development
npm run build # compile TypeScript → dist/
npm run dev # watch mode
npm start # run compiled server
Project structure
src/
index.ts # MCP server entry point, project config, tool registration
client.ts # CleverTap REST API HTTP client
tools/
events.ts # Event upload and query tools
profiles.ts # Profile management tools
campaigns.ts # Campaign tools
reports.ts # Analytics and report tools
generic.ts # Raw request / poll tools
web.ts # Browser session tools via Playwright (login, campaigns UI, test push)
License
MIT
Install
npx playwright install chromium # required for web/browser toolsConfiguration
{
"mcpServers": {
"clevertap": {
"command": "node",
"args": ["/absolute/path/to/clevertap-mcp/dist/index.js"],
"env": {
"CLEVERTAP_PROJECTS": "[{\"name\":\"My App\",\"account_id\":\"XXX-XXX-XXXX\",\"passcode\":\"YYY-YYY-YYYY\",\"region\":\"us1\"}]"
}
}
}
}