Skip to content

Extend SetlistMCP to cover the full setlist.fm REST API - #1

Merged
adrianparker merged 1 commit into
mainfrom
extend-setlistfm-api-coverage
Aug 30, 2026
Merged

adrianparker merged 1 commit into
mainfrom
extend-setlistfm-api-coverage

Conversation

@adrianparker

Copy link
Copy Markdown
Owner

Summary

  • Adds 11 new MCP tools covering every setlist.fm REST endpoint beyond the existing find_setlists/get_setlist pair: get_artist, find_artists, get_artist_setlists, get_venue, find_venues, get_venue_setlists, get_city, find_cities, list_countries, get_setlist_version, and get_user_setlists (attended/edited).
  • Every new client method reuses the existing shared RateLimiter and TtlCache instances in server.js, so throttling and caching are inherited automatically with no new wiring.
  • Collection endpoints treat a 404 from setlist.fm as an empty result (matching the existing search/setlists behavior); single-resource detail endpoints propagate 404 as a real not-found.
  • list_countries walks setlist.fm's paginated country list internally and caches the merged result for a week — verified live that the API actually returns all 250 countries on page one, so this costs exactly one request in practice.
  • Wires up the previously dead HTTP_MAX_ATTEMPTS env var through both API clients, since retry count directly affects request volume against a rate-limited API.
  • Updates README.md and .env.example accordingly.

Test plan

  • npm run lint — clean
  • npm test — 285 passing (new client-method and tool tests added, test/server.test.js updated for the full tool list)
  • npm run coverage — ~99% statements
  • Manually smoke-tested every new client method against the live setlist.fm API (artists, venues, cities, countries, user setlists) to confirm response shapes and rate-limit behavior

🤖 Generated with Claude Code

Adds 11 new MCP tools (get_artist, find_artists, get_artist_setlists,
get_venue, find_venues, get_venue_setlists, get_city, find_cities,
list_countries, get_setlist_version, get_user_setlists) covering every
setlist.fm endpoint beyond the existing find_setlists/get_setlist pair,
including the attended/edited user history that's directly relevant to
looking up gigs you've actually been to.

Every new client method routes through the existing shared RateLimiter
and TtlCache instances, so throttling and caching are inherited with no
extra wiring. Collection endpoints treat a 404 as an empty result,
consistent with the existing search/setlists behavior; detail endpoints
propagate 404 as a real not-found. Also wires up the previously-dead
HTTP_MAX_ATTEMPTS env var, since retry count directly affects request
volume against a rate-limited API.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@adrianparker
adrianparker merged commit 833503d into main Aug 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant