Skip to main content
Glama
wangkezun

qq-music-mcp

by wangkezun

QQ Music MCP Server

一个基于 MCP (Model Context Protocol) 的 QQ 音乐 API 服务器,让大语言模型能够搜索音乐、获取歌曲信息、歌词和播放链接。

安装

# 使用 pip
pip install qq-music-mcp

# 或使用 uv
uv pip install qq-music-mcp

Related MCP server: mcp_music_server

在 Claude Desktop 中使用

编辑 Claude Desktop 配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %AppData%\Claude\claude_desktop_config.json

添加以下配置:

{
  "mcpServers": {
    "qq-music": {
      "command": "uvx",
      "args": ["qq-music-mcp"]
    }
  }
}

或者如果使用 pip 安装:

{
  "mcpServers": {
    "qq-music": {
      "command": "qq-music-mcp"
    }
  }
}

然后重启 Claude Desktop。

功能

提供以下 MCP Tools:

Tool 名称

描述

search_music

搜索歌曲、专辑、歌单等

get_song_detail

获取歌曲详情

get_song_quality

获取歌曲可用音质

get_lyric

获取歌词

get_song_url

获取单首歌曲播放链接

get_batch_song_urls

批量获取歌曲播放链接

get_album_detail

获取专辑详情

get_album_songs

获取专辑歌曲列表

get_playlist_detail

获取歌单详情

get_album_cover

获取专辑封面 URL

VIP 内容访问

如需获取 VIP 歌曲的高品质播放链接,请设置环境变量:

export QQ_MUSIC_COOKIE="your_qq_music_cookie_here"

或在 Claude Desktop 配置中添加:

{
  "mcpServers": {
    "qq-music": {
      "command": "uvx",
      "args": ["qq-music-mcp"],
      "env": {
        "QQ_MUSIC_COOKIE": "your_cookie_here"
      }
    }
  }
}

获取 Cookie 的步骤:

  1. 打开浏览器访问 https://y.qq.com

  2. 登录你的 QQ 账号

  3. 打开开发者工具 (F12) -> Application -> Cookies

  4. 复制完整的 Cookie 字符串

音质类型说明

音质代码

说明

m4a

AAC 格式

128

128kbps MP3

320

320kbps MP3

flac

FLAC 无损

ape

APE 无损

hires

臻品母带 (24bit/192kHz)

atmos

臻品全景声 (Dolby Atmos)

开发

# 克隆项目
git clone https://github.com/yourusername/qq-music-mcp.git
cd qq-music-mcp

# 安装依赖
uv sync

# 运行测试
uv run mcp dev src/qq_music_api/server.py

作为 Python 库使用

import asyncio
from qq_music_api import QQMusicClient

async def main():
    async with QQMusicClient() as client:
        # 搜索歌曲
        result = await client.search("周杰伦")
        print(result)

        # 获取歌词
        lyric = await client.get_lyric("000paPeF1SZp2I")
        print(lyric)

asyncio.run(main())

许可证

MIT

Available Tools

10 tools
get_album_coverA

获取专辑封面图片 URL

Args: album_mid: 专辑的 MID 标识符 size: 图片尺寸,常用值: 150, 300, 500

Returns: 专辑封面图片的 URL

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
album_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the behavioral disclosure burden. It states the tool returns a URL, implying a read-only operation, but it does not address error cases, URL persistence, or any prerequisites. This is adequate but not rich for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with an Args/Returns format. It front-loads the primary purpose and includes only necessary details without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool, the description covers purpose, parameters, and return value adequately. It is complete for a read-only URL getter. Minor gaps include not referencing sibling tools or explaining where album_mid originates, but these do not significantly hinder usability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage, but the description explains album_mid as the album MID identifier and lists common size values (150, 300, 500). This adds meaningful semantics beyond the schema, though the default size is not mentioned in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '获取专辑封面图片 URL' (Get album cover image URL), naming a specific verb and resource. This distinguishes it from sibling tools like get_song_url or get_album_detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving album cover URLs but does not explicitly state when to use this tool over alternatives. No exclusions or cross-references to siblings are provided, making the usage guidance merely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_album_detailB

获取专辑详情

Args: album_mid: 专辑的 MID 标识符

Returns: 专辑详情的 JSON 字符串,包含专辑名、歌手、发行日期、描述、歌曲数量等

ParametersJSON Schema
NameRequiredDescriptionDefault
album_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description partially discloses output behavior by listing return fields (album name, artist, release date, description, song count). However, it does not mention whether the operation is read-only, if authentication is needed, or any error/rate-limit behavior, leaving common concerns unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with an Args/Returns layout. The purpose is front-loaded in the first line, and every sentence provides necessary information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and has an output schema, so the description need not detail return structure. However, it omits usage guidelines and fails to contextualize album_mid sufficiently, making it only minimally viable for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%, so the description must compensate. It explains 'album_mid' as '专辑的 MID 标识符' (album's MID identifier), which is only slightly more informative than the schema title. It does not explain what a MID is or how to obtain it, leaving a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with '获取专辑详情' (get album details), a specific verb+resource pair that clearly distinguishes it from siblings like get_album_songs and get_album_cover. It leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. Given the set of sibling tools (e.g., get_album_songs, get_song_detail), the description should explicitly differentiate or state selection criteria, but it does not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_album_songsA

获取专辑的歌曲列表

Args: album_mid: 专辑的 MID 标识符

Returns: 专辑歌曲列表的 JSON 字符串

ParametersJSON Schema
NameRequiredDescriptionDefault
album_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return format (JSON string of the song list) which is useful, but does not mention any side effects, authentication requirements, or error conditions. For a simple read-only getter, this is minimally transparent but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, with a clear title, Args, and Returns sections. It contains no redundant information and is well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one required parameter, no nested objects) and the presence of an output schema, the description is nearly complete. It covers the input and output format adequately, though it could briefly mention usage context or alternatives to fully round out the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter album_mid is described in the Args section as '专辑的 MID 标识符' (album's MID identifier), adding clear meaning beyond the schema's bare title. This fully compensates for the 0% schema description coverage, leaving no ambiguity about the parameter's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '获取专辑的歌曲列表' (get album song list), using a specific verb and resource. It distinguishes itself from sibling tools like get_album_detail and get_album_cover by focusing on the song list rather than album details or cover art.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the input (album MID) and output (song list), but provides no explicit guidance on when to use this tool versus siblings like get_song_detail or search_music. There are no exclusions or alternative suggestions, so it falls to implied usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_batch_song_urlsA

批量获取多首歌曲的播放链接

Args: mids: 多个歌曲 MID,用逗号分隔,例如 "mid1,mid2,mid3" quality: 音质类型,可选值: - m4a: AAC 格式 - 128: 128kbps MP3 (默认) - 320: 320kbps MP3 - flac: FLAC 无损 - ape: APE 无损 - hires: 臻品母带 - atmos: 臻品全景声

Returns: 播放链接列表的 JSON 字符串

ParametersJSON Schema
NameRequiredDescriptionDefault
midsYes
qualityNo128

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return type (JSON string) and input format, which is useful. However, it does not mention error handling, partial success behavior for invalid MIDs, authentication requirements, or potential rate limits, leaving some behavioral uncertainty for a batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a concise summary, Args section, and Returns section. Every line delivers essential information (parameter syntax, quality options, return format) without unnecessary text or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two parameters and a simple return, the description covers all necessary invocation details: how to provide mids, quality choices, and the response format. It lacks information on failure modes or edge cases (e.g., what happens if a MID is invalid), but it is adequate for a straightforward batch URL fetcher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description thoroughly explains both parameters: mids is comma-separated and quality has a full enum with human-readable meanings (e.g., 128 as 128kbps MP3, hires as 臻品母带). This adds significant meaning beyond the raw schema, which only lists enum values without explanations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('批量获取' - batch get), the resource ('播放链接' - playback URLs), and the scope (multiple songs). It distinguishes itself from sibling get_song_url by emphasizing batch operation, so the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the tool is for fetching multiple song URLs at once (批量), which implies it should be used when you need several links in one call, whereas single-link retrieval would use get_song_url. It provides clear context but does not explicitly mention alternatives or exclusion cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lyricB

获取歌词

Args: song_mid: 歌曲的 MID 标识符

Returns: 歌词的 JSON 字符串,包含原歌词和翻译歌词(如有)

ParametersJSON Schema
NameRequiredDescriptionDefault
song_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return value (JSON with original and translated lyrics) but does not explicitly state that this is a read-only operation or discuss error handling, permissions, or side effects. The expected output is somewhat transparent, but more context would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using a clear 'Args' and 'Returns' structure. It is front-loaded with the main action and each line provides necessary information without redundancy. No filler or irrelevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter get tool, the description covers the purpose, parameter, and return format. It is adequate for basic use, but lacks guidance on edge cases, prerequisites, or when to opt for alternative tools. The presence of an output schema reduces the need to explain return values, but usage context is still missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only provides the title 'Song Mid' with no description. The tool description adds '歌曲的 MID 标识符' (song's MID identifier), which gives the parameter clear meaning and purpose. This compensates for the schema's lack of detail, making the parameter understandable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with '获取歌词' (Get lyrics), which clearly identifies the action and resource. The parameter 'song_mid' further specifies the target. However, it does not explicitly differentiate from sibling tools like get_song_detail, though the resource is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any context, exclusions, or alternatives such as get_song_detail. Users are left to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_playlist_detailC

获取歌单详情和歌曲列表

Args: playlist_id: 歌单 ID(数字)

Returns: 歌单详情和歌曲列表的 JSON 字符串

ParametersJSON Schema
NameRequiredDescriptionDefault
playlist_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the return format (JSON string) but does not mention whether the operation is read-only, potential side effects, error conditions, or authentication requirements. With no annotations, this leaves significant behavioral aspects unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with a clear purpose statement and well-organized Args and Returns sections. It contains no redundant information and is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter, and the description covers its basic purpose and return value. However, it lacks usage guidelines, alternative tool references, or any caveats, making it only minimally complete for a selection/decision scenario.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description restates the schema's type information (numeric ID) without adding deeper semantic context, such as how to obtain the ID or any constraints. Given 0% schema description coverage, this is minimal compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches playlist details and the song list, using a specific verb and resource. It inherently distinguishes from sibling tools that target songs or albums, though it does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool instead of alternatives, nor any mention of prerequisites or exclusions. It simply states what the tool does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_song_detailA

获取歌曲详情

Args: song_mid: 歌曲的 MID 标识符

Returns: 歌曲详情的 JSON 字符串,包含歌曲名、歌手、专辑、时长、可用音质等信息

ParametersJSON Schema
NameRequiredDescriptionDefault
song_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the output format (JSON string with specific fields) and the input requirement. However, it does not mention edge cases like missing/invalid song_mid, authentication requirements, or any rate limits. While 'get' implies a read-only operation, this is not explicitly stated. The description provides adequate but not complete transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a one-line purpose statement followed by two short sections for Args and Returns. Every sentence contributes useful information, and the format is well-structured with clear labels. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with a single parameter, and the description covers purpose, input, and output. It does not provide examples or error scenarios, but given the low complexity and the presence of an output schema, the description is sufficiently complete. A slightly fuller description might mention expected error behavior, but this is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only the parameter name and type (string), with no description. The tool description fills this gap by explaining song_mid as '歌曲的 MID 标识符' (the song's MID identifier), which gives meaningful context about what the parameter represents. This adds value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '获取歌曲详情' (get song details) and enumerates the return fields (song name, singer, album, duration, available quality), making it distinct from sibling tools like get_song_quality and get_song_url. The verb-resource pairing is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives or situations where get_song_quality, get_song_url, or get_lyric would be more appropriate. The only implication is that this tool is for general details, but that is not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_song_qualityA

获取歌曲可用的音质列表

Args: song_mid: 歌曲的 MID 标识符

Returns: 可用音质列表的 JSON 字符串。音质类型包括: - m4a: AAC 格式 - 128: 128kbps MP3 - 320: 320kbps MP3 - flac: FLAC 无损 - ape: APE 无损 - hires: 臻品母带 (24bit/192kHz) - atmos: 臻品全景声 (Dolby Atmos)

ParametersJSON Schema
NameRequiredDescriptionDefault
song_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavior. It explains the return format (JSON string listing qualities) and defines each quality type (m4a, 128, 320, flac, ape, hires, atmos). However, it does not mention error behavior, empty results, or any permission/membership requirements for high-quality formats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line main purpose, followed by Args and Returns sections. The quality type enumeration adds valuable context without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool, the description covers purpose, parameter meaning, and return value semantics thoroughly, including the quality type lexicon. The existence of an output schema reduces the need to describe the return structure. It only omits edge-case behavior like invalid song_mid or empty list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no description for song_mid (0% coverage). The description compensates by stating 'song_mid: 歌曲的 MID 标识符' (song's MID identifier), which is key semantic information. It lacks a format example but is sufficient for this simple parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb '获取' (get) and a clear resource: '歌曲可用的音质列表' (song's available quality list). This clearly distinguishes it from siblings like get_song_url and get_batch_song_urls, which deal with actual URLs rather than quality options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this tool when you need the available audio quality list for a song, given a song_mid. However, it does not explicitly mention alternatives or when not to use it, such as 'use get_song_url to obtain the actual playback URL'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_song_urlA

获取单首歌曲的播放链接

Args: song_mid: 歌曲的 MID 标识符 quality: 音质类型,可选值: - m4a: AAC 格式 - 128: 128kbps MP3 (默认) - 320: 320kbps MP3 - flac: FLAC 无损 - ape: APE 无损 - hires: 臻品母带 - atmos: 臻品全景声

Returns: 播放链接的 JSON 字符串。注意:高品质音源可能需要 VIP 权限

ParametersJSON Schema
NameRequiredDescriptionDefault
qualityNo128
song_midYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It notes that high-quality audio may require VIP permission, which is useful. However, it does not disclose error behavior, rate limits, or authentication needs. The return format is mentioned, but additional operational details are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args and Returns sections, each fact earning its place. It is concise, uses bullet points for enum values, and avoids unnecessary prose. The inclusion of the default in both schema and description is a minor redundancy but does not detract from overall clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two params, one with enum) and the presence of an output schema, the description is fairly complete. It covers parameter meanings, the VIP caveat, and return format. It does not explain why a single-song URL would be preferred over batch retrieval, but that is not critical for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the schema by explaining each quality enum value (e.g., m4a: AAC, 128: 128kbps MP3) and clarifying song_mid as the song's MID identifier. While the schema already lists enums and defaults, the description enriches the semantic understanding, compensating for the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb '获取' (get) and resource '单首歌曲的播放链接' (single song's playback link), distinguishing it from siblings like get_batch_song_urls (batch) and get_song_quality (quality info). It is specific and leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention compatibility with other functions, prerequisites, or exclusion criteria. While the single-song scope is implied, there is no explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_musicB

搜索 QQ 音乐

Args: keyword: 搜索关键词 search_type: 搜索类型,可选值: song(歌曲), album(专辑), playlist(歌单), mv, lyric(歌词), user(用户) page: 页码,从1开始 page_size: 每页数量,默认20

Returns: 搜索结果的 JSON 字符串

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
keywordYes
page_sizeNo
search_typeNosong

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must disclose behavioral traits. However, it only states that it returns a JSON string of search results. It does not mention authentication requirements, rate limits, pagination behavior beyond page parameters, or whether the operation is read-only. This lack of behavioral context leaves the agent uncertain about side effects or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally well-structured: a one-line purpose statement followed by a clean Args block and a Returns line. Every sentence is informative with no redundancy or fluff. The front-loaded purpose and clear sectioning make it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, 1 required) and the presence of an output schema, the description covers all necessary inputs and the return type. It explains the search types and pagination parameters. However, it lacks any additional context such as whether results are limited by default or how to handle errors, so it falls just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions for any parameters (coverage 0%), so the description carries the full burden. It explains each parameter in Chinese: keyword as search keyword, search_type with enumerated valid values, page starting from 1, and page_size defaulting to 20. This adds meaning beyond the raw schema titles and enums, though it could mention the default for page explicitly and clarify the return structure slightly more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '搜索 QQ 音乐' (Search QQ Music). It specifies a concrete verb (search) and resource (QQ Music), and the Args list further clarifies it supports multiple search types (song, album, playlist, mv, lyric, user). While it does not explicitly differentiate from sibling tools like get_song_detail or get_lyric, the distinct search operation and resource are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is the entry point for finding content before fetching details, nor does it reference sibling tools or exclusion scenarios. Usage is only implied by the tool name and sibling getter functions, which is insufficient for effective decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedget_album_cover
    • First observedget_album_detail
    • First observedget_album_songs
    • First observedget_batch_song_urls
    • First observedget_lyric
    • First observedget_playlist_detail
    • First observedget_song_detail
    • First observedget_song_quality
    • First observedget_song_url
    • First observedsearch_music

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Most tools map to distinct resources and actions, but get_song_quality duplicates part of get_song_detail (which already includes available qualities), and get_album_cover is a subset of get_album_detail. This creates some ambiguity about which tool to use for quality/cover information.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: search_music, get_song_detail, get_song_url, get_album_cover, etc. No mixed conventions.

Tool Count5/5

10 tools falls comfortably in the ideal range for a music API server. Each tool addresses a specific aspect of music discovery, metadata, and playback without being bloated.

Completeness4/5

Core music workflows (search, song detail, quality, URL, lyrics, album info, playlist info) are covered. However, search_music supports MV and user searches but there are no corresponding get_mv_detail or get_user_profile tools, creating dead ends for those search types.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI assistants to search and retrieve music data (songs, lyrics, playlists, albums, artists) from Netease Cloud Music.
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Multi-source music search and playback MCP server supporting QQ Music, NetEase Cloud, and local files with playlist management.
    3
    2
    MIT