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 setlist.fm session — SETLIST_SESSION_COOKIE, or a signed-in browser tab via the fetchproxy bridge. Idempotent: a no-op if already marked. Reversible with setlist_unmark_attended. Toggles attendance and verifies by re-reading the setlist page. Returns |
| setlist_unmark_attendedA | Remove a show from YOUR attended list on setlist.fm, by setlist ID (reverses setlist_mark_attended). Authenticated via your setlist.fm session — SETLIST_SESSION_COOKIE, or a signed-in browser tab via the fetchproxy bridge. Idempotent: a no-op if not currently attended. Reversible with setlist_mark_attended. Removes the attendance and verifies by re-reading the setlist page. Returns |
| 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 maps to a clear entity+action pair (artist, venue, city, country, user, setlist with get/search/batch-resolve/toggle variants), and the write pair mark_attended/unmark_attended is unambiguous. The only mild overlap is between setlist_search_setlists and setlist_resolve_concerts, both of which locate setlists, but their descriptions clearly separate single-search from bulk-batch resolution.
Every tool follows the identical setlist_{verb}_{noun} snake_case pattern (setlist_get_artist, setlist_search_venues, setlist_mark_attended). Verb choice is consistent (get/search/resolve/mark/unmark), making the surface highly predictable.
20 tools is on the heavier side, but the domain legitimately spans six entity types each warranting get/search plus setlist-specific helpers. Each tool earns its place with little redundancy, so it sits just over the comfortable range rather than bloating it.
Coverage is broad: artists, venues, cities, countries, users, and setlists all have retrieval paths, plus write (attended), bulk resolve, URL parsing, and a healthcheck. Minor gaps exist (e.g. no user search endpoint, no direct song-level lookup), but core lifecycle workflows are fully served.