Skip to main content
Glama

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 healthcheck

The 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

  1. Install gws, the Google Workspace command line tool, and complete its setup. It needs a Google Cloud OAuth client; its README shows how.

  2. Set GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file before 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 login
  3. Create a calendar named Concerts in 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.

  1. Create an app at https://developer.spotify.com/dashboard with the redirect URI http://127.0.0.1:8888/callback.

  2. Add your account under the app's User Management.

  3. Run the login and paste the app's Client ID and Client Secret:

    uv run concert-mcp spotify auth --manual

Details.

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 --manual

Details.

OpenClaw

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 concert

An 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

Architecture and design

the nine tools, what the model sees, the small-model rule

Credentials

each provider in full, and the OpenClaw entry explained

Configuration

every setting, and what the healthcheck prints

CLI

every subcommand, flag and exit code

Migration, homelab, design spec, contributing

the author's earlier scripts and deployment, the build spec, how to contribute

License

MIT. See LICENSE.

Available Tools

7 tools
calendar_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_deleteA
Destructive

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.

healthcheckA
Read-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_statusA
Read-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_findA
Read-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.

teaser_playlistA

Make or top up the Spotify teaser playlist for one concert: every song the user liked by the artist, oldest first, named "YYYY-MM-DD | Artist". concert_add already does this; call only when asked for the playlist alone. NO_REPLY means answer exactly NO_REPLY.

Inputs: date, artist.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 7 tools

    Disambiguation3/5

    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.

    Naming Consistency3/5

    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.

    Tool Count5/5

    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.

    Completeness3/5

    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

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Turns 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
    • A
      license
      B
      quality
      C
      maintenance
      A 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.
      33
      Apache 2.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Gmail, 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 PyPI
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables 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.
      3
      MIT