Setlist Mcp

io.github.chrischall由 GitHub 账号 chrischall 发布v1.2.0更新于 Nov 7, 2026

setlist.fm concert data for Claude — setlists, artists, venues, tours, and cities

发布方自己的服务:Setlist.id

已验证STDIO仅桌面位置与生活媒体与设计

概览

AI 生成的概览

本地 MCP 服务器,让助手查询 setlist.fm 的演唱会数据:演出歌单、艺人、场馆、城市、巡演与用户,并可标记“我到过现场”。

可以做什么
  • 搜索并读取艺人信息,按 MusicBrainz ID 获取其演出歌单
  • 搜索并读取歌单,包括完整曲目、返场与历史版本
  • 搜索并读取场馆、城市与国家,并取得用于筛选的 ID
  • 读取公开用户资料、已参加演出与编辑过的歌单
  • 一次调用将最多 24 场艺人/日期/城市/场馆演出解析为对应歌单
  • 在本人账号上标记或取消标记到场,从链接解析歌单 ID,并执行健康检查
适用场景
适合向助手询问现场音乐相关问题:某乐队某晚唱了什么、某场馆举办过哪些演出、某用户参加过哪些演唱会。也适合在对话中维护自己的 setlist.fm 到场记录。
运行要求
通过 npx 在本地运行(需 Node.js)。读取类工具需要免费的 setlist.fm API 密钥,放在 SETLIST_API_KEY。两个到场写入工具需要已登录的 setlist.fm 会话,可通过 SETLIST_SESSION_COOKIE 提供,或借助 ContextMint Bridge 浏览器扩展(Chrome)。可选 SETLIST_ACCEPT_LANGUAGE 与 SETLIST_DISABLE_FETCHPROXY。需要访问 setlist.fm 的网络连接。
安装前请注意
SETLIST_SESSION_COOKIE 是已登录的会话 Cookie,可访问你的 setlist.fm 账号;浏览器桥接方式会从浏览器读取该 Cookie。到场工具会修改账号数据,但均为幂等且可撤销。免费 API 密钥仅限非商业用途,setlist.fm 条款要求可跟随的署名链接且不得持久缓存。README 说明该项目由 AI 维护,使用风险自负。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Setlist Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

setlist-mcp

[CI] [npm] [license]

MCP server for 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.

This project was developed and is maintained by AI (Claude). Use at your own discretion.

What it does

Exposes 20 tools — 18 read-only over the setlist.fm REST API, plus 2 authenticated "I was there" attendance actions:

AreaTools
Artistssetlist_search_artists, setlist_get_artist, setlist_get_artist_setlists
Setlistssetlist_search_setlists, setlist_get_setlist, setlist_get_setlist_version
Venuessetlist_search_venues, setlist_get_venue, setlist_get_venue_setlists
Cities & countriessetlist_search_cities, setlist_get_city, setlist_search_countries
Userssetlist_get_user, setlist_get_user_attended, setlist_get_user_edited
Resolvesetlist_resolve_concerts
Attendance (authenticated writes)setlist_mark_attended, setlist_unmark_attended
Utilitysetlist_healthcheck, setlist_id_from_url

Setup

Get a free API key (non-commercial use) at setlist.fm/settings/api, then add the server to your .mcp.json:

json
{  "mcpServers": {    "setlist": {      "command": "npx",      "args": ["-y", "setlist-mcp"],      "env": {        "SETLIST_API_KEY": "your-api-key-here"      }    }  }}

Optional: SETLIST_ACCEPT_LANGUAGE (one of en, es, fr, de, pt, tr, it, pl) localizes city/country names.

The attendance tools (setlist_mark_attended / setlist_unmark_attended) need your logged-in www.setlist.fm session. Either set SETLIST_SESSION_COOKIE to the Cookie header of a logged-in request, or install ContextMint Bridge (Chrome: load the chrome zip unpacked; Safari isn't available yet — it will ship inside the ContextMint app, which has no public download — so use Chrome for now) and stay signed in to www.setlist.fm — the server lifts the session cookie from your browser on first use. Set SETLIST_DISABLE_FETCHPROXY=1 to turn the browser fallback off.

ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).

See skills/setlist/SKILL.md for from-source setup, the full tool reference, and example flows.

Attribution & terms

Use is governed by the setlist.fm API terms. In short:

  • 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.
  • Non-commercial only under a free key — commercial use requires setlist.fm's permission.
  • No persistent caching — this server makes a live API call per tool invocation and keeps no datastore. Please don't add one.
  • Keep your API key private — it lives in SETLIST_API_KEY (.env is gitignored) and never appears in tool output.

Development

bash
npm installnpm run build   # tsc + esbuild bundle → dist/npm test        # tsc typecheck + vitest

For local runs, put SETLIST_API_KEY=<key> in a .env file (gitignored) next to the project root.

See CLAUDE.md for architecture, conventions, and gotchas.

License

MIT

来源:README.md,提交 27811ac

工具

20

setlist_search_artists

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 `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数psortviewartistMbidartistName

setlist_get_artist

Get a setlist.fm artist by their MusicBrainz ID (mbid). Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数mbid必填view

setlist_get_artist_setlists

Get an artist's setlists (most recent first) by their MusicBrainz ID (mbid). Paginated via `p`. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pmbid必填view

setlist_search_setlists

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 `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pdateviewyearstatecityIdvenueIdcityNametourNamestateCodevenueNameartistMbid另有 3 个

setlist_get_setlist

Get a setlist.fm setlist by its ID, including the full song list and event details. A setlist's songs live in `sets.set[]`; each set may have an `encore` number (1 = first encore) and a `name` (e.g. an acoustic set or a full album). Each `song` may carry: `tape: true` (pre-recorded intro/outro/interlude — not actually performed), `cover` (the original artist when it is a cover), `with` (a guest performer), and `info` (a note like "acoustic" or "first time live"). Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数viewsetlistId必填

setlist_get_setlist_version

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 `versionId` field. A setlist's songs live in `sets.set[]`; each set may have an `encore` number (1 = first encore) and a `name` (e.g. an acoustic set or a full album). Each `song` may carry: `tape: true` (pre-recorded intro/outro/interlude — not actually performed), `cover` (the original artist when it is a cover), `with` (a guest performer), and `info` (a note like "acoustic" or "first time live"). Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数viewversionId必填

setlist_search_venues

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 `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pnameviewstatecityIdcountrycityNamestateCode

setlist_get_venue

Get a setlist.fm venue by its ID. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数viewvenueId必填

setlist_get_venue_setlists

Get setlists performed at a venue, by venue ID (most recent first). Paginated via `p`. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pviewvenueId必填

setlist_search_cities

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 `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pnameviewstatecountrystateCode

setlist_get_city

Get a city by its geoId. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数viewgeoId必填

setlist_search_countries

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 `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数view

setlist_get_user

Get a setlist.fm user's public profile by their userId (their setlist.fm username). Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数viewuserId必填

setlist_get_user_attended

Get the concerts a setlist.fm user has marked as attended. Paginated via `p`. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pviewuserId必填

setlist_get_user_edited

Get the setlists a setlist.fm user has created or edited. Paginated via `p`. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数pviewuserId必填

setlist_resolve_concerts

Resolve many concerts to their setlists in ONE call (instead of 2+ per show). Given up to 24 `{artist, date, city?, venue?}`, returns the best-match setlist for each — `{setlistId, url, eventDate, artist, venue, city, tour, songCount, hasSongs}` — plus a `{matched, stubs, tourReferenced, unmatched, pending, errored}` summary. For each: searches artist + date (narrowed by your city/venue), and on a miss falls back to a relevance artist lookup (by mbid) and a punctuation-normalized name so format variants still resolve. `hasSongs: false` flags an empty stub page (no songs logged on setlist.fm). When a show is a stub, if the act toured a repeating set the result also includes a `tourReference` — a populated setlist from the SAME tour on a different date (with `songs` + its own `url`), clearly labeled as a reference, NOT this exact show (set `tourFallback: false` to skip these extra lookups). Calls are paced to setlist.fm's ~2 req/sec limit; if a big batch can't finish within the time budget the rest come back `pending: true` (re-call with just those) rather than timing out. A concert whose lookup fails upstream comes back with `match: null` and an `error` message (counted in `errored`) while the rest of the batch still resolves — re-call with just those. A missing or rejected API key (401/403) fails the whole call at once instead, since no concert could resolve. Keep batches ≤24. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数concerts必填tourFallback

setlist_mark_attended

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 `attended`, `changed` and `verified`. `verified: true` means the page shows the requested state. If `verified` is false, the toggle could not be checked: `attended` holds the state the re-read saw, or null if the page was unreadable, and `changed` is false — check the show on setlist.fm before reporting success. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数setlistId必填

setlist_unmark_attended

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 `attended`, `changed` and `verified`. `verified: true` means the page shows the requested state. If `verified` is false, the toggle could not be checked: `attended` holds the state the re-read saw, or null if the page was unreadable, and `changed` is false — check the show on setlist.fm before reporting success. Results include a setlist.fm `url`; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no `url`, link to https://www.setlist.fm instead.

输入参数setlistId必填

setlist_id_from_url

Extract a setlist ID from a setlist.fm URL

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.

输入参数url必填

setlist_healthcheck

Verify setlist.fm API key + connectivity

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.

无需输入参数。

版本历史

13
  1. v1.2.0最新Nov 4, 2026
  2. v1.1.9Oct 16, 2026
  3. v1.1.8Oct 10, 2026
  4. v1.1.7Oct 7, 2026
  5. v1.1.6Oct 5, 2026
  6. v1.1.5Oct 3, 2026
  7. v1.1.4Sep 28, 2026
  8. v1.1.3Sep 25, 2026
  9. v1.1.2Sep 23, 2026
  10. v1.1.1Sep 23, 2026
  11. v1.1.0Sep 20, 2026
  12. v1.0.0Sep 19, 2026
  13. v0.11.4Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Setlist 集成