Skip to main content
Glama
seenws

spotify-mcp

by seenws

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation5/5

    Each tool targets a clearly distinct action: searching tracks, reading listening history, listing playlists, reading a playlist's contents, creating playlists, adding tracks, and removing tracks. The descriptions further reinforce boundaries, so an agent should not confuse them.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern: search_tracks, get_my_taste, list_my_playlists, get_playlist, create_playlist, add_tracks, remove_tracks. There are no mixed conventions or vague verbs.

    Tool Count5/5

    Seven tools is well-scoped for a Spotify playlist-management server. Each tool covers a necessary step in the core workflow without redundancy or bloat.

    Completeness4/5

    The playlist workflow is well covered: discover via search/taste, list/read playlists, create playlists, and add/remove tracks. Minor gaps like renaming or deleting playlists are missing, but they are not central to the apparent purpose.

  • Average 4.2/5 across 7 of 7 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 4 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    With no annotations, the description must carry the transparency burden. It implies a read-only operation ('read this', 'listening history') and usefully discloses that recommendation/audio-feature endpoints are no longer available. However, it does not explicitly state the return shape, ranking/count behavior, or any auth/error considerations, leaving part of the behavioral contract implicit.

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

    Conciseness4/5

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

    The core purpose and workflow are front-loaded, and each sentence adds context: what the data is, when to read it, and how to use it with search_tracks. The final sentence partly repeats the earlier 'ground picks' instruction, making the description slightly longer than necessary, but it remains tight and readable.

    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 top-items getter with no output schema and no annotations, the description nicely covers when and how to use the tool in the playlist-building workflow. The main gap is that it never describes what the returned objects look like or whether they include URIs, which an agent would need to know for downstream steps.

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

    Parameters3/5

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

    Only time_range is described in the schema (33% coverage). The description adds context around 'top tracks or artists' and the notion of listening history, which gives meaning to the type parameter, but it does not add detail about limit or how the ranking is determined. The schema's enums/defaults and time_range description do some of the work, so the description provides partial but not complete compensation.

    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 names the resource ('the user's actual listening history') and the action (top tracks or artists), and differentiates it from sibling tools by positioning it as the personal-taste grounding source rather than catalog search or playlist management. The title reinforces the tracks-or-artists output, so an agent can distinguish it from search_tracks at a glance.

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

    Usage Guidelines5/5

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

    It gives explicit when-to-use guidance: read this before building an own-taste playlist, then choose similar music, then resolve picks via search_tracks. It also explains an alternative that no longer exists (recommendation/audio-feature endpoints), preventing the agent from attempting unavailable calls.

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

  • Behavior3/5

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

    No annotations exist, so the description must convey behavior itself. It conveys the scope (user's playlists), the output (IDs), and the intended read/lookup use case, but it does not explicitly state that the call is read-only or describe limitations such as pagination or an empty playlist list.

    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?

    Two sentences with no filler: the first states the result set and the second provides the decision rule. The usage guidance is front-loaded and easy for an agent to act on.

    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 parameterless list operation, the description covers the key facts: what is returned (playlists with IDs) and when to use it (find an existing playlist by user-supplied name). It stops short of documenting the full response shape or explicitly labeling the operation as read-only, but these are minor omissions given the tool's simplicity.

    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 tool has no parameters, making schema coverage vacuously complete. There is no parameter information that the description could add, so the baseline of 4 applies.

    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 identifies the resource ('the user's playlists') and signals that IDs are part of the returned data. It also clarifies the tool's role as a lookup for an existing playlist to edit, distinguishing it from creating a new one, though it never uses an explicit verb like 'lists' or 'returns.'

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

    Usage Guidelines5/5

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

    The description gives a concrete trigger: call this when the user names a playlist they want to edit, as in 'add these to my Focus playlist.' It also supplies a when-not by saying 'instead of creating a new one,' which routes the agent away from create_playlist.

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

  • Behavior3/5

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

    No annotations are provided, so the description carries the burden of behavioral disclosure. It does reveal non-obvious behavior: many URIs are accepted and 'batched automatically,' and omitting position appends to the end. However, it does not mention permissions, duplicate handling, or response/error behavior.

    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?

    Three short sentences, front-loaded with the core purpose and no filler. Each sentence adds distinct information: action, batching, and input provenance.

    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 3-parameter tool with no output schema, the description covers the main invocation concerns: required IDs, URI sourcing, and position semantics. It is slightly incomplete regarding post-conditions and error behavior, but the core call is fully specified.

    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 already documents all three parameters with 100% coverage, so the baseline is 3. The description adds value by specifying URI provenance (search_tracks), automatic batching, and the append-vs-position distinction, pushing it above baseline.

    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 opens with a specific verb and resource: 'Append tracks to a playlist (or insert at a position).' This clearly states the action and distinguishes it from siblings like remove_tracks. The title and description align.

    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?

    It provides practical usage guidance by instructing the agent to 'Get URIs from search_tracks; do not invent them.' The append/insert semantics make the intended use case clear, though it does not explicitly state when to prefer this over alternatives.

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

  • Behavior4/5

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

    With no annotations, the description carries the burden of behavioral disclosure. It clearly states what the operation returns and implies it is a non-mutating read operation through 'Read this before editing'. It does not explicitly say 'this does not modify the playlist' or mention pagination, but that is a minor gap 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?

    Two compact sentences. The first states what the tool returns, and the second explains when and why to use it. Every word contributes, and the most important information is front-loaded.

    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 single-parameter read-only tool with no output schema, the description is largely complete: it explains the return contents, the position semantics, and the practical workflow. It could add an explicit read-only statement or note about large playlists, but nothing critical is missing.

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

    Parameters3/5

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

    The only parameter, playlist_id, is already 100% documented in the schema with a helpful description ('the part after /playlist/ in a Spotify URL'). The tool description adds no additional parameter semantics, so the baseline of 3 applies.

    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 uses a specific verb ('get') and resource ('playlist contents'), and specifies exactly what is returned: full track listing with URIs and 0-based positions. This clearly distinguishes it from siblings like search_tracks, list_my_playlists, and add_tracks.

    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 provides clear context for when to use the tool: 'Read this before editing'. It connects the tool to the add/remove workflow and explains the benefit (preventing duplicate adds, removing the right tracks). It does not explicitly name alternatives or exclusion conditions, but the use case is unambiguous.

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

  • Behavior3/5

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

    With no annotations, the description carries the behavioral burden. It usefully discloses duplicate removal ('every occurrence') and automatic batching, but does not warn about irreversibility, permissions, or behavior for invalid URIs.

    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?

    Two sentences with no filler: main action first, then batching behavior, then the prerequisite call. Every sentence contributes useful information.

    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?

    Covers the essential workflow, duplicate handling, and batching for a straightforward two-parameter tool. Lacks explicit destructive-operation warnings, but the core invocation information is present.

    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?

    Schema coverage is 100%, so parameters are already well documented. The description adds value by advising the agent to verify exact URIs via get_playlist, reinforcing correct use of the uris 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?

    Description uses a specific verb and resource: remove tracks from a playlist, and explicitly notes it removes every occurrence. This clearly distinguishes it from add_tracks and other playlist-related siblings.

    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?

    Gives a concrete precondition: call get_playlist first to confirm exact URIs. It does not explicitly mention when not to use it or name add_tracks as the inverse alternative, but the intended workflow is clear.

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

  • Behavior4/5

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

    With no annotations, the description carries the full burden and discloses key behavioral quirks: Spotify query syntax, the non-existence of related endpoints, and the intended usage pattern. It doesn't cover rate limiting or auth, but provides strong context for safe invocation.

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

    Conciseness4/5

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

    Purpose is front-loaded and each sentence adds value, though slightly verbose. The description efficiently packs syntax, alternatives, and constraints without 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?

    For a simple two-param tool with no output schema, it explains the return (URIs), query syntax, and how to combine with get_my_taste. It doesn't detail response structure or error cases, but those are less critical here.

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

    Parameters3/5

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

    Schema covers one of two params (query) and description adds query syntax detail beyond the schema. The limit param is left undocumented in both schema and description, so while query semantics are enriched, the coverage gap holds the score at mid-level.

    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?

    States a specific action ('Find tracks on Spotify and get their URIs') with a clear resource and outcome. The description also explains the tool's role in the workflow, distinguishing it from playlist management siblings.

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

    Usage Guidelines5/5

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

    Explicitly instructs when to use it ('turn an artist/title into a URI') and when not to: it disclaims recommendation and audio-feature endpoints no longer exist and directs the agent to use get_my_taste for grounding. It also advises searching one track at a time.

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

  • Behavior4/5

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

    With no annotations, the description carries the full behavioral burden. It discloses that the playlist is created empty and that the response returns the playlist ID and URL. It does not mention auth requirements or broader side effects, but the core mutation and return behavior are clearly stated.

    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?

    Three concise sentences with no redundancy: the first states the core action and workflow, the second provides parameter guidance, and the third states the return values. Each sentence earns its place.

    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 3-parameter create tool with no output schema, the description covers the creation side effect, the empty playlist state, the response format, and the follow-up tool. It omits only details like privacy defaults, which are already in the schema.

    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?

    Schema coverage is low at 33%, so the description compensates by giving meaning to the required name parameter and the description parameter ('short description reflecting what the user asked for'). The public parameter is left to the schema, which already explains the default false behavior. This is a reasonable compensation.

    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?

    Description states a specific verb and resource: 'Create a new empty playlist'. It also explicitly distinguishes itself from add_tracks by signaling that this tool only creates the playlist and that tracks are added afterward. This clearly differentiates it from the sibling tools list.

    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 gives explicit workflow guidance: create the playlist first, then use add_tracks to fill it. It also instructs to name the playlist and write a short description reflecting the user request. It does not explicitly state when not to use alternatives, but the creation workflow is clear enough.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

spotify-mcp MCP server

Copy to your README.md:

Score Badge

spotify-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/seenws/spotify-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server