Server data from the Official MCP Registry
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
Remote endpoints: streamable-http: https://mcp.nevent.ai/mcp
Nevent MCP is a well-architected server with proper authentication (JWT + OAuth 2.1), appropriate permission scoping via operation modes, and clean credential handling. Minor code quality observations around error logging and input validation do not significantly impact security. Permissions align well with the server's purpose as a marketing/CRM data integration tool. Supply chain analysis found 2 known vulnerabilities in dependencies (1 critical, 0 high severity). Package verification found 1 issue.
3 files analyzed · 8 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: NEVENT_JWT_TOKEN
Environment variable: NEVENT_OPERATION_MODE
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
From the project's GitHub README.
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
Add https://mcp.nevent.ai/mcp as a remote MCP server in your client (Claude.ai, ChatGPT, Cursor, Cline, Continue).
npx mcp-nevent
Or install globally:
npm install -g mcp-nevent
mcp-nevent
Required env: NEVENT_JWT_TOKEN. Optional: NEVENT_OPERATION_MODE (READ_ONLY | STANDARD | FULL).
https://mcp.nevent.ai/mcpBuild first if needed: npm install && npm run build
Add to your MCP client config:
{
"mcpServers": {
"nevent": {
"command": "node",
"args": ["/path/to/mcp-nevent/dist/index.js"],
"env": {
"NEVENT_JWT_TOKEN": "your_nevent_jwt_token"
}
}
}
}
For Claude Desktop, the config file is:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonFor Claude Code:
claude mcp add nevent -- node /path/to/mcp-nevent/dist/index.js
export NEVENT_JWT_TOKEN=your_token
Settings → Connectors → Add custom MCP → URL https://mcp.nevent.ai/mcp. The OAuth flow will prompt you to log in with your Nevent admin account.
"Show me registrations for EventX broken down by ticket type"
"Which campaigns sent last month had an open rate above 30%?"
"Create a segment of all attendees who bought a VIP ticket in 2025
but haven't opened any email in the last 90 days"
"Schedule the 'Summer Gala' email campaign for next Monday at 10:00 CET"
"Compare ROAS across our Meta ad campaigns for March"
"How many suppressions did we accumulate this month and what are the top reasons?"
"Create per-user tracking links for the Summer Gala campaign and show me which users clicked"
| Tool | Description |
|---|---|
nevent_analytics_capabilities | Discover available data tables — call first if unsure what data exists |
nevent_analytics_table_schema | Get column definitions for a specific table |
nevent_analytics_query | Query with dimensions, metrics, filters, and time ranges |
nevent_analytics_filter_values | Get distinct field values to build valid filters |
nevent_campaign_report | Comprehensive campaign performance report — 13 parallel queries in one call |
nevent_segmentation_criteria | List all criteria available for building audience segments |
nevent_dimension_values | Autocomplete values for a segmentation criterion |
nevent_segment_preview | Preview estimated audience size without saving |
nevent_segment_execute | Execute a segment and get paginated matching contacts |
nevent_help | In-session guidance by topic (workflows, errors, tenants, analytics) |
| Tool | Description |
|---|---|
nevent_list_tenants | List all tenants accessible to the authenticated user |
nevent_switch_tenant | Set the active tenant for this MCP session |
nevent_reset_tenant | Restore home tenant after a cross-tenant operation (SUPERADMIN) |
nevent_list_segments | List saved segments for the active tenant |
nevent_get_segment | Get full filter definition and metadata for a segment |
nevent_create_segment | Create and persist a new audience segment |
nevent_update_segment | Modify an existing segment's name or filter definition |
| Tool | Description |
|---|---|
nevent_list_campaigns | List campaigns with status, channel, and engagement metrics |
nevent_get_campaign | Full campaign detail: content, metrics, tracked links |
nevent_get_campaign_insights | AI-generated insights and anomalies for a campaign |
nevent_create_campaign | Create a new campaign draft (EMAIL/SMS/WhatsApp) |
nevent_schedule_campaign | Schedule a draft campaign for delivery (requires confirmed=true) |
| Tool | Description |
|---|---|
nevent_list_templates | List email templates for the active tenant |
nevent_get_template | Full template content: MJML/HTML source, subject, usage metrics |
nevent_create_template | Create a new email template |
nevent_update_template | Update an existing template's content or tags |
nevent_clone_template | Duplicate an existing template |
nevent_rename_template | Rename a template without re-rendering content |
nevent_preview_template | Preview with merge-tag resolution against a sample user |
nevent_send_test_template | Send a real test email via SES to up to 10 recipients |
| Tool | Description |
|---|---|
nevent_get_sending_profile | Sender domain validation and warm-up status |
nevent_get_suppressions_summary | Suppressions summary with 30-day trend and reason breakdown |
| Tool | Description |
|---|---|
nevent_paid_ads_status | Check if a provider account is connected and when data last synced |
nevent_paid_ads_health | Surfaces throttle state, feature gate enrollment, stale syncs |
nevent_list_paid_campaigns | List all synced campaigns with budget and status |
nevent_get_paid_campaign_insights | Daily metrics: spend, CTR, CPM, CPC, ROAS |
nevent_paid_attribution | Links campaigns to ticket sales and revenue via UTM matching |
nevent_list_paid_ad_groups | List ad groups, optionally filtered by campaign |
nevent_get_paid_ad_group_insights | Daily metrics for an ad group |
nevent_get_paid_ad_group_comparative_stats | Compare ad group vs campaign siblings |
nevent_get_paid_ad_group_targeting | Full audience targeting config |
nevent_list_paid_ads | List individual ads with UTM fields |
nevent_get_paid_ad_creative | Ad creative: body, title, CTA, images/videos |
Track campaign link clicks, generate per-user tracking variants, and measure CTR across marketing campaigns.
| Tool | Tier | Description |
|---|---|---|
nevent_list_short_urls | Read | Paginated list of all short URLs with click counts. Filter by isActive or search by title/URL. |
nevent_get_short_url | Read | Full detail of a single short URL — id, shortCode, longUrl, tags, metadata, clickCount, isParent. |
nevent_get_short_url_metrics | Read | Aggregated analytics over N days: totalClicks, uniqueVisitors, clicksByDay, clicksByDevice, clicksByCountry, topReferers. |
nevent_get_short_url_campaign_metrics | Read | Campaign-wide CTR across a parent link and all per-user variants. Returns avgClicksPerUrl, clickThroughRate, topUsersByClicks. |
nevent_get_short_url_clicks | Read | Individual click records ordered newest-first: clickedAt, device, country, UTMs, isPaidTraffic. |
nevent_list_short_url_user_links | Read | All per-user short URL variants created under a parent/campaign link. |
nevent_create_short_url | Write | Create a new short URL. Supports customShortCode, expiresAt, tags, and metadata. |
nevent_update_short_url | Write | Update title, longUrl, isActive, tags, metadata, or expiration. Changes apply immediately. |
nevent_create_bulk_user_short_urls | Write | Generate per-user tracking variants for a campaign — each user gets a unique link with click attribution. |
LLM (Claude / ChatGPT)
|
| MCP over Streamable HTTP or stdio
v
┌─────────────────┐
│ Nevent MCP │ mcp.nevent.ai (hosted) or local
└─────────────────┘
|
| REST + JWT
v
Nevent APIs (analytics, campaigns, segments, paid media)
OAuth 2.1 is used for hosted (HTTP) mode: the MCP server acts as an authorization server, issuing short-lived JWT tokens after validating your Nevent credentials. Each session is isolated — no shared service accounts.
Privacy: tenant data is isolated per session. Data does not leave the Nevent infrastructure and is not used for model training.
npm install
npm run build
export NEVENT_JWT_TOKEN=your_token
node dist/index.js
npm install
npm run build
MCP_JWT_SECRET=dev-secret-at-least-32-chars \
MONGODB_URI=mongodb://localhost:27017/mcp-nevent \
MCP_TRANSPORT=http \
node dist/index.js
stdio mode:
| Variable | Required | Default | Description |
|---|---|---|---|
NEVENT_JWT_TOKEN | Yes | — | JWT token for authenticating with the data API |
NEVENT_DATA_API_URL | No | https://data.nevent.es | Data API base URL |
NEVENT_OPERATION_MODE | No | READ_ONLY | READ_ONLY | STANDARD | FULL |
HTTP mode:
| Variable | Required | Default | Description |
|---|---|---|---|
MCP_JWT_SECRET | Yes | — | JWT signing key for MCP access tokens (>= 32 chars) |
MONGODB_URI | Yes | — | MongoDB connection URI for OAuth token storage |
MCP_TRANSPORT | Yes | stdio | Set to http |
MCP_PORT | No | 3000 | HTTP port |
MCP_SERVER_URL | No | http://localhost:{port} | Public HTTPS URL of this server |
NEVENT_API_URL | No | https://api.nevent.es | Nevent API URL (auth + tenant endpoints) |
NEVENT_DATA_API_URL | No | https://data.nevent.es | Data API base URL |
NEVENT_OPERATION_MODE | No | READ_ONLY | READ_ONLY | STANDARD | FULL |
MCP_ALLOWED_ORIGINS | No | * | Comma-separated allowed CORS origins |
src/
├── index.ts # Entry point — stdio vs HTTP transport selection
├── server.ts # MCP server factory (transport-agnostic)
├── server-instructions.ts # Server-level LLM instructions (session init)
├── auth/
│ ├── oauth-provider.ts # OAuth 2.1 provider (login, token exchange)
│ ├── oauth-stores.ts # MongoDB-backed OAuth stores
│ ├── token-service.ts # JWT sign/verify with MCP_JWT_SECRET
│ └── login-page.ts # HTML login page renderer
├── clients/
│ ├── base-client.ts # Shared HTTP client (JWT auth, 401 auto-refresh)
│ ├── data-client.ts # Data API client with TTL caches
│ ├── paid-media-client.ts # Paid media endpoints client
│ ├── template-client.ts # Template operation endpoints
│ └── session-clients.ts # Per-session aggregate with atomic JWT rotation
├── config/
│ ├── operation-mode.ts # READ_ONLY | STANDARD | FULL operation guard
│ └── timeouts.ts # Centralised timeout constants
├── tools/ # One file per tool category
├── schemas/ # Zod validation schemas per category
└── types/ # TypeScript types per domain
Key design decisions:
DataClient for capabilities and segmentation criteria
reduce API calls on repeated tool invocations within a session.READ_ONLY / STANDARD / FULL) controls which write
tools are available, protecting against accidental mutations.See CONTRIBUTING.md for the development workflow.
Nevent uses a hierarchical tenant model.
| Role | What they can see |
|---|---|
| SUPERADMIN | All tenants in the system |
| OWNER | Their own tenant and all child tenants |
| ADMIN | Only their own tenant |
1. nevent_list_tenants → list accessible tenants (returns tenant IDs)
2. nevent_switch_tenant → set active tenant for this session
3. nevent_reset_tenant → restore home tenant (SUPERADMIN)
When you call nevent_switch_tenant:
{ tenantId }.DataClient (for analytics) and PaidMediaClient (for paid media) atomically.activeTenantId is updated from the new JWT's tenantId claim.When you call nevent_reset_tenant:
homeTenantId — the tenant ID captured from the original JWT at session creation time.{ tenantId: homeTenantId } to restore the original context.nevent_switch_tenant.homeTenantId is not available (e.g. the original JWT had no tenantId claim), the tool returns an error.Invariants:
active_tenant_id so the agent can verify the switch succeeded.1. nevent_analytics_capabilities → discover available tables
2. nevent_analytics_table_schema → get exact column names for your table
3. nevent_analytics_filter_values → get valid values for filter fields
4. nevent_analytics_query → run the query
1. nevent_segmentation_criteria → list available criterion_ids and operators
2. nevent_dimension_values → autocomplete criterion values (e.g. event IDs)
3. nevent_segment_preview → validate audience size before saving
4. nevent_create_segment → persist the segment
1. nevent_get_sending_profile → verify sender domain is validated
2. nevent_get_suppressions_summary → check suppression rate (warn if > 2%)
3. nevent_list_segments → pick target audience (get segment_id)
4. nevent_segment_preview → confirm audience count with user
5. nevent_list_templates → pick email template (get template_id)
6. nevent_get_template → inspect template content before sending
7. nevent_create_campaign → create DRAFT (no messages sent yet)
8. nevent_schedule_campaign → schedule delivery (confirmed=true required)
1. nevent_list_campaigns → find the campaign (filter by date/status)
2. nevent_get_campaign → get full metrics (opens, clicks, bounces)
3. nevent_get_campaign_insights → AI recommendations and anomaly detection
4. nevent_campaign_report → deep analytics with 13 parallel queries
All tool errors return a machine-readable code field for programmatic handling.
| Code | Type | Meaning | Recovery |
|---|---|---|---|
invalid_token | authentication_error | JWT missing, expired, or malformed | Re-authenticate; check NEVENT_JWT_TOKEN |
forbidden | authentication_error | Insufficient role (ADMIN / SUPERADMIN required) | Use an account with the required role |
not_found | not_found | Resource does not exist or belongs to another tenant | Verify the ID; check active tenant |
rate_limit_exceeded | rate_limit_error | Too many requests — param contains retry-after seconds | Wait and retry |
server_error | api_error | Upstream API 5xx — transient error | Retry after exponential backoff |
network_error | api_error | Could not reach upstream API (timeout or DNS failure) | Check connectivity; verify NEVENT_API_URL |
segment_not_found | not_found | Segment ID not found in active tenant | Verify ID with nevent_list_segments |
invalid_segment_definition | invalid_request | Segment DSL validation failed | Check criterion_ids against nevent_segmentation_criteria |
missing_update_fields | invalid_request | Update call with no fields to change | Provide at least one of name or definition |
tenant_required | invalid_request | Tool requires active tenant | Call nevent_switch_tenant first |
operation_mode_blocked | invalid_request | Write tool called in READ_ONLY mode | Set NEVENT_OPERATION_MODE=STANDARD or FULL |
feature_gate_not_enrolled | not_found | Tenant not enrolled in provider insights pilot | Contact admin to enable MODULE_ATTRIBUTION |
All errors follow a structured format:
{
"error": {
"type": "authentication_error | invalid_request | api_error | rate_limit_error | not_found",
"message": "Human-readable explanation with actionable guidance",
"code": "machine_readable_code",
"param": "offending_parameter (when applicable)"
}
}
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.