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 整合