Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PYTHONIOENCODINGNoForce UTF-8 encoding for the MCP server. Recommended when using the 'am-mcp' command.utf-8

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
am_statusA

Check developer-token validity and Apple Music login status. Use before any library write; this check changes nothing. / 中文:查看 Apple Music 自动化状态:developer token 是否有效、是否已登录(music-user-token)。任何写歌单操作前都应先确认已登录。

am_search_songsA

Search the Apple Music catalog for a small exploratory lookup and return stable catalog IDs. For an LLM-proposed playlist-sized pool, use am_resolve_candidates instead. / 中文:在 Apple Music catalog 搜索歌曲/专辑/艺人,返回可用于建歌单的歌曲 ID。

am_resolve_candidatesA

Ground an LLM-curated candidate pool in Apple Music metadata before final selection or creation. It returns exact catalog metadata and Apple Music links, flags unresolved tracks, duplicate recordings, artist concentration, and version markers, and never scores theme fit or writes to the library. / 中文:批量校验 LLM 提出的候选曲目,并返回 Apple Music 的真实曲名、艺人、专辑、发行日期、流派、时长、歌词可用性、版本标记和 catalog ID。还会指出重复录音与艺人集中度,但不替模型做主题评分或选曲。模型应直接根据用户描述与这些真实信息比较候选,保留理由充分的曲目。只读,不修改音乐库。

am_list_playlistsA

List every playlist in the current user's library, including IDs. Use am_show_playlist when the tracks of one playlist are needed. / 中文:列出当前账号音乐库里的所有歌单(含 ID)。

am_show_playlistA

Show the tracks in one playlist selected by name or ID. Use am_list_playlists first when the exact playlist is unknown. / 中文:查看某个歌单的曲目列表。

am_create_playlistA

Create a new playlist from 'Title - Artist' strings or ISRCs. Use dry_run=true to verify catalog matching without writing; use am_add_tracks for an existing playlist. / 中文:创建一个新的 Apple Music 歌单,并一次性写入曲目。曲目用 '歌名 - 艺人' 形式的字符串数组给出,服务端会自动在 catalog 里匹配;若有 ISRC 码则更精确。这是全自动建歌单的主入口。

am_add_tracksA

Append resolved tracks to an existing playlist created by this API client. Use dry_run=true to preview matching; use am_create_playlist for a new playlist. / 中文:向已有歌单追加曲目。注意 Apple 的限制:只有创建该歌单的那个客户端才能写入它。

am_delete_playlistA

Delete one playlist permanently after it has been shown to the user. This is destructive, requires confirm=true, and does not delete the underlying songs from the library. / 中文:删除一个歌单。这是破坏性操作,必须先把歌单名和它当前的内容展示给用户并得到确认;只删本工具创建的演示/临时歌单,不要删用户自己整理的歌单。

am_audit_playlistA

Read-only metadata audit of playlist length, artist concentration, genres, eras, duplicates, and possible interludes. For BPM, key, energy, and transitions, use am_analyze_flow. / 中文:歌单结构化体检(元数据层):曲目数、总时长、艺人集中度(同一艺人是否超过 2 首)、流派分布、年代分布、时长分布、重复曲目、<2:00 的疑似间奏。只读,用于判断歌单是否符合策展规范(长度 20–30 首最佳、单一主题等)。

am_analyze_flowA

Read-only diagnosis of BPM, key, loudness, energy, mood, adjacent transitions, and overall arc. It may fetch and cache remote feature data; use am_optimize_order only when a proposed replacement order is wanted. / 中文:歌单「好听度」体检(音频特征层):抓取每首的 BPM/调性/响度/能量/情绪值(经 ISRC→ReccoBeats,首次会慢,之后走缓存),然后检查四项相邻衔接(两首慢歌相邻 / 「只慢一点」/ tempo 与 key 同时相似 / 能量骤变)和整体弧线形状(Man in a hole、Icarus、Tragedy 等)。只读但会联网抓数据,可能耗时较久。

am_optimize_orderA

Optionally refine local audio transitions after the LLM has selected the songs and narrative blocks. By default it does not impose a global narrative arc or tempo curve; pass a named arc only when the user explicitly requests that preset. It returns an order without writing and must not choose songs or judge theme fit. / 中文:为一批曲目算出更好的顺序。这是本项目唯一会排序的工具——am_analyze_flow 只诊断(告诉你哪里有 2 处慢歌相邻、形状是 Icarus),不提供修法。这里用模拟退火处理四条相邻硬规则(不要两首慢歌相邻 / 不要「只慢一点」/ 相邻不该在 tempo 与 key 上同时相似 / 不要 BPM 无理由大跳、能量骤变)。默认不拟合全局叙事弧;只有显式传入 arc 才套用一个命名预设。只读:只返回建议顺序,不动任何歌单;把返回列表按原顺序交给 am_create_playlist 即可。因为需要每首的 BPM/调性,首次会联网抓特征(之后走缓存)。

am_tag_directionsA

Present and steer the playlist's direction tags: about five labels the host model authors, covering both musical character (sonic) and listening provenance (context, such as recent, high-rotation, or already in the library). Context provenance may be structured as {basis, call, ref} and is checked for internal consistency only: a non-empty string is not evidence, membership requires am_show_playlist (am_list_playlists only lists playlists), ref is required so am_recently_played(kind=added) cannot pass as recent listening, and because the label itself is free text the result is shown as a declared source, never as verified evidence. The brief argument is required and is echoed verbatim so the original request stays visible. The tool validates the set, applies user replies like 'more funk' or 'less disco' as explicit qualitative bookkeeping over three emphasis levels (soften/neutral/boost) with the user's own wording kept as a revision record, and returns a rendered line plus a direction note for the next curation round. Use it before the final write: the tags are a qualitative supplement that takes part in the next round of candidate comparison, is not a numeric score, and cannot override an explicit constraint in the brief. Read-only and offline: it touches nothing in Apple Music. / 中文:把一次策展的方向表达成约 5 个可操纵的标签,并按用户的回复改侧重。标签由你(宿主模型)写:既包括音乐本身的属性(流派/年代/织体/氛围),也包括用户行为来源(最近在听、高播放、集中循环、本就在库里、来自某个参照曲)。两个轴要分清——sonic 是音乐属性,context 是这些歌为什么在这里;context 标签必须有来源,写成 evidence {basis, call, ref}——光有非空字符串不算证据。校验的是 basis↔call↔ref 是否自洽:am_list_playlists 只列歌单名、证明不了曲目在不在里面,成员关系必须用 am_show_playlist;ref 必填且要记下调用参数,否则 am_recently_played(kind=added)(最近入库)会被当成「最近在听」。标签是自由文本,本模块无法核对它与 basis 是否相符,所以结构化来源只展示为「已声明的来源(未与标签核对)」,不声称已核实;自由文本则标成「未经校验的来源自述」。把方向展示给用户后,用户可以回 more funk / less disco / drop dark / add ambient,本工具把它做成定性记账:侧重只有 soften / neutral / boost 三档,全程没有数值权重(小数会让人误以为有精度),并保留用户原话作为修订记录。找不到的标签会报 unknown,不会静默无效果。只读且离线,不碰 Apple Music。brief 是必填:原样回传用户的原始需求,它会被回显在最前面并始终优先。边界是三层:方向标签参与下一轮候选比较(是 curation contract 的定性修订),不是数值评分,也不能推翻 brief 里的明确约束(必须/排除/参照)——冲突时以 brief 为准。因此要在最终写入之前用它,否则 steer 没有实际意义。

am_recently_playedA

Read recent listening or recently added Apple Music content when recency matters. This API does not provide play counts; use am_top_played for Replay rankings. / 中文:查最近播放。kind=tracks 是最近播放的曲目;played 是最近播放的歌单/专辑;stations 是最近听的电台;added 是最近加入音乐库的内容。注意:Apple 的这个接口不返回播放次数。

am_top_playedA

Read Apple Music Replay play-count rankings by song, album, or artist when frequency matters. Use am_recently_played for latest listening; all-time data may be unavailable, so retry with a specific year. / 中文:查播放次数排行(数据来自 Apple Music Replay / 音乐回忆的后端)。可以查 songs / albums / artists,按年份或 all-time。返回每项的播放次数、首次播放日期、最近播放日期。注意:只有 amp-api 主机可用;all-time 期间不一定存在,失败时先试具体年份。

Prompts

Interactive templates invoked by user choice

NameDescription
create_playlist_from_descriptionCurate, validate, preview, and create an Apple Music playlist from a natural-language brief. The MCP host's model chooses and compares candidates; Apple Music catalog grounding verifies them. It also surfaces about five direction tags so the user can steer the result stylistically. / 根据自然语言需求策划、校验、预演并创建 Apple Music 歌单,并给出约 5 个方向标签供用户调整。

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct action, and the descriptions explicitly cross-reference the nearest neighbor to prevent misselection (am_recently_played vs am_top_played for recency vs play counts; am_search_songs vs am_resolve_candidates for lookup vs bulk grounding; am_audit_playlist vs am_analyze_flow for metadata vs audio features; am_analyze_flow vs am_optimize_order for diagnosis vs reordering). List vs show playlist boundaries are also clearly stated. No two tools appear to do the same thing.

Naming Consistency5/5

All 14 tools use a uniform snake_case am_ prefix followed by a verb or verb_noun form (am_list_playlists, am_create_playlist, am_delete_playlist, am_search_songs, am_optimize_order). The pattern is predictable and readable throughout, with no mixed conventions.

Tool Count5/5

14 tools fall squarely in the well-scoped 3-15 range and each earns its place: status, browse, search, resolve, CRUD, and three distinct analysis tools. Nothing feels redundant or padded for the curation domain.

Completeness4/5

The surface covers the full curation lifecycle (status, browse, search, resolve, create, add, delete, audit, analyze, optimize, tag steering). The main gap is that there is no remove-tracks-from-playlist or playlist metadata update/rename operation, though these are workable via delete-and-recreate.

Maintenance

ActivityMaintained
ResponsivenessNo issues