Skip to main content
Glama
TicketSource MCP server

TicketSource MCP server

by dragosh29

TicketSource MCP server

An MCP server that lets Claude, ChatGPT and other MCP clients work with a TicketSource box office: events, performance dates, bookings, seats and customers. It is built on TicketSource's public API and its published OpenAPI spec.

Once it's connected, an organiser can ask things like:

  • "What's on in the next two weeks?"

  • "Who's booked for tomorrow's Macbeth, and how much have we taken after fees?"

  • "Find Sam Evans. What else has she booked this year, and are there notes on her record?"

  • "List everyone in row C for Friday with their booking references."

Tools

Tool

What it does

API calls

list_events

Events with category, published and archived status. Archived events are hidden unless requested.

GET /events

get_event

One event with its venues and performance dates (upcoming only by default).

GET /events/{id}, /venues, /dates

list_upcoming_performances

Performances across active events in the next N days, soonest first.

GET /events, /events/{id}/dates

get_performance_bookings

Bookings for one performance, with gross, net, fees, refunds and donations per booking and in total. Optionally seats and attendee names.

GET /dates/{id}, /dates/{id}/bookings, /bookings/{id}/seats

get_booking

One booking with its totals and seats.

GET /bookings/{id}, /bookings/{id}/seats

find_customers

Search customers by name, email or phone (UK numbers match with 0 or +44).

GET /customers

get_customer

Contact details, membership, marketing consent, staff notes and recent bookings.

GET /customers/{id}, /notes, /bookings

add_customer_note

Adds a staff note. Only registered when writes are enabled.

POST /customers/{id}/notes

Related MCP server: Line-Up MCP server

Setup

Requires Node 18 or later.

npm install
npm run build

Create an API key in TicketSource under Settings > API.

Claude Desktop: add this to claude_desktop_config.json:

{
  "mcpServers": {
    "ticketsource": {
      "command": "node",
      "args": ["/absolute/path/to/ticketsource-mcp/dist/index.js"],
      "env": { "TICKETSOURCE_API_KEY": "skl-your-key" }
    }
  }
}

Claude Code:

claude mcp add ticketsource -e TICKETSOURCE_API_KEY=skl-your-key -- node /absolute/path/to/ticketsource-mcp/dist/index.js

Variable

Required

Meaning

TICKETSOURCE_API_KEY

yes

Your API key, sent as a Bearer token.

TICKETSOURCE_ALLOW_WRITES

no

true to enable add_customer_note. Off by default.

TICKETSOURCE_BASE_URL

no

Defaults to https://api.ticketsource.io. Used by the tests.

Safety defaults

  • Read-only unless TICKETSOURCE_ALLOW_WRITES=true. Read tools carry the MCP readOnlyHint annotation.

  • Attendee emails and phone numbers are only returned when the assistant explicitly asks for them (include_contact_details).

  • IDs are validated against the formats in your spec before any call is made.

  • Requests are spaced to stay under the 240 calls per minute limit, and 429 responses are retried using Retry-After.

  • A rejected API key produces a message that tells the user where to fix it.

Tests

npm test

The test suite:

  1. Validates every fixture record against the component schemas in TicketSource's published OpenAPI spec. The spec is downloaded from github.com/ticketsource/openapi-spec to spec.yaml on the first run.

  2. Starts a local mock of the API that serves those fixtures with JSON:API pagination, a 401 on a bad key, 404s, and a one-off 429.

  3. Starts the built server and drives it over stdio with the official MCP client: 15 checks covering every tool, pagination, refunds and donations in totals, the 429 retry, the write gate, contact-detail redaction, and that every request used the Bearer key and a documented endpoint.

Status

This is a working prototype. It has not yet been run against the live API, because it was built without a TicketSource account. Two things to confirm on a real account:

  • The body accepted by POST /customers/{id}/notes. The server sends {"data": {"type": "customer_note", "attributes": {"description": "..."}}} as documented.

  • The format of start on dates. It is parsed as ISO 8601; dates that can't be parsed are kept rather than dropped.

The API has no server-side customer search, so find_customers pages through the customer list (100 per call, 10 pages by default). On large accounts, a search parameter on GET /customers would make this much cheaper.

Going to production

This version runs locally over stdio, with the organiser's own API key. For organisers to connect from claude.ai or ChatGPT without handling keys, the next step is a remote server (Streamable HTTP) behind OAuth, hosted by TicketSource, and then a listing in the Claude and ChatGPT connector directories.

Licence

MIT. Built by Alexandru Dragoș (alexandru.dragos96@gmail.com) with an AI agent (Claude) working under his direction.

Available Tools

7 tools
find_customersFind customersA
Read-only

Search customers by part of their name, email or phone number. The API has no server-side search, so this pages through the customer list (100 per call) up to max_pages.

Inputs: query (required), max_pages, max_results.

get_bookingGet a bookingA
Read-only

One booking with its totals, seats and attendee names, plus the customer ID.

Inputs: booking_id (required), include_contact_details.

get_customerGet a customerB
Read-only

A customer's contact details, membership and marketing consent, with their staff notes and most recent bookings.

Inputs: customer_id (required), max_bookings.

get_eventGet event with venues and datesA
Read-only

Get one event with its venues and performance dates. By default only dates from today onwards are returned.

Inputs: event_id (required), upcoming_only.

get_performance_bookingsBookings for a performanceA
Read-only

Who is coming to one performance date: every booking with totals (gross, net, fees, refunds, donations) and an overall summary. Set include_attendees to also list seats and attendee names.

Inputs: date_id (required), max_bookings, include_attendees, include_contact_details.

list_eventsList eventsA
Read-only

List the events on this TicketSource account (name, category, published and archived status). Archived events are skipped unless asked for.

Inputs: limit, include_archived.

list_upcoming_performancesList upcoming performancesA
Read-only

What's on: performance dates across all active events in the next N days, soonest first, with the event name. Use the returned dat- id with get_performance_bookings.

Inputs: limit, days_ahead, include_cancelled.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action: events, performances, bookings, and customers are clearly separated. Even list_events and list_upcoming_performances differ in scope (all events vs. upcoming performance dates), eliminating ambiguity.

    Naming Consistency5/5

    All tools follow the consistent verb_noun pattern in snake_case (list_*, get_*, find_*). The naming is uniform and predictable, with no mixed conventions or vague verbs.

    Tool Count5/5

    Seven tools is well-scoped for a read-only ticketing information server. Each tool has a clear purpose and the count falls comfortably in the ideal 3-15 range.

    Completeness4/5

    The surface covers core retrieval workflows: events, performances, bookings, and customers. Minor gaps exist (e.g., no create/update operations, no direct booking-by-event search), but these align with a read-only information source and do not block typical usage.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    • Tiqets MCP server for ChatGPT, Claude and any AI agent: search tickets, check availability, book tickets, list my bookings, download e-tickets and cancel booking in your own Tiqets account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Tiqets yourself; Cotlet does not store your password and you need no Tiqets API key. About the official Tiqets API: Tiqets has an API only for distribution partners such as travel agencies, not for customers (checked 11 Oct 2026). It lists the orders a partner generated, so it cannot see the bookings or tickets of your own Tiqets account. Setup and FAQ: https://cotlet.dev/integrations/tiqets-api-mcp-server

      https://cotlet.dev/mcp/v1/tiqets
    • Skiddle MCP server for ChatGPT, Claude and any AI agent: add guests to the guestlist, refund orders, resend ticket receipts, close and reopen tickets, create discount codes, copy events and read ticket sales in your own Skiddle account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Skiddle yourself; Cotlet does not store your password and you need no Skiddle API key. About the official Skiddle API: Skiddle has a public events API, still in beta and for non-commercial use only, but no official MCP server (checked 31 Oct 2026). It lists events for apps and sites. Setup and FAQ: https://cotlet.dev/integrations/skiddle-api-mcp-server

      https://cotlet.dev/mcp/v1/skiddle
    • Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.

      https://mcp.contextflo.com/mcp
    • DICE MCP server for ChatGPT, Claude and any AI agent: create event, update ticket tier, get sales report, list ticket holders and issue comp tickets in your own DICE account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to DICE yourself; Cotlet does not store your password and you need no DICE API key. About the official DICE API: DICE has a read-only partner API, the Ticket Holders GraphQL API, with a token you generate in MIO (checked 11 Oct 2026). It reads events, tickets, orders, returns and transfers, and documents no mutations, so it cannot create events, change ticket types or message fans. Setup and FAQ: https://cotlet.dev/integrations/dice-api-mcp-server

      https://cotlet.dev/mcp/v1/dice

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables any MCP client to run natural-language queries and actions against CRM and ticket systems, with schema-validated tools, audit logging, and server-side write gating.
      7
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables MCP clients such as Claude and ChatGPT to read events, performances, seating, packages, visits, transactions, and organisation context from a ticketing channel, and, when writes are enabled, create and release reservations.
      10
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables Claude, ChatGPT and other MCP clients to read practice-management data including organization, clinicians, diaries, availability, bookings, patients, invoices, payments, staff tasks, services, and locations, and optionally create staff tasks, create bookings, and cancel bookings.
      15
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables Claude, ChatGPT and other MCP clients to search a membership database's people and organisations, read a contact's summary and membership history, list events with ticket types and attendance lists, read invoices, and find and count segments. When writes are enabled, it also lets clients record who attended an event.
      MIT