setlist-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SETLIST_API_KEY | Yes | Your setlist.fm API key (get one at https://www.setlist.fm/settings/api) | |
| SETLIST_ACCEPT_LANGUAGE | No | Optional language for localizing city/country names (en, es, fr, de, pt, tr, it, pl) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| setlist_search_artistsA | Search setlist.fm for artists by name or MusicBrainz ID. Returns matching artists with their MusicBrainz ID (mbid) — use that mbid with setlist_get_artist or setlist_get_artist_setlists. Results include a setlist.fm |
| setlist_get_artistA | Get a setlist.fm artist by their MusicBrainz ID (mbid). Results include a setlist.fm |
| setlist_get_artist_setlistsA | Get an artist's setlists (most recent first) by their MusicBrainz ID (mbid). Paginated via |
| setlist_search_setlistsA | Search setlist.fm for concert setlists. Filter by any combination of artist, venue, city, country, tour, date, or year (provide at least one). Combine filters to disambiguate — artistName + date can span multiple cities, so add cityName/cityId or venueName/venueId to pin the exact show. Omit the artist and pass venueName/venueId + date to list EVERY performer at a venue or festival that day. Every result includes songCount, setCount, and hasSongs, so you can skip empty 'stub' setlists (hasSongs: false) without a second fetch. Results include a setlist.fm |
| setlist_get_setlistA | Get a setlist.fm setlist by its ID, including the full song list and event details. A setlist's songs live in |
| setlist_get_setlist_versionA | Get a specific historical version of a setlist by its version ID. Setlists are wiki-edited; each edit has a version ID returned in a setlist's |
| setlist_search_venuesA | Search setlist.fm for venues by name and/or location. Returns matching venues with their venue ID — use it with setlist_get_venue or setlist_get_venue_setlists. Results include a setlist.fm |
| setlist_get_venueA | Get a setlist.fm venue by its ID. Results include a setlist.fm |
| setlist_get_venue_setlistsA | Get setlists performed at a venue, by venue ID (most recent first). Paginated via |
| setlist_search_citiesA | Search setlist.fm for cities by name and/or location. Returns cities with their geoId — use it as cityId in setlist_search_setlists / setlist_search_venues, or with setlist_get_city. Results include a setlist.fm |
| setlist_get_cityA | Get a city by its geoId. Results include a setlist.fm |
| setlist_search_countriesA | List all countries supported by setlist.fm, with their ISO country codes. Use a code as countryCode in setlist_search_setlists. Results include a setlist.fm |
| setlist_get_userA | Get a setlist.fm user's public profile by their userId (their setlist.fm username). Results include a setlist.fm |
| setlist_get_user_attendedA | Get the concerts a setlist.fm user has marked as attended. Paginated via |
| setlist_get_user_editedA | Get the setlists a setlist.fm user has created or edited. Paginated via |
| setlist_resolve_concertsA | Resolve many concerts to their setlists in ONE call (instead of 2+ per show). Given up to 24 |
| setlist_mark_attendedA | Record on YOUR setlist.fm account that you attended a show — the site's "I was there" marker — by setlist ID. Authenticated via your session (needs SETLIST_SESSION_COOKIE). Idempotent: a no-op if already marked. Without confirm: true it returns a dry-run preview and makes NO change; with confirm: true it toggles attendance and verifies by re-reading your attended list. Results include a setlist.fm |
| setlist_unmark_attendedA | Remove a show from YOUR attended list on setlist.fm, by setlist ID (reverses setlist_mark_attended). Authenticated via your session. Idempotent: a no-op if not currently attended. Without confirm: true it returns a dry-run preview and makes NO change; with confirm: true it removes the attendance and verifies by re-reading. Results include a setlist.fm |
| setlist_id_from_urlA | Parse the setlist ID out of a setlist.fm setlist URL so you can paste a link instead of hunting for the ID. Returns {setlistId} (the trailing hex token before .html), ready to feed into setlist_get_setlist / setlist_mark_attended. Scoped to /setlist/ pages — artist (/setlists/) and venue (/venue/) URLs are rejected. Tolerates http/https, with/without www, trailing slash, query/fragment, and a missing .html. Pure local parsing — no network call. Errors if no ID can be parsed. |
| setlist_healthcheckA | Confirm the API key is configured and works by calling the setlist.fm countries endpoint. Reports {ok, authenticated, country_count} with a plain-English hint distinguishing "no key" vs "bad key" vs "API error". Read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Each tool targets a distinct resource and action: search vs. get vs. get-setlists for artists and venues, plus separate user, batch-resolution, and utility tools. The few overlapping-sounding tools (e.g., setlist_get_artist_setlists vs. setlist_search_setlists) are clearly differentiated by their parameters and descriptions.
All tools share a consistent setlist_ prefix and almost all follow a verb_noun pattern like get_artist, search_venues, mark_attended. Minor deviations like setlist_id_from_url and setlist_healthcheck are still readable but break the strict verb_noun convention.
At 20 tools, the server sits at the upper edge of the ideal range, but the count is justified by the breadth of the setlist.fm API: lookup/search for all entity types, user actions, a batch resolver, and utilities. Each tool earns its place without redundancy.
The surface covers the full read side of the domain (artists, venues, cities, countries, setlists, users), plus write actions (mark/unmark attended), batch resolution, URL parsing, and a healthcheck. There are no obvious dead ends for typical setlist.fm workflows.