Nevent MCP
OfficialProvides tools for managing and analyzing Meta ad campaigns, including ROAS comparison, campaign scheduling, and performance metrics.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Nevent MCP
Talk to your live-events CRM (campaigns, analytics, paid ads, segments, short URLs) in Claude and ChatGPT.
Official MCP server for Nevent β the marketing platform for live event promoters. 63 tools across 10 groups (analytics, segmentation, campaigns, templates, deliverability, paid media, short URLs, media library, multi-tenant, and help/discovery) over OAuth 2.1 (hosted) or stdio (local).
π Full documentation: https://help.nevent.ai/en/nevent-ai/
Install
Hosted (recommended β no install needed)
Add https://mcp.nevent.ai/ as a remote MCP server in your client. Works with Claude.ai, ChatGPT, Cursor, Cline, Continue and any compatible MCP client.
β Step-by-step with screenshots: Connect with Claude Β· Connect with ChatGPT
Local (stdio via npm)
npx mcp-neventRequired env: NEVENT_JWT_TOKEN. Optional: NEVENT_OPERATION_MODE (READ_ONLY | STANDARD | FULL).
β Full local setup: Local installation
Related MCP server: campaign_chest
Quick add
Claude.ai Β· ChatGPT (hosted, no setup)
Settings β Integrations / Connectors β Add custom MCP β URL https://mcp.nevent.ai/. Authorize with your Nevent admin account.
Claude Code
# Hosted (OAuth)
claude mcp add --transport http nevent https://mcp.nevent.ai/
# Or local (stdio)
claude mcp add nevent -- node /path/to/mcp-nevent/dist/index.js
export NEVENT_JWT_TOKEN=your_tokenβ Full guide: Claude Code
Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"nevent": {
"command": "node",
"args": ["/path/to/mcp-nevent/dist/index.js"],
"env": {
"NEVENT_JWT_TOKEN": "your_nevent_jwt_token"
}
}
}
}β Full guide: Claude Desktop
Cursor Β· Cline Β· Continue Β· VS Code
β Per-client setup: Cursor, Cline, Continue, VS Code
What you can ask
"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 attendees who bought a VIP ticket in 2025
but haven't opened any email in the last 90 days"
"Schedule the 'Summer Gala' campaign for next Monday at 10:00 CET"
"Compare ROAS across our Meta ad campaigns for March"
"Create per-user tracking links for the Summer Gala campaign
and show me which users clicked"β More patterns: Ready-to-use prompts Β· Use cases
Documentation
Topic | Link |
What Nevent AI is and how it works | |
Capabilities by area (analytics, campaigns, audience, paid mediaβ¦) | |
End-to-end use cases | |
Permissions and security | https://help.nevent.ai/en/nevent-ai/permissions-and-security/ |
FAQ |
For developers
Topic | Link |
Overview, transports and architecture | |
Local installation and env vars | https://help.nevent.ai/en/nevent-ai/developers/local-installation/ |
Multi-tenant model | https://help.nevent.ai/en/nevent-ai/developers/multi-tenant/ |
Reference of all 63 tools | |
Troubleshooting and error codes | https://help.nevent.ai/en/nevent-ai/developers/troubleshooting/ |
How it works
LLM (Claude / ChatGPT / Cursor / β¦)
|
| MCP (Streamable HTTP or stdio)
v
βββββββββββββββββββ
β Nevent MCP β mcp.nevent.ai (hosted) or local
βββββββββββββββββββ
|
| REST + JWT
v
Nevent APIs (analytics, campaigns, segments, paid media, short URLs)Hosted mode uses OAuth 2.1: the MCP server issues short-lived JWT tokens after validating your Nevent credentials. Each session is isolated β no shared service accounts.
Restricting OAuth clients (self-hosted HTTP)
Optional environment variables for the HTTP server:
Variable | Default | Purpose |
| unset | Comma-separated |
| unset | Comma-separated |
|
|
|
|
| Maximum total lifetime of a refresh-token chain, counted from the original login. |
See CHANGELOG.md for the exact behaviour.
Advanced: bearer-passthrough mode (trusted clients, service key required)
MCP_AUTH_MODE=bearer-passthrough is a second HTTP auth mode for trusted
clients that already hold a per-user nev-api JWT and want to call
MCP tools on that user's behalf β for example nev-helpbot, the Chatwoot
support bot, answering as the promoter currently chatting.
MCP_AUTH_MODE=bearer-passthrough \
MCP_BEARER_PASSTHROUGH_SERVICE_KEY=$(openssl rand -hex 32) \
node dist/index.js --transport=http --port=3000Every request must carry BOTH the client's service key and the calling user's own nev-api JWT:
X-Nevent-Service-Key: <pre-shared service key>
Authorization: Bearer <the promoter's nev-api JWT>Service key (mandatory). The instance may be reachable from outside, so a JWT alone is not enough.
MCP_BEARER_PASSTHROUGH_SERVICE_KEY(at least 32 characters) is required: the server refuses to start without it. It is compared in constant time (crypto.timingSafeEqualover SHA-256 digests) and checked before the token is introspected, so outsiders cannot make this server call nev-api. A missing or wrong key gets a bare401(Unauthorized.) with no hint of which check failed. For rotation, setMCP_BEARER_PASSTHROUGH_SERVICE_KEY_PREVIOUSto the old key while the client moves to the new one, then remove it. Keep it in a secret store, never in the repository. Requests are also capped per IP (600/min, applied before body parsing) and per token (300/min).GET /healthis unauthenticated for load balancers and returns only{status, version, commitSha}.Write policy (off by default). By default every session is READ-only (46 tools).
MCP_BEARER_PASSTHROUGH_WRITES=humanadditionally exposes, to sessions of a person (principalTypeHUMAN verified in/auth/me), 12 write tools:nevent_create_segment,nevent_update_segment,nevent_create_template,nevent_update_template,nevent_clone_template,nevent_rename_template,nevent_send_test_template,nevent_create_campaign,nevent_schedule_campaign,nevent_create_short_url,nevent_update_short_url,nevent_create_bulk_user_short_urls.SERVICEsessions never get writes.upload_image,delete_image,reset_tenant,switch_tenantandlist_tenantsare never exposed, and an unclassified tool is denied. The policy is fixed per session atinitialize. Writes are not safe to enable yet: the real barrier is the signed single-use write grant (NEV-1855), so the server refuses to start withhumanuntil that exists (override for non-production only:MCP_BEARER_PASSTHROUGH_WRITES_UNSAFE_NO_GRANT=true). Each tenant+user is limited toMCP_BEARER_PASSTHROUGH_WRITES_PER_HOURwrites per hour (default 30; over it, awrite_rate_limit_exceededtool error and nothing is executed; READ is never limited). Every tool call is logged withuser_id,principal_typeand the verified tenant (no email or token). Calls also needNEVENT_OPERATION_MODE=STANDARDfor writes andFULLfornevent_schedule_campaign(classified DELETE because it sends for real); startup refuseshumanwithREAD_ONLY. The hourly limit is per process (in memory, each instance has its own budget, a restart resets it), counts only calls that actually execute (not invalid arguments, not calls the operation-mode guard rejects; a handler that fails does count) and accepts 1-1000. The no-grant override is rejected whenNODE_ENV=production.No OAuth flow, no
MCP_JWT_SECRET, noMONGODB_URIrequired.MONGODB_URIstays optional: set it to also enable the Mongo-backed read tools (campaigns/templates/deliverability), each still scoped by the caller's own JWT tenant.Every request is verified against nev-api before anything is exposed. On every request β
initialize,tools/list,tools/call, not only at session start β this server callsGET {NEVENT_API_URL}/auth/mewith the forwarded token. A200confirms the session is live and the request proceeds;401,403, a network error, or a timeout are all treated the same way β the MCP request is rejected with401and no tool, notools/list, and no session is ever created or advanced from it. There is no permissive fallback: if nev-api cannot be reached to confirm the token, the request is refused, it is never let through anyway.A successful check is cached briefly (~60 s) by a hash of the token so a single session does not call
/auth/meon every message, but the cache never serves an entry past the token's own expiry.The token's signature is still never checked locally by this server. nev-api signs session JWTs with a symmetric secret (HMAC256); shipping that secret here so it could be verified offline would mean compromising this process could forge a session for any Nevent user, not just read their data. Introspecting against nev-api avoids that trade-off entirely and is the only mechanism this mode uses to confirm a token is real, live, and unexpired. nev-data-api and nev-api additionally validate the token themselves on every downstream call they receive, exactly as they do for
stdiomode's sharedNEVENT_JWT_TOKEN.
Human and service sessions.
GET /auth/mealso reportsprincipalType(HUMANorSERVICE),effectiveTenantIdandserviceSession. Technical service sessions minted byPOST /auth/service-token(unattended agents) are accepted like a human token only withTENANTscope (PLATFORM, i.e. global SUPERADMIN, is refused). The session is locked toeffectiveTenantId, which comes only from this answer (never from the JWT payload; also correct for hierarchical admins navigating a child tenant). Fail-closed: an unknownprincipalType, aSERVICEresponse withouteffectiveTenantId, or any response with no tenant at all is refused. ASERVICEverification is cached for 10 s instead of 60 s so a disabled account or revoked session stops working almost immediately.Verification cache. Positive verdicts are cached (max 1000 entries, LRU, expired ones purged first); a token nev-api explicitly rejected (
401/403) is remembered for ~5 s so a bad token cannot turn into one/auth/mecall per request. When nev-api itself is unavailable (5xx, timeout, network) the request is still refused, but with503instead of401, and that outcome is never cached.Read-only, tenant-locked. Only READ tools are exposed β the same set as an OAuth read-only client, including
nevent_segment_executeβ minus the tenant-switching tools (nevent_list_tenants/nevent_switch_tenant/nevent_reset_tenant): a bearer-passthrough caller always operates in the tenant its own JWT carries. Excluded and write/delete tools never appear intools/list.Sessions are bound to their principal. Each
Mcp-Session-Idremembers the user id, principal type and effective tenant it was opened for. Every later request (POST,GET,DELETE) must carry a token that nev-api confirms for that same principal and tenant, otherwise it is refused with403and nothing is dispatched β a valid token of someone else cannot drive a session it learned the id of. When the same principal presents a different valid token (a refreshed human token, or a service session re-minted after its 30 min expiry) the session's clients switch to the new token instead of keeping the one frominitialize.Session isolation. Every MCP session gets its own client instances, built fresh from that session's own JWT β two sessions started with different tokens never share a client or cached data.
Reachable from outside, authenticated twice. There is no login page and no client registration. Caller identity is the pre-shared service key (which client) plus the forwarded JWT (which end user), both required on every request. Still prefer a restrictive firewall/security group in front of it, leave
MCP_ALLOWED_ORIGINSunset (the caller is a server, not a browser, so CORS is off and noAccess-Control-Allow-Originis emitted; set it only to a short explicit list if a browser client ever needs it), and never point the public OAuth hostname (mcp.nevent.ai) at a process started in this mode. Do not log or commit the service key.
Full design rationale: src/transports/http-bearer-passthrough.ts and
src/auth/session-verifier.ts.
Privacy
The Nevent MCP server processes tenant data on Nevent's own infrastructure (AWS, eu-west-1). Data does not leave Nevent's infrastructure and is not used for model training.
For details on data collection, retention, third-party sharing, and contact information, see the full privacy policy: https://nevent.ai/en/privacy/
Security disclosure: see SECURITY.md.
Contributing
See CONTRIBUTING.md, CODE_OF_CONDUCT.md and SECURITY.md.
License
MIT Β© Nevent
Support
Help Center: https://help.nevent.ai
Email: support@nevent.ai
Product: https://nevent.ai/en
This server cannot be deployed
Maintenance
Related MCP Connectors
Conversational access to advertising performance data, creative analysis, and campaign insights
Conversational access to advertising performance data, creative analysis, and campaign insights
Manage and optimize your ads on Meta, Google, TikTok, X, ChatGPT Ads, Reddit and LinkedIn from chat.
Build and run agents and automations across hundreds of apps using natural language.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with Iterable marketing platform data, allowing users to query campaigns, templates, and perform actions via AI assistants.2,632 npm15MIT- FlicenseNot gradedqualityDmaintenanceProvides 35 MCP tools for automated marketing campaigns, integrating event management, booking, and email marketing into a deterministic pipeline for AI agents.-
- AlicenseNot gradedqualityDmaintenanceEnables management and analysis of Meta (Facebook/Instagram) ads through natural language conversations, with 30 tools for reading and writing ad data.MIT
- AlicenseNot gradedqualityCmaintenanceEnables management of Cvent events, registrations, attendees, sessions, contacts, surveys, reports, custom objects, and webhooks via natural language through the Cvent REST API.MIT