EventOps MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EventOps MCP Servercompare Raaz and Saazish"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EventOps: an MCP server + AI CLI for event operations
EventOps turns years of messy event ticketing exports into something an AI tool can actually reason about. It exposes MQIS event and membership data (Humanitix exports) to any Model Context Protocol client (Claude Desktop, Claude Code, Cursor) as a set of deterministic tools, and ships a small AI-enabled command line tool that writes ops reports and consent-aware emails on top of those same tools.
I built it to give my AI tools project-specific context instead of generic
answers. That is the whole idea: the AI can call get_event_metrics("Saazish")
and get the exact figure, rather than guessing.
Design principle: deterministic tools, AI for narrative
Every number comes from pandas, never from a language model. The MCP tools and
the CLI both call into one EventData object (data_loader.py) that does the
counting. The AI only decides which tool to call and how to phrase the result.
It cannot invent a revenue figure, because it never computes one. This is the
single most important property of the project.
Related MCP server: mcp-data-lens
What it does (real numbers from my own events)
Across 8 datasets: 3,690 orders, 4,690 valid tickets, ~2,770 unique people, and about A$61.4k in revenue to MQIS (net of platform fees; ~A$62.1k gross ticket sales). 238 people attended 2 or more distinct events, 69 of whom also held a membership.
Three money columns exist in the source data and they are not the same thing:
Ticket sales (gross face value), Paid (what the customer paid including
Humanitix fees), and Your earnings (what MQIS actually received). EventOps
reports Your earnings as "revenue to MQIS" so the headline number is honest.
Tools exposed over MCP (server.py)
Tool | What it returns |
| Every dataset with its key and label |
| Orders, tickets, net + gross revenue, paid/free/refunded split, online vs manual channel |
| Sales over time, plus % of tickets sold in the final 48h / 7 days |
| One person's full history across all files, by email or name |
| Cross-event regulars, and how many are members |
| A consent-aware contact list (opt-in = Yes only) |
| Totals across everything |
AI CLI (cli.py)
python cli.py summary
python cli.py report --event "Saazish"
python cli.py compare --e1 "Raaz" --e2 "Saazish"
python cli.py draft-email --type promo --target non-members --event "Gulaal"
python cli.py attendee --query "someone@example.com"Add --raw to any command to print the underlying JSON facts instead of the
AI-written version. This is a good way to prove the tools are exact: the AI
output only ever restates the --raw numbers.
The draft-email command only ever includes people whose Marketing opt-in is
Yes, so it will not draft to anyone who did not consent.
Setup
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 1. Sample data (safe, synthetic) so it runs out of the box:
python gen_sample_data.py
# 2. Or use real data: drop your Humanitix CSV exports into ./data/
# (that folder is git-ignored and never committed)
# 3. For the CLI, set your key:
cp .env.example .env # then edit, or just:
export ANTHROPIC_API_KEY=sk-ant-...If ./data is empty, EventOps automatically falls back to ./sample_data, so a
fresh clone works immediately.
Registering the MCP server with a client
Claude Desktop / Claude Code (claude_desktop_config.json):
{
"mcpServers": {
"eventops": {
"command": "python",
"args": ["/absolute/path/to/event-ops-mcp/server.py"]
}
}
}Cursor (.cursor/mcp.json): same shape. Restart the client, then ask it
things like "Using eventops, compare Raaz and Saazish" or "Who are our most loyal
attendees?" and it will call the tools.
Data privacy
Real exports contain personal information (names, emails, phone numbers). They
live in ./data/, which is git-ignored. Only the synthetic ./sample_data/ is
ever committed. Do not commit real attendee data.
Files
event-ops-mcp/
├── data/ # real Humanitix CSVs (git-ignored, you provide)
├── sample_data/ # synthetic CSVs, safe to commit
├── data_loader.py # cleaning + all deterministic analytics
├── server.py # FastMCP server exposing the tools
├── cli.py # AI-enabled CLI (Anthropic API)
├── gen_sample_data.py # builds the synthetic dataset
├── requirements.txt
├── .env.example
└── .gitignoreThis server cannot be deployed
Maintenance
Related MCP Connectors
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
- SendinelOAuthai.sendinel
AI-controlled email ops for campaigns, contacts, segments, analytics, and sending.
Run in-person events from your AI: create events, manage tickets, attendees, broadcasts.
SocialLoop: AI-native event platform — sell tickets, manage guests, run affiliates & promo codes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates with the Eventbrite API to provide AI-assisted event management capabilities for viewing events, tracking attendees, and generating analytics reports.53MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to ask questions about their spreadsheets in plain English and receive instant answers using DuckDB-powered analytics, supporting multiple file formats like Excel, CSV, and Parquet.2MIT

Presso MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceConnects e-commerce and marketing data sources like Shopify, GA4, Google Ads, and Meta Ads to AI assistants, enabling natural language queries about store performance, ad campaigns, and customer behavior.82MIT- FlicenseNot gradedqualityBmaintenanceEnables natural-language Q&A over customer support ticket data. Provides tools for schema inspection, SQL-based ticket counts and grouping, and full-text search for customer wording without requiring API keys.-