concert-mcp
This MCP server turns concert tickets into calendar events, Spotify teaser playlists, and setlist.fm links, usable from a Telegram bot or the command line.
Add a concert from ticket text: creates the calendar event, teaser playlist, setlist.fm lookup, and chat reply.
Add ordinary non-concert calendar events with title, start, location, notes, and optional calendar.
Delete a calendar event by artist/title, with numbered disambiguation when several match.
Create or top up a Spotify teaser playlist for one artist/date.
Look up a show on setlist.fm by artist, date, and optional venue.
List concerts waiting for the weekly setlist.fm check.
Run a healthcheck for Google Calendar, Spotify, setlist.fm, and OpenClaw credentials/tools.
Use it through an MCP client such as OpenClaw’s Telegram gateway, or via CLI commands and dry runs.
Creates and deletes events on a Google Calendar via the Google Workspace CLI (gws). The main concert flow adds a show to a Concerts calendar with derived start/end times, while a separate tool adds plain personal events, and event deletion supports title matching with a numbered pick list.
Reads the user's liked songs through the Spotify Web API to build a per-artist teaser playlist (oldest first, named 'YYYY-MM-DD | Artist') when a concert is added, caches the liked-song list locally, and has a dedicated tool to make a teaser playlist on demand. Credentials are stored on the host and can be verified in a healthcheck probe.
Acts as the bot behind a Telegram chat driven by OpenClaw: it delivers the finished reply text via 'openclaw message send', renames the concert's forum topic to 'YYYY-MM-DD | Artist | Venue' through the Bot API editForumTopic call, and uses the session database to decide whether a chat is recent enough to deliver to.
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., "@concert-mcp Add this concert to my calendar: Phoebe Bridgers on May 3 at the Greek Theatre"
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.
concert-mcp
Turns a concert ticket into a Google Calendar event, a Spotify teaser playlist and a setlist.fm link, from a Telegram bot or the command line. It is one Model Context Protocol (MCP) server built for a small local model. The model passes the artist, the start time and the venue; code does the rest.
Getting started
concert-mcp needs Python 3.11 or newer and uv.
git clone https://github.com/AriSweedler/concert-mcp.git && cd concert-mcp
uv sync
uv run concert-mcp healthcheckThe healthcheck names each missing credential and the section below that provides it. Only Google Calendar is required for the command line. This dry run prints the reply and writes nothing:
uv run concert-mcp add --concert --dry-run --no-send --title 'ZZZ Test Band' --start '2026-11-20 20:00' --location 'ZZZ Hall'Related MCP server: Alfred
Credentials
Google Calendar
Install gws, the Google Workspace command line tool, and complete its setup. It needs a Google Cloud OAuth client; its README shows how.
Set
GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=filebefore every gws command on this machine. A login without the variable deletes the stored token.echo 'export GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file' >> ~/.zprofile # or your shell's profile export GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file gws auth loginCreate a calendar named
Concertsin Google Calendar.
Then run the add command above without --dry-run --no-send. Start times are read in CONCERT_MCP_TZ, default America/Los_Angeles. Details.
Spotify
Spotify makes the teaser playlist from your liked songs by the artist.
Create an app at https://developer.spotify.com/dashboard with the redirect URI
http://127.0.0.1:8888/callback.Add your account under the app's User Management.
Run the login and paste the app's Client ID and Client Secret:
uv run concert-mcp spotify auth --manual
setlist.fm
setlist.fm provides the setlist link. Get a free key at https://www.setlist.fm/settings/api. Store it:
uv run concert-mcp spotify setlist-auth --manualOpenClaw
OpenClaw is the Telegram gateway that calls this server from chat. On the OpenClaw host, register the server. Then allow its three tools:
openclaw mcp set concert '{"command":"uv","args":["run","--project","/path/to/concert-mcp","concert-mcp","serve"],"env":{"CONCERT_MCP_OPERATOR_NAME":"${CONCERT_MCP_OPERATOR_NAME}","CONCERT_MCP_GWS_BIN":"${CONCERT_MCP_GWS_BIN}","CONCERT_MCP_OPENCLAW_BIN":"${CONCERT_MCP_OPENCLAW_BIN}"},"toolFilter":{"include":["concert_add","calendar_add","event_delete"]},"requestTimeoutMs":480000,"enabled":true}'
openclaw config set tools.alsoAllow '["exec","read","concert__concert_add","concert__calendar_add","concert__event_delete"]'
openclaw mcp reload
openclaw mcp probe concertAn unset ${...} variable falls back to its default. Without the alsoAllow line, OpenClaw's minimal tool profile hides the tools. Then send the bot a ticket screenshot: the reply lands in the chat that asked. Details.
Configuration
Settings are CONCERT_MCP_* environment variables, or keys in ~/.config/concert-mcp/config.toml. uv run concert-mcp config prints them.
Docs
Document | What it holds |
the nine tools, what the model sees, the small-model rule | |
each provider in full, and the OpenClaw entry explained | |
every setting, and what the healthcheck prints | |
every subcommand, flag and exit code | |
the author's earlier scripts and deployment, the build spec, how to contribute |
License
MIT. See LICENSE.
Available Tools
7 toolscalendar_addA
Add a plain (non-concert) event to the personal calendar, keeping the title as the user wrote it. For a concert ticket use concert_add instead. If the result starts with NO_REPLY, answer exactly NO_REPLY.
Inputs: notes, start, title, calendar, +1 more.
concert_addA
Add a concert to the calendar and do everything that goes with it: teaser playlist, setlist.fm lookup, the chat reply. Call once per ticket with artist, start and venue as read from the ticket; paste the ticket text into source_text. If the result starts with NO_REPLY, answer exactly NO_REPLY.
Inputs: notes, start, venue, artist, +1 more.
event_deleteADestructive
Delete one calendar event by artist or title. When several match, the tool lists them with numbers and asks the user; when the user answers with a number, call this again with pick set to that number. If the result starts with NO_REPLY, answer exactly NO_REPLY.
Inputs: date, pick, title.
healthcheckARead-only
Report which credentials and tools are present for Google Calendar, Spotify, setlist.fm and OpenClaw, and what fixes each missing one. Takes no parameters.
Inputs: no named parameters.
queue_statusARead-only
List the concerts waiting for the weekly setlist.fm check. Takes no parameters. NO_REPLY means answer exactly NO_REPLY.
Inputs: no named parameters.
setlist_findARead-only
Look up one show on setlist.fm by artist and date. concert_add already does this; call only when asked about a setlist alone. NO_REPLY means answer exactly NO_REPLY.
Inputs: date, venue, artist.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
concert_add is a hub tool that explicitly absorbs the work of teaser_playlist and setlist_find, so three tools perform the same underlying operations. The descriptions do rescue this with explicit routing cues ('concert_add already does this; call only when asked for X alone'), but an agent still has to reason about user intent rather than resource+action to choose correctly.
Most names follow a noun_verb or noun_action shape (concert_add, calendar_add, event_delete, setlist_find, queue_status), but the verb position flips between prefix-style and suffix-style, and 'healthcheck' is an unseparated single word that breaks the pattern entirely. Readable, but not a predictable convention an agent can extrapolate from.
Seven tools for a concert-tracking domain (build playlist, look up setlist, queue status, diagnostics, add concert, add plain event, delete event) is well scoped with no filler. Each tool maps to a recognizable user request.
The surface covers creation and deletion of events plus the concert enrichment pipeline, but there is no read/list tool for existing calendar entries beyond queue_status's pending-concert view, and no update/reschedule operation. An agent asked 'what's on my calendar next month?' or 'move this concert' hits a dead end.
Maintenance
Related MCP Connectors
Pay-per-use agent tools: screenshots, web to Markdown, PDF tables, OCR, UK company checks
Deterministic AI agent microtools, no accounts/API keys. fetch_extract: 98% token cut. 47 tools.
Personal project management with AI agents: numbered tickets, statuses, files, a thread per ticket.
Personal project management with AI agents: numbered tickets, statuses, files, a thread per ticket.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceTurns an LLM agent into a personal planner by providing atomic context (roles, goals, decision matrix) and routing classified items to Obsidian, with optional projection to Google Calendar and Tasks.Apache 2.0
- AlicenseBqualityCmaintenanceA local-first open-source MCP server that acts as a personal secretary, memory manager, and automation hub—it syncs Calendar, Gmail, Canvas, GitHub, and Health into a typed temporal memory graph, and enables approval-gated write actions like creating events, drafting/sending mail, and filing issues, all with telegram/slack/CLI interfaces and a SQLite-backed audit trail.33Apache 2.0
- AlicenseNot gradedqualityBmaintenanceGmail, Google Calendar, Drive, Sheets, Tasks and Contacts for AI agents, using your own Google OAuth login. Runs locally over stdio with 23 tools: search and send mail, manage events, read and write Sheets, upload and share Drive files.577 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceEnables natural-language management of calendar events, notes, and scanned or photographed documents through a ReAct agent that schedules and reschedules events, detects scheduling conflicts, and searches notes with hybrid vector plus keyword retrieval. It also ingests visual documents via an OCR/CNN vision worker, stores long-term agent facts, and synthesizes cross-context summaries.3MIT