setlist-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
+ "name": "setlist-mcp",
4
+ "owner": {
5
+ "name": "Chris Hall",
6
+ "email": "chris.c.hall@gmail.com"
7
+ },
8
+ "metadata": {
9
+ "description": "MCP server for setlist.fm — concert setlists, artists, venues, and tours via the setlist.fm API",
10
+ "version": "0.1.0"
11
+ },
12
+ "plugins": [
13
+ {
14
+ "name": "setlist-mcp",
15
+ "displayName": "setlist.fm",
16
+ "source": "./",
17
+ "description": "MCP server for setlist.fm — search concert setlists, artists, venues, and tours via natural language",
18
+ "version": "0.1.0",
19
+ "author": {
20
+ "name": "Chris Hall"
21
+ },
22
+ "homepage": "https://github.com/chrischall/setlist-mcp",
23
+ "repository": "https://github.com/chrischall/setlist-mcp",
24
+ "license": "MIT",
25
+ "keywords": [
26
+ "setlist.fm",
27
+ "setlists",
28
+ "concerts",
29
+ "mcp"
30
+ ],
31
+ "category": "music"
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "setlist-mcp",
3
+ "displayName": "setlist.fm",
4
+ "version": "0.1.0",
5
+ "description": "MCP server for setlist.fm — search concert setlists, artists, venues, and tours via the setlist.fm API",
6
+ "author": {
7
+ "name": "Chris Hall",
8
+ "email": "chris.c.hall@gmail.com"
9
+ },
10
+ "homepage": "https://github.com/chrischall/setlist-mcp",
11
+ "repository": "https://github.com/chrischall/setlist-mcp",
12
+ "license": "MIT",
13
+ "keywords": [
14
+ "setlist.fm",
15
+ "setlists",
16
+ "concerts",
17
+ "mcp"
18
+ ],
19
+ "skills": "./SKILL.md",
20
+ "mcp": "./.mcp.json"
21
+ }
package/.mcp.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "setlist": {
4
+ "command": "node",
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/dist/index.js"],
6
+ "env": {
7
+ "SETLIST_API_KEY": "${SETLIST_API_KEY}"
8
+ }
9
+ }
10
+ }
11
+ }
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # setlist-mcp
2
+
3
+ [![CI](https://github.com/chrischall/setlist-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/chrischall/setlist-mcp/actions/workflows/ci.yml)
4
+ [![npm](https://img.shields.io/npm/v/setlist-mcp)](https://www.npmjs.com/package/setlist-mcp)
5
+
6
+ MCP server for [setlist.fm](https://www.setlist.fm) — search concert setlists, artists, venues, tours, and cities from Claude via natural language. Read-only (setlist.fm exposes no write API).
7
+
8
+ > This project was developed and is maintained by AI (Claude). Use at your own discretion.
9
+
10
+ ## What it does
11
+
12
+ Exposes 16 read-only tools over the [setlist.fm REST API](https://api.setlist.fm/docs/1.0/index.html):
13
+
14
+ | Area | Tools |
15
+ |------|-------|
16
+ | Artists | `setlist_search_artists`, `setlist_get_artist`, `setlist_get_artist_setlists` |
17
+ | Setlists | `setlist_search_setlists`, `setlist_get_setlist`, `setlist_get_setlist_version` |
18
+ | Venues | `setlist_search_venues`, `setlist_get_venue`, `setlist_get_venue_setlists` |
19
+ | Cities & countries | `setlist_search_cities`, `setlist_get_city`, `setlist_search_countries` |
20
+ | Users | `setlist_get_user`, `setlist_get_user_attended`, `setlist_get_user_edited` |
21
+ | Utility | `setlist_healthcheck` |
22
+
23
+ ## Setup
24
+
25
+ Get 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`:
26
+
27
+ ```json
28
+ {
29
+ "mcpServers": {
30
+ "setlist": {
31
+ "command": "npx",
32
+ "args": ["-y", "setlist-mcp"],
33
+ "env": {
34
+ "SETLIST_API_KEY": "your-api-key-here"
35
+ }
36
+ }
37
+ }
38
+ }
39
+ ```
40
+
41
+ Optional: `SETLIST_ACCEPT_LANGUAGE` (one of `en, es, fr, de, pt, tr, it, pl`) localizes city/country names.
42
+
43
+ See [SKILL.md](SKILL.md) for from-source setup, the full tool reference, and example flows.
44
+
45
+ ## Development
46
+
47
+ ```bash
48
+ npm install
49
+ npm run build # tsc + esbuild bundle → dist/
50
+ npm test # vitest
51
+ ```
52
+
53
+ For local runs, put `SETLIST_API_KEY=<key>` in a `.env` file (gitignored) next to the project root.
54
+
55
+ See [CLAUDE.md](CLAUDE.md) for architecture, conventions, and gotchas.
56
+
57
+ ## License
58
+
59
+ MIT
package/SKILL.md ADDED
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: setlist-mcp
3
+ description: Look up concert setlists and live-music history via setlist.fm. Use when the user asks what songs an artist played at a show, their tour setlists, what was performed at a venue or on a date, or wants to find concerts by artist, venue, city, or year. Triggers on phrases like "what did Radiohead play at...", "Phish setlist for...", "shows at Red Rocks", "what songs were played on this tour", or any request about concert setlists, gigs, tours, or live performances. Requires setlist-mcp installed and the setlist server registered (see Setup below).
4
+ ---
5
+
6
+ # setlist-mcp
7
+
8
+ MCP server for setlist.fm — search concert setlists, artists, venues, and tours via natural language. Read-only (setlist.fm has no write API).
9
+
10
+ - **npm:** [npmjs.com/package/setlist-mcp](https://www.npmjs.com/package/setlist-mcp)
11
+ - **Source:** [github.com/chrischall/setlist-mcp](https://github.com/chrischall/setlist-mcp)
12
+
13
+ ## Setup
14
+
15
+ ### Option A — npx (recommended)
16
+
17
+ Add to `.mcp.json` in your project or `~/.claude/mcp.json`:
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "setlist": {
23
+ "command": "npx",
24
+ "args": ["-y", "setlist-mcp"],
25
+ "env": {
26
+ "SETLIST_API_KEY": "your-api-key-here"
27
+ }
28
+ }
29
+ }
30
+ }
31
+ ```
32
+
33
+ ### Option B — from source
34
+
35
+ ```bash
36
+ git clone https://github.com/chrischall/setlist-mcp
37
+ cd setlist-mcp
38
+ npm install && npm run build
39
+ ```
40
+
41
+ Then add to `.mcp.json`:
42
+
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "setlist": {
47
+ "command": "node",
48
+ "args": ["/path/to/setlist-mcp/dist/index.js"],
49
+ "env": {
50
+ "SETLIST_API_KEY": "your-api-key-here"
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
57
+ Or use a `.env` file in the project directory with `SETLIST_API_KEY=<value>`.
58
+
59
+ ### Getting your API key
60
+
61
+ Apply for a free API key (non-commercial use) at [setlist.fm/settings/api](https://www.setlist.fm/settings/api) — you'll need a setlist.fm account. The key is sent as the `x-api-key` header on every request.
62
+
63
+ Optional: set `SETLIST_ACCEPT_LANGUAGE` (one of `en, es, fr, de, pt, tr, it, pl`) to localize city/country names.
64
+
65
+ ## Tools
66
+
67
+ All tools are read-only and prefixed `setlist_`.
68
+
69
+ ### Artists
70
+ - **`setlist_search_artists`** — find artists by `artistName` or `artistMbid`; returns each artist's MusicBrainz ID (`mbid`).
71
+ - **`setlist_get_artist`** — get an artist by `mbid`.
72
+ - **`setlist_get_artist_setlists`** — an artist's setlists (most recent first), by `mbid`, paginated via `p`.
73
+
74
+ ### Setlists
75
+ - **`setlist_search_setlists`** — search by any mix of artist, venue, city, country, tour, `date` (dd-MM-yyyy), or `year`.
76
+ - **`setlist_get_setlist`** — a setlist (with full song list) by `setlistId`.
77
+ - **`setlist_get_setlist_version`** — a specific historical version by `versionId`.
78
+
79
+ ### Venues
80
+ - **`setlist_search_venues`** — find venues by `name` and/or location.
81
+ - **`setlist_get_venue`** — get a venue by `venueId`.
82
+ - **`setlist_get_venue_setlists`** — setlists performed at a venue, paginated via `p`.
83
+
84
+ ### Cities & countries
85
+ - **`setlist_search_cities`** — find cities by `name`/location; returns each city's `geoId`.
86
+ - **`setlist_get_city`** — get a city by `geoId`.
87
+ - **`setlist_search_countries`** — list all supported countries and their codes.
88
+
89
+ ### Users
90
+ - **`setlist_get_user`** — a user's public profile by `userId`.
91
+ - **`setlist_get_user_attended`** — concerts a user marked as attended.
92
+ - **`setlist_get_user_edited`** — setlists a user has created or edited.
93
+
94
+ ### Utility
95
+ - **`setlist_healthcheck`** — verify the API key works and the API is reachable.
96
+
97
+ ## Typical flows
98
+
99
+ - **"What did Radiohead play at their last show?"** → `setlist_search_artists` (Radiohead → mbid) → `setlist_get_artist_setlists` (latest) → `setlist_get_setlist` for the song list.
100
+ - **"Setlists at Red Rocks in 2023"** → `setlist_search_venues` (Red Rocks → venueId) → `setlist_search_setlists` with `venueId` + `year: 2023`.
101
+ - **"Phish on 2023-08-07"** → `setlist_search_setlists` with `artistName: "Phish"`, `date: "07-08-2023"` (note the dd-MM-yyyy format).
102
+
103
+ ## Notes
104
+
105
+ - IDs chain: `search_*` tools return the `mbid` / `setlistId` / `venueId` / `geoId` you feed into the `get_*` tools.
106
+ - `date` filters use **dd-MM-yyyy** (e.g. `07-08-2023` = 7 August 2023).
107
+ - Results are paginated; pass `p` (1-based) to page through large result sets.
108
+ - setlist.fm rate-limits the standard tier (~2 req/sec); a 429 is retried once.