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.
- package/.claude-plugin/marketplace.json +34 -0
- package/.claude-plugin/plugin.json +21 -0
- package/.mcp.json +11 -0
- package/README.md +59 -0
- package/SKILL.md +108 -0
- package/dist/bundle.js +31591 -0
- package/dist/client.js +67 -0
- package/dist/index.js +27 -0
- package/dist/tools/artists.js +50 -0
- package/dist/tools/geo.js +42 -0
- package/dist/tools/setlists.js +57 -0
- package/dist/tools/users.js +43 -0
- package/dist/tools/utilities.js +41 -0
- package/dist/tools/venues.js +48 -0
- package/dist/version.js +6 -0
- package/package.json +57 -0
- package/server.json +36 -0
|
@@ -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
package/README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# setlist-mcp
|
|
2
|
+
|
|
3
|
+
[](https://github.com/chrischall/setlist-mcp/actions/workflows/ci.yml)
|
|
4
|
+
[](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.
|