Nevent MCP
개요
제작자가 쓴 설명(영어 원문)
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
PopNx MCP의 세 기둥
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
- 사용자 의견i아직 리뷰가 없어요리뷰는 다음 단계에서 계정 기능과 함께 열려요
- 우리의 기본 점검i3개 중 3개 통과공개된 정보로 점검했으며, 코드는 아직 스캔하지 않았어요
- 사용 정도i아주 새로움↓ 69/주 · ★ –
할 수 있는 일
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
- 연결 방식: 컴퓨터 또는 클라우드
- 전송 방식: stdio, Streamable HTTP
- 카테고리: 마케팅 및 소셜 미디어
- 입력해야 할 값: NEVENT_JWT_TOKEN
설치
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
설치하기 전에
- 기본 점검: 3개 중 3개 통과
- 제작자의 서버에서 실행돼요. 내가 요청한 내용은 제작자의 서버를 거쳐요.
- 할 수 있는 일 60가지(도구) nevent_analytics_query, nevent_analytics_capabilities, nevent_analytics_table_schema, nevent_analytics_filter_values …
- 직접 입력할 값:
NEVENT_JWT_TOKEN,NEVENT_OPERATION_MODE
비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
- Settings → Connectors 열기
- Add custom connector 누르기
- 아래 주소를 붙여 넣고 Add 누르기
- 로그인하라고 하면 제작자의 서비스에 로그인하기
https://mcp.nevent.ai/또는 내 컴퓨터에서 실행하기
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"nevent": {
"command": "npx",
"args": [
"-y",
"mcp-nevent"
],
"env": {
"NEVENT_JWT_TOKEN": "your-value",
"NEVENT_OPERATION_MODE": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add --transport http nevent https://mcp.nevent.ai/또는 내 컴퓨터에서 실행하기
claude mcp add nevent --env NEVENT_JWT_TOKEN=your-value --env NEVENT_OPERATION_MODE=your-value -- npx -y mcp-nevent실행하기 전에 빈 값을 채워 주세요.
또는 설정을 직접 복사하기
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"nevent": {
"url": "https://mcp.nevent.ai/"
}
}
}또는 내 컴퓨터에서 실행하기
또는 설정을 직접 복사하기
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"nevent": {
"command": "npx",
"args": [
"-y",
"mcp-nevent"
],
"env": {
"NEVENT_JWT_TOKEN": "your-value",
"NEVENT_OPERATION_MODE": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
또는 설정을 직접 복사하기
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"nevent": {
"type": "http",
"url": "https://mcp.nevent.ai/"
}
}
}또는 내 컴퓨터에서 실행하기
또는 설정을 직접 복사하기
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"nevent": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-nevent"
],
"env": {
"NEVENT_JWT_TOKEN": "your-value",
"NEVENT_OPERATION_MODE": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
- 웹에서 ChatGPT 열기 → Settings → Connectors (Apps)
- Create 또는 Add 누르기(일부 요금제는 먼저 Advanced에서 Developer mode를 켜야 해요)
- 아래 주소를 붙여 넣고 이름을 정한 뒤 저장하기
- 로그인하라고 하면 제작자의 서비스에 로그인하기
https://mcp.nevent.ai/메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
직접 입력할 값
- Nevent JWT access token for authenticating with the Nevent API
NEVENT_OPERATION_MODEenvTool operation mode: READ_ONLY (default), STANDARD, or FULL
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
할 수 있는 일
도구 이름과 설명은 서버가 2026년 11월 10일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.
nevent_analytics_queryQuery event marketing analytics. Supports dimensions, metrics, time ranges, and filters across campaigns, purchases, fans (user_tenants), and more. MANDATORY RULES: (1) ALWAYS call nevent_analytics_table_schema BEFORE querying to discover exact field names. NEVER guess field name
nevent_analytics_capabilitiesDiscover available analytics tables and their summary metadata. Call this before nevent_analytics_query, then use nevent_analytics_table_schema to learn valid field names for a selected table.
nevent_analytics_table_schemaGet the full column schema for a specific analytics table including column names, types, and descriptions.
nevent_analytics_filter_valuesGet distinct values available for a field in an analytics table. Useful for building valid filter values before querying.
nevent_campaign_reportGenerate the monthly campaign report of the current brand for a calendar month (year + month). Executes 13 parallel queries in one call: marketing campaign metrics for that month and the previous one, ROI and attribution, revenue, variable costs, 24-month purchase history, transa
nevent_segmentation_criteriaList all available audience segmentation criteria including their IDs, operators, and value types.
nevent_segment_previewPreview estimated audience size for a segment definition without saving it. Returns fan count and sample contacts. SEMANTICS: criteria in the same stanza are OR-combined — a fan matches the stanza if ANY criterion matches. Stanzas are AND-combined — a fan must match EVERY stanza.
nevent_segment_executeExecute a segment definition and retrieve matching contacts with pagination. SEMANTICS: criteria in the same stanza are OR-combined — a fan matches the stanza if ANY criterion matches. Stanzas are AND-combined — a fan must match EVERY stanza. To require A AND B, put them in separ
nevent_dimension_valuesAutocomplete values for a segmentation criterion. Useful for discovering valid values when building segment definitions.
nevent_helpGet guidance when you are unsure which tool to call or how to handle an error. Returns structured markdown for the requested topic. Call with topic="workflows" for common patterns, topic="errors" for error code meanings, topic="tenants" for multi-tenant guidance, or topic= like "
nevent_list_tenantsList all Nevent tenants (clients) accessible to the authenticated user. Returns tenant IDs and names for use with nevent_switch_tenant. SUPERADMIN: returns all tenants in the platform. OWNER/ADMIN: returns only your tenant hierarchy subtree (up to 3 levels).
nevent_switch_tenantSwitch the active tenant for this session. All subsequent queries (analytics, segments, campaigns, paid media) will use the specified tenant's data. SUPERADMIN: this mutates your user record in the database — the switch PERSISTS. Always call nevent_reset_tenant when cross-tenant
nevent_reset_tenantRestore the original tenant context set at session start. ALWAYS call this after cross-tenant queries (nevent_switch_tenant) to avoid leaving your SUPERADMIN account pointing to another tenant. For SUPERADMIN users, tenant switches PERSIST in the user record in the database — thi
nevent_get_regional_settingsGet the regional settings of the organization you are working in: reporting currency, time zone, operating country and communication language, each with where it comes from (own, inherited, market or platform default). Use them to show amounts and dates the way the organization w
nevent_list_segmentsCall this FIRST when you need to build or target an audience. Returns all saved segments for the active tenant: id, name, estimated contact count, and last-execution date. Use the returned segment ids to call nevent_get_segment (for the filter definition), nevent_segment_preview
nevent_get_segmentRetrieve the complete filter definition of a specific segment (criteria stanzas, operators, values) along with its estimated contact count and metadata. Call this after nevent_list_segments when you need to inspect, clone, or explain a segment's logic. Next step: nevent_segment_p
nevent_create_segmentCreate and persist a new audience segment from a filter definition. SEMANTICS: criteria in the same stanza are OR-combined — a fan matches the stanza if ANY criterion matches. Stanzas are AND-combined — a fan must match EVERY stanza. To require A AND B, put them in separate stanz
nevent_update_segmentModify an existing segment's name and/or filter definition. Call this after nevent_get_segment to inspect the current definition before changing it. At least one of name or definition must be provided. After update, call nevent_segment_preview to confirm the new audience count be
nevent_create_campaignCreate a new campaign draft (email, SMS, WhatsApp, push, or multi-channel). PREREQUISITES: call nevent_list_segments to get the target segment_id, and nevent_list_templates to get the template_id. The campaign is always created in DRAFT status — no messages are sent. After creati
nevent_schedule_campaignSchedule an existing DRAFT campaign for delivery at a specific ISO-8601 datetime. IMPORTANT: this is a DESTRUCTIVE action — the campaign will be queued for sending to real contacts. You MUST set confirmed=true in the call, which requires explicit user consent. Call nevent_get_cam
nevent_quote_campaignEstimate the credit cost and eligible audience of a campaign BEFORE sending it. Read-only pre-flight check against nev-api POST /campaigns/quote — it never debits credits and never sends. Call this after nevent_create_campaign and before nevent_schedule_campaign: scheduling a cam
nevent_get_campaign_metricsGet the delivery and engagement counters nev-api holds for one campaign: totalRecipients, totalSent, totalDelivered, totalBounces, totalComplaints, totalOpens, uniqueOpens, totalClicks, uniqueClicks, unsubscribes, the derived rates (openRate, clickRate, clickToOpenRate, bounceRat
nevent_list_campaign_recipientsList the individual recipients of a campaign and what happened to each message. Use this to put names behind the aggregate numbers from nevent_get_campaign_metrics: who bounced, who clicked, who unsubscribed. Filter with status (SCHEDULED, DELIVERED, OPENED, CLICKED, BOUNCES, UNS
nevent_list_eventsList the events of the active tenant, one page at a time (nev-api GET /events). Use it to find an event ID before reading its sales with nevent_event_sales_provenance, or to look an event up by name. By default it returns upcoming events ordered by start date; pass future=false f
nevent_event_sales_provenanceWhere the ticket sales of ONE event come from (nev-data-api, analytics warehouse). Pick the event with nevent_list_events (TICKETED events), then choose a view. summary (default): sales grouped by dimension — provider, distribution channel, purchase channel, promo code or marketi
nevent_get_campaign_deliverabilityEmail deliverability of ONE campaign (nev-api, the "Entregabilidad" tab of the campaign). view=summary (default): sent, delivered, soft bounces, hard bounces and complaints, plus a warning when something is off. view=bounce_reasons: why messages bounced, grouped by SES bounce sub
nevent_get_campaign_unsubscribesUnsubscribes and spam complaints of ONE campaign (nev-api). view=summary (default): number of unsubscribes, unsubscribe rate, spam complaints and complaint rate. view=reasons: the reasons people gave when unsubscribing, grouped into canonical buckets. view=segment_breakdown: unsu
nevent_list_campaignsCall this to discover existing campaigns before reporting on performance or scheduling new sends. Returns campaigns for the active tenant with status, channel, send date, and top-level engagement metrics (sent, open rate, click rate). Filter by status (DRAFT/SCHEDULED/SENT/FAILED
nevent_get_campaignRetrieve the complete record of a campaign: email subject and body HTML, sending profile, all delivery and engagement metrics (sent, delivered, opens, clicks, unsubscribes, bounces), and tracked links with click counts. Call this after nevent_list_campaigns to drill into a specif
nevent_get_campaign_insightsGet pre-computed AI analysis for a specific campaign: performance summary, detected anomalies (e.g. unusually high bounce rate), and improvement recommendations. Call this after nevent_get_campaign when the user asks "how did this campaign perform?" or "what could be improved?".
nevent_list_templatesCall this to discover available email templates before creating a campaign. Returns templates for the active tenant: id, name, tags, and whether they use MJML or HTML. Use the returned template id in nevent_create_campaign. Call nevent_get_template to inspect the full HTML/MJML s
nevent_get_templateRetrieve the full content of an email template: MJML source, rendered HTML, tags, and usage metrics (how many campaigns used this template). Call this after nevent_list_templates when the user wants to inspect, copy, or modify a template. Next step: nevent_update_template to chan
nevent_create_templateCreate and persist a new email template with MJML or raw HTML content. Prefer MJML for responsive email (set format="MJML"). The template is saved and available for reuse across campaigns. After creation, call nevent_create_campaign with the returned template id to send it to a s
nevent_update_templateUpdate an existing email template: change the name, MJML/HTML content, or tags. Call nevent_get_template first to inspect the current version before modifying. At least one of name, content, or tags must be provided. Note: updating a template does NOT retroactively change campaig
nevent_clone_templateClone an existing email template to create a duplicate as a starting point for a new campaign. Use after nevent_list_templates to pick a template to duplicate. Returns the new cloned template (id, name with "(Copy)" suffix, format, tags). Typically follow with nevent_rename_templ
nevent_rename_templateRename an email template without modifying its content (lightweight — no re-render triggered). Use after nevent_clone_template to give the clone a proper name, or to reorganize existing templates. Returns the updated template with the new name. Next step: nevent_update_template t
nevent_preview_templatePreview a template with merge tags resolved against a sample user's profile. Returns originalBody (raw {{tags}}) and personalizedBody (tags replaced with user data), plus detectedMergeTags (all unique tags found). Always call before nevent_send_test_template to validate rendering
nevent_send_test_templateSend a test email of the template to one or more email addresses via SES. Use after nevent_preview_template validates rendering. Test emails carry test indicators in headers and are sent via AWS SES. This call may take up to 60 seconds due to SES delivery. Returns success status,
nevent_get_sending_profileCall this before creating a campaign to verify the tenant is ready to send email. Returns: sender domain(s) and their validation status, warm-up phase (cold/warming/warmed), daily send rate cap, throttle settings, and senders: the senders an email campaign can be sent with (ident
nevent_get_suppressions_summaryGet a deliverability health snapshot for the active tenant: total suppressed emails (hard bounces + complaints + manual unsubscribes), 30-day trend, and breakdown by suppression reason. Call this when the user asks about list health, unsubscribe rates, or bounce issues. A suppres
nevent_paid_ads_statusCheck if a paid ads provider account (meta, google, or tiktok) is connected to this tenant and when data was last synced. Call this first before any ads queries to confirm the integration is active. Returns: connected (bool), accountId, accountName, lastSyncAt.
nevent_paid_ads_healthGet operational health signals for a paid ads provider. Always call this before claiming "no data" to the user — it surfaces throttle state, feature gate enrollment, stale syncs, and tier. Key fields: throttle.isThrottled (API throttled), throttle.nextAttemptAt (next retry), feat
nevent_list_paid_campaignsList all paid campaigns synced from a provider (meta, google, or tiktok). Call this to discover campaignId values — you need a campaignId to call insights or ad group tools. Returns campaign IDs, names, statuses, objectives, and budgets. Use the returned campaignId values with ne
nevent_get_paid_campaign_insightsGet daily performance metrics for a specific paid campaign. Use after nevent_list_paid_campaigns to get a valid campaignId. Date range defaults to the last 7 days when from/to are omitted. Returns daily rows with: spend, impressions, reach, frequency, clicks, CTR, CPM, CPC, ROAS,
nevent_paid_attributionGet the most business-focused view of paid ads: links campaigns to actual ticket sales and revenue via UTM matching. Returns per-campaign: ticketsSold, revenue, budget, utmCampaigns (matched UTM values), status. Use this when the user asks about ROI, conversion, or revenue from p
nevent_list_paid_ad_groupsList ad groups (ad sets) for a paid ads provider, optionally filtered by campaign. Use after nevent_list_paid_campaigns to drill down into a campaign's ad sets. Returns ad group IDs, names, statuses, and lastSyncedAt. Use the returned adGroupId values with the ad group insights,
nevent_get_paid_ad_group_insightsGet daily performance metrics for a specific ad group (ad set). Use after nevent_list_paid_ad_groups to get a valid adGroupId. Date range defaults to the last 7 days when from/to are omitted. Returns daily rows with: spend, impressions, reach, frequency, clicks, CTR, CPM, CPC, RO
nevent_get_paid_ad_group_comparative_statsCompare an ad group's performance metrics against the mean of its campaign sibling ad groups. Use to detect underperforming ad sets — each metric (costPerResult, CPM, frequency, CTR) is returned with its campaign sibling mean and ratioVsMean (1.0 = on par). For cost metrics (cost
nevent_get_paid_ad_group_targetingGet the full audience targeting configuration for an ad group. Use after nevent_list_paid_ad_groups to get a valid adGroupId. Returns: ageRange, genders, geoSummary (countries/cities/regions), topInterests, topBehaviors, placements, Advantage+ flags (automaticPlacements, expandAg
nevent_list_paid_adsList individual ads for a paid ads provider, optionally filtered by campaign and/or ad group. Use after nevent_list_paid_campaigns or nevent_list_paid_ad_groups to drill down to ad level. Returns ad IDs, names, statuses, UTM fields (utmSource, utmMedium, utmCampaign, utmContainsM
nevent_get_paid_ad_creativeGet the creative content of a specific ad: copy (body, title, description, CTA), click URL, UTM params, and pre-signed S3 image/video URLs (TTL ~1 hour). Use after nevent_list_paid_ads to get a valid adId. Null imageUrl/videoUrl means the asset mirror job has not run yet — retry
nevent_list_short_urlsList all short URLs for the current tenant with their tracking metrics (click count, last clicked). Use to discover existing campaign links or to audit active tracking URLs. Returns items (array of ShortUrlDTO), total, page, pageSize, totalPages. Key fields per item: id (use with
nevent_get_short_urlGet complete details of a specific short URL including target URL, metadata, creation date, expiration, tags, and current click count. Use after nevent_list_short_urls to get the `id`. Key fields returned: id, shortCode, shortUrl, longUrl, title, tags, metadata, clickCount, lastC
nevent_get_short_url_metricsGet aggregated click analytics for a specific short URL over a time window (default 30 days). Use after nevent_list_short_urls to get the `id`. Returns: totalClicks, uniqueVisitors, firstClickAt, lastClickAt, clicksByDay (date → count), clicksByCountry, clicksByDevice (mobile/des
nevent_get_short_url_campaign_metricsGet aggregated click metrics across a parent short URL and all its per-user variants. Use when a marketing campaign was sent with per-user tracking links (created via nevent_create_bulk_user_short_urls) to see total reach and CTR. Requires the `parentShortCode` from nevent_list_s
nevent_get_short_url_clicksGet individual click event records for a specific short URL, ordered by most recent first. Use after nevent_list_short_urls to get the `id`. Each click record includes: clickedAt, ipAddress, userAgent, referer, country, city, device, browser, os, utmSource, utmCampaign, fbclid, g
nevent_list_short_url_user_linksList all per-user short URL variants created under a parent (campaign) short URL. Use after nevent_create_bulk_user_short_urls to inspect the generated links, or to audit which users have a tracking link for a campaign. Requires the `parentShortCode` from nevent_list_short_urls (
nevent_create_short_urlCreate a new short URL that redirects to the specified destination. Persists immediately — the short code is active as soon as the call returns. Requires at minimum a valid longUrl. All other fields are optional. Returns the created ShortUrlDTO with: id, shortCode, shortUrl (full
nevent_update_short_urlUpdate an existing short URL's configuration. Only provided fields are changed — omitted fields remain unchanged. Changes apply immediately. Use after nevent_list_short_urls to get the `id`. Supported updates: title, expiresAt (pass null to remove expiration), isActive (true/fals
nevent_create_bulk_user_short_urlsGenerate per-user short URL variants for an existing parent short URL. Each user receives their own unique short link that resolves to the same destination as the parent, but identifies the user on click — used for fan-level click attribution in email/SMS campaigns. The parent sh
기본 점검i
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 10일 점검
- ✓ 통과
제작자와 저장소 일치
레지스트리 이름이 GitHub 계정 nevent-dev 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
- … 아직 점검 안 함
계속 관리되고 있음
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
- … 아직 점검 안 함
라이선스 있음
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
- ✓ 통과
엔드포인트 응답
132ms 만에 응답(HTTP 200)
- – 해당 없음
OAuth로 로그인
로그인 필요 없음
- ✓ 통과
도구 설명에 숨겨진 지시 없음
도구 설명 60개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요
마케팅 및 소셜 미디어 카테고리의 다른 서버와 비교i
- 이 카테고리의 다른 서버 3708개 중 0%보다 스타가 많아요
- 이 카테고리의 다른 서버 3708개 중 26%보다 최근에 레지스트리에 공개됐어요
- 기본 점검 결과가 이 카테고리의 다른 서버 3708개 중 100%와 같거나 더 좋아요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
자주 묻는 질문
Nevent MCP, 안전한가요?
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
어떤 키나 코드가 필요한가요?
입력해야 할 값: NEVENT_JWT_TOKEN
내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?
둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.
아직 관리되고 있나요?
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.8.0)은 3개월 전 레지스트리에 올라왔어요.
어떤 앱에서 쓸 수 있나요?
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
대신 쓸 수 있는 건 뭐가 있나요?
같은 카테고리에는: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
대안
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Google Analytics MCP
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
BibiGPT YouTube Video Summarizer
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
제작자의 README
README 열기
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
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/](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-nevent
Required env: NEVENT_JWT_TOKEN. Optional: NEVENT_OPERATION_MODE (READ_ONLY | STANDARD | FULL).
→ Full local setup: Local installation
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 | https://help.nevent.ai/en/nevent-ai/ |
| Capabilities by area (analytics, campaigns, audience, paid media…) | https://help.nevent.ai/en/nevent-ai/what-you-can-do/ |
| End-to-end use cases | https://help.nevent.ai/en/nevent-ai/use-cases/ |
| Permissions and security | https://help.nevent.ai/en/nevent-ai/permissions-and-security/ |
| FAQ | https://help.nevent.ai/en/nevent-ai/faq/ |
For developers
| Topic | Link |
|---|---|
| Overview, transports and architecture | https://help.nevent.ai/en/nevent-ai/developers/ |
| 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 | https://help.nevent.ai/en/nevent-ai/developers/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 |
|---|---|---|
MCP_READONLY_REDIRECT_PREFIXES | unset | Comma-separated redirect_uri prefixes. A client that registered a matching redirect URI only gets read-only tools. Every prefix must end with `/`, for example https://support.nevent.ai/helpbot/. |
MCP_READONLY_CLIENT_IDS | unset | Comma-separated client_id values restricted the same way. |
MCP_REFRESH_REVALIDATE | restricted | restricted, all or off: which clients are revalidated against nev-api (GET /auth/me) when they refresh a token. |
MCP_REFRESH_MAX_LIFETIME_DAYS | 90 | 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=3000
Every 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
- 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 (47 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`, no `MONGODB_URI` required.
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, no `tools/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 with `TENANT` scope (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
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요