{
  "markdown": "# setlist-mcp\n\n[![CI](https://github.com/chrischall/setlist-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/chrischall/setlist-mcp/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/setlist-mcp)](https://www.npmjs.com/package/setlist-mcp)\n[![license](https://img.shields.io/npm/l/setlist-mcp)](LICENSE)\n\nMCP server for [setlist.fm](https://www.setlist.fm) — search concert setlists, artists, venues, tours, and cities from Claude via natural language. Mostly read-only (the setlist.fm REST API exposes no write endpoints), plus authenticated \"I was there\" attendance actions via your logged-in session.\n\n> This project was developed and is maintained by AI (Claude). Use at your own discretion.\n\n## What it does\n\nExposes 20 tools — 18 read-only over the [setlist.fm REST API](https://api.setlist.fm/docs/1.0/index.html), plus 2 authenticated \"I was there\" attendance actions:\n\n| Area | Tools |\n|------|-------|\n| Artists | `setlist_search_artists`, `setlist_get_artist`, `setlist_get_artist_setlists` |\n| Setlists | `setlist_search_setlists`, `setlist_get_setlist`, `setlist_get_setlist_version` |\n| Venues | `setlist_search_venues`, `setlist_get_venue`, `setlist_get_venue_setlists` |\n| Cities & countries | `setlist_search_cities`, `setlist_get_city`, `setlist_search_countries` |\n| Users | `setlist_get_user`, `setlist_get_user_attended`, `setlist_get_user_edited` |\n| Resolve | `setlist_resolve_concerts` |\n| Attendance (authenticated writes) | `setlist_mark_attended`, `setlist_unmark_attended` |\n| Utility | `setlist_healthcheck`, `setlist_id_from_url` |\n\n## Setup\n\nGet a free API key (non-commercial use) at [setlist.fm/settings/api](https://www.setlist.fm/settings/api), then add the server to your `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"setlist\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"setlist-mcp\"],\n      \"env\": {\n        \"SETLIST_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\nOptional: `SETLIST_ACCEPT_LANGUAGE` (one of `en, es, fr, de, pt, tr, it, pl`) localizes city/country names.\n\nSee [skills/setlist/SKILL.md](skills/setlist/SKILL.md) for from-source setup, the full tool reference, and example flows.\n\n## Attribution & terms\n\nUse is governed by the [setlist.fm API terms](https://www.setlist.fm/help/api-terms). In short:\n\n- **Attribute setlist.fm.** Every result carries a `url`; surface it as a *followable* source link (no `nofollow`) wherever the data is shown. The tool descriptions instruct the model to do this, and results pass the `url` through verbatim.\n- **Non-commercial only** under a free key — commercial use requires setlist.fm's permission.\n- **No persistent caching** — this server makes a live API call per tool invocation and keeps no datastore. Please don't add one.\n- **Keep your API key private** — it lives in `SETLIST_API_KEY` (`.env` is gitignored) and never appears in tool output.\n\n## Development\n\n```bash\nnpm install\nnpm run build   # tsc + esbuild bundle → dist/\nnpm test        # tsc typecheck + vitest\n```\n\nFor local runs, put `SETLIST_API_KEY=<key>` in a `.env` file (gitignored) next to the project root.\n\nSee [CLAUDE.md](CLAUDE.md) for architecture, conventions, and gotchas.\n\n## License\n\nMIT\n",
  "bytes": 3196,
  "sha": "02d3acfe529b09a3e6ae09bf39c1c253ceecd44f4b3719a833c9351802dc2eb5",
  "repo_slug": "chrischall/setlist-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_chrischall_setlist_mcp_199cae33/readme"
}