使用说明
🎬🎻 CineConcerts MCP Server
Real-time film-concert events, piped straight into your AI.
Ask Claude, ChatGPT, Cursor, or any MCP client where Harry Potter, The Godfather, or Gladiator are playing live with a full symphony orchestra — and get back real shows, real dates, real ticket links.
https://cineconcerts.digital/mcp/
No API key. No signup. No config file required. Just connect and start asking.
Both …/mcp and …/mcp/ work, with or without the trailing slash. The server answers plain JSON or SSE depending on what your client asks for, so no special Accept or Content-Type handling is needed on your side.
⚡ Connect in 30 seconds
If you use Claude Code, that's one command:
claude mcp add --transport http cineconcerts https://cineconcerts.digital/mcp/
Then just ask:
"What Harry Potter concerts are coming up near London?"
Using a different client? Jump to Setup below — every major one is covered.
🎥 See it in action
You ask:
Find Harry Potter concerts
Claude calls search_shows("Harry Potter") and gets back:
Found 20 show(s) matching "Harry Potter":
**Harry Potter and the Prisoner of Azkaban™ In Concert**
Date: 03/06/2026 to 03/07/2026
Location: Popejoy Hall, Albuquerque, New Mexico, United States
Show Code: HP3
Poster: https://cineconcerts.com/posters/hp3.jpg
Tickets: https://tickets.example.com/hp3
---
**Harry Potter and the Goblet of Fire™ In Concert**
Date: 04/18/2026
Location: Benaroya Hall, Seattle, Washington, United States
Show Code: HP4
Tickets: https://tickets.example.com/hp4
...
Your assistant turns that into a clean, conversational answer — with live links to buy tickets. No copy-pasting from a website, no out-of-date scraping.
📋 Table of contents
- Why use it
- Setup — Claude Code · Codex · Claude Desktop · ChatGPT · Cursor · VS Code · Windsurf · Cline · Continue
- Tools
- What you get back
- Rate limits
- Troubleshooting
- How it works
- Events catalog
- FAQ
- About CineConcerts
- License
💡 Why use it
| 🔴 Live data | Pulls from the same event database that powers cineconcerts.com, the mobile app, and the interactive concert map. Always current. |
| 🌍 Search how humans think | By film, by city, by venue, or "anything near me." Natural-language geocoding handles the rest. |
| 🔓 Zero friction | No key, no auth, no account. Add one URL and go. |
| 🧰 Works everywhere | One server, every MCP client — Claude, ChatGPT, Cursor, VS Code, and more. |
| 🪶 Read-only & safe | Every tool is read-only. Nothing it touches can change your data or the catalog. |
🔌 Setup
One URL, every client:
https://cineconcerts.digital/mcp/
Claude Code
Add it to the current project:
claude mcp add --transport http cineconcerts https://cineconcerts.digital/mcp/
Make it available across all your projects:
claude mcp add --transport http --scope user cineconcerts https://cineconcerts.digital/mcp/
Share it with your team — commit a .mcp.json to the project root:
{
"mcpServers": {
"cineconcerts": {
"type": "http",
"url": "https://cineconcerts.digital/mcp/"
}
}
}
Verify with claude mcp list, or type /mcp inside Claude Code.
Codex CLI
codex mcp add cineconcerts --url https://cineconcerts.digital/mcp/
Or edit ~/.codex/config.toml directly:
[mcp_servers.cineconcerts]
url = "https://cineconcerts.digital/mcp/"
Verify with codex mcp list.
On older Codex builds, URL-based servers are ignored unless the RMCP client is enabled. If
codex mcp listdoesn't show it, upgrade Codex or addexperimental_use_rmcp_client = trueat the top level of~/.codex/config.toml.
Claude Desktop
- Open Settings (gear icon) → Connectors
- Click Add custom connector
- Paste the URL:
https://cineconcerts.digital/mcp/ - Click Add
Requires a Pro, Max, Team, or Enterprise plan.
ChatGPT
- Settings → Apps & Connectors → Advanced settings → toggle Developer Mode on
- Settings → Connectors → Create
- Enter:
- Name:
CineConcerts - URL:
https://cineconcerts.digital/mcp/
- Name:
- Click Create
- In any chat: + → More → select CineConcerts
Requires a Pro, Team, Enterprise, or Edu plan.
Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"cineconcerts": {
"url": "https://cineconcerts.digital/mcp/"
}
}
}
Or open Cursor Settings (Cmd+,) and search MCP to add it via the UI.
VS Code + GitHub Copilot
Requires VS Code 1.99+ with the GitHub Copilot extension. Add to .vscode/mcp.json:
{
"servers": {
"cineconcerts": {
"type": "http",
"url": "https://cineconcerts.digital/mcp/"
}
}
}
⚠️ VS Code uses
"servers"as the top-level key (not"mcpServers"). Tools show up in Copilot's Agent mode.
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cineconcerts": {
"serverUrl": "https://cineconcerts.digital/mcp/"
}
}
}
⚠️ Windsurf uses
"serverUrl"(not"url").
Cline
Open Cline's MCP panel → Remote Servers → Edit Configuration:
{
"mcpServers": {
"cineconcerts": {
"type": "streamableHttp",
"url": "https://cineconcerts.digital/mcp/",
"disabled": false
}
}
}
⚠️ Cline needs
"type": "streamableHttp"— camelCase, no hyphen. Leave it out and Cline falls back to the legacy SSE transport, which this server does not speak.
Continue
Add to .continue/config.yaml:
mcpServers:
- name: cineconcerts
type: streamable-http
url: https://cineconcerts.digital/mcp/
Tools are available in Continue's Agent mode.
🛠 Tools
Five read-only tools. Your AI picks the right one automatically from your question.
| Tool | What it does | Parameters |
|---|---|---|
🔍 search_shows |
Search by keyword — film title, city, venue, anything | query (string, required) |
📍 find_nearby_shows |
Find shows near a place — city, address, or landmark | location (string, required), radius_km (number, default 500) |
📅 list_upcoming_shows |
Browse everything coming up | limit (number, default 20, max 60) |
🎟 get_show_details |
Full details for one show by its code | show_code (string, required) |
🖼 render_upcoming_shows_widget |
Render already-fetched shows as a visual widget | shows (array, required), title (string), source (string) |
Example prompts
🔍 "Find Harry Potter concerts"
🔍 "Any shows in Prague?"
🔍 "Gladiator in concert"
📍 "Shows near New York"
📍 "Concerts within 200km of London"
📍 "Anything near Tokyo Tower?"
📅 "What CineConcerts shows are coming up?"
📅 "List the next 10 events"
🎟 "Get details for show HP3"
🎟 "Tell me about HP8"
render_upcoming_shows_widget
Renders the shows you just fetched as a visual card list, for clients that support MCP UI resources (such as the ChatGPT Apps SDK).
🖼 "Render the search results as a widget"
🖼 "Show these nearby events in UI"
It deliberately does not fetch anything itself — data and presentation stay separate. Two steps:
- Call a data tool (
search_shows,find_nearby_shows, orlist_upcoming_shows). - Pass that tool's
structuredContent.showsstraight intorender_upcoming_shows_widget.
All four data tools now return structuredContent alongside their text, so the
hand-off needs no reshaping.
📦 What you get back
Every event comes back with:
| Field | Example |
|---|---|
| Title | Harry Potter and the Prisoner of Azkaban™ In Concert |
| Date | 03/06/2026 to 03/07/2026 |
| Location | Popejoy Hall, Albuquerque, New Mexico, United States |
| Show Code | HP3 |
| Poster | Link to the event poster image |
| Tickets | Direct link to buy tickets |
get_show_details returns the complete record — adding pre-sale status, "coming soon" flags, country flag, property, and any other field on the event.
🚦 Rate limits
Generous limits keep the service fast and free for everyone. Normal usage — even a long, query-heavy conversation — will never come close.
| Limit | Value |
|---|---|
| Requests / minute | 240 per IP |
| Concurrent sessions | 500 |
| Idle session timeout | 30 minutes |
Standard RateLimit headers (draft-7) are included on every response, so well-behaved clients can self-pace.
🩺 Troubleshooting
The server is deliberately forgiving — it accepts any Accept header, any
Content-Type, either URL form, and hands back a session even if your client
still has a stale one cached. If something still isn't working:
1. Check the server is up
curl https://cineconcerts.digital/mcp/health
You should get {"status":"ok", ...} and a list of 5 tools. If you don't, it's us — not you.
2. Do a full handshake by hand
curl -sD - https://cineconcerts.digital/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"x","version":"1"}}}'
A working server replies 200 with an mcp-session-id header.
3. Still failed_to_load or 0 tools?
Almost always the client config, not the connection. Check the snippet for your
client above — key names differ (url vs serverUrl, mcpServers vs servers)
and a couple of clients need an explicit transport type or they quietly fall
back to the wrong protocol. If it's still failing,
open an issue with your
client name and version.
Contributors can replay every known client request shape against any deployment:
./scripts/client-matrix.sh https://cineconcerts.digital/mcp # 17 request shapes
node scripts/verify-client.mjs https://cineconcerts.digital/mcp # real MCP SDK client
⚙️ How it works
Your AI client CineConcerts MCP Data sources
┌──────────────┐ MCP / ┌───────────────────┐ query ┌────────────────────┐
│ Claude / │ Streamable│ Express server │──────────► │ Live event catalog │
│ ChatGPT / │◄──HTTP────►│ 5 read-only tools │ │ │
│ Cursor / ... │ JSON-RPC │ rate-limited │──────────► │ Geocoding │
└──────────────┘ └───────────────────┘ └────────────────────┘
- Transport: Streamable HTTP — the modern MCP transport, with proper session management and SSE notifications.
- Stack: TypeScript · Express · the official MCP SDK ·
express-rate-limit. - Event data: live event catalog — the same public catalog that powers cineconcerts.com, the mobile app, and the interactive map.
- Location search: OpenStreetMap geocoding turns "near Tokyo Tower" into coordinates, then does a radius search.
- Health check:
GET /healthreturns server status, version, active session count, and the tool list — handy for uptime monitoring.
All data is public and read-only. The server is just an AI-friendly window onto it.
🎞 Events catalog
Live event catalog of currently on-sale events (typically dozens at a time) — the same public catalog that powers cineconcerts.com. Full company history spans 4,379 performances across 491 venues in 55 countries (as of Sep 16, 2026).
Active and historical titles include:
- 🦉 Harry Potter — all 8 films in concert (Philosopher's/Sorcerer's Stone, Chamber of Secrets, Prisoner of Azkaban, Goblet of Fire, Order of the Phoenix, Half-Blood Prince, Deathly Hallows – Part 1, Deathly Hallows – Part 2)
- 🎄 Elf in Concert
- ⚔️ Gladiator in Concert
- 🎩 The Godfather Live
- 🐉 DreamWorks Animation in Concert
- 🚂 The Polar Express in Concert
- 🔔 It's a Wonderful Life in Concert
- 💎 Breakfast at Tiffany's in Concert
- 🏈 Rudy in Concert
- 🖖 Star Trek: The Ultimate Voyage (historical)
- …and more (including historical titles such as The Da Vinci Code and The Passion of the Christ)
❓ FAQ
Do I need an API key or account? No. The server is open and unauthenticated — just add the URL.
Is it free? Yes. It's rate-limited to keep infrastructure costs sane, but there's no charge.
Can it book tickets or change anything? No. Every tool is strictly read-only. It returns ticket links you can follow yourself.
My client isn't listed — will it still work? Almost certainly. Any client that speaks MCP over Streamable HTTP can connect using the URL above.
How fresh is the data? Live. It queries the production event index directly, so what you see is what's on sale right now.
Why am I getting rate-limited?
You're sending more than 240 requests/minute from one IP. Back off briefly — the RateLimit response headers tell you exactly when to retry.
📄 License
MIT — free to use, fork, and build on.
🎼 About CineConcerts
CineConcerts produces film-concert experiences worldwide: a full symphony orchestra performs a film's entire score, live to picture, on a giant screen. As of Sep 16, 2026, company records show 4,379+ performances across 491 venues in 55 countries, with 6.6M+ tickets sold (where reported in performance history).
| All-time (as of Sep 16, 2026) | |
|---|---|
| Performances | 4,379 |
| Venues | 491 |
| Countries | 55 |
| Tickets sold | 6,640,879 of 9,087,863 seats (~73.1% on performances with sales reported) |
1,049 performances carry no sales figure and are excluded from sold totals. The upcoming book on the same date: 117 engagements · 315 performances; ~438,786 seats capacity where sales reported (36.1% sold on those).
Find your next show. Just ask your AI.
Tests
npm test # everything — spawns the server, needs .env for the tool checks
npm run test:unit # pure logic only, no credentials, instant
25 tests:
tests/unit.test.ts— show mapping, and the widget's URL guard. The guard runs in the browser, so it is lifted out of the widget source and exercised directly:shows[]arrives from the model rather than straight from the live event catalog, so a manipulated tool call could otherwise putjavascript:on an href.tests/http.test.ts— the built server in a spawned process over real HTTP. All three MCP paths (/,/mcp,/mcp/), the client-quirk header matrix, every tool returning real data, and a check that the README documents every registered tool.
A trailing slash once 301'd here, turning a client's POST into a GET, and it
presented as failed_to_load, 0 tools. That is why routing is asserted rather
than assumed.
