SpotifyMCP
Allows creating playlists and searching songs on Spotify.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SpotifyMCPcreate a playlist called 'Summer Hits' with songs by Dua Lipa"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SpotifyMCP MCP Server
This is a TypeScript-based MCP server for Spotify based on the Model Context Protocol.
Features
Tools
create_playlist- Create a new Spotify playlist.Takes name, description, tracks, and public status as parameters.
Returns the URI of the created playlist.
Prompts
search_songs- Search for songs on Spotify.Takes a search query and an optional limit for results.
Related MCP server: MCP Spotify Player
Development
Install dependencies:
npm installBuild the server:
npm run buildFor development with auto-rebuild:
npm run watchInstallation
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"SpotifyMCP": {
"command": "node",
"args": [
"/Users/your_username/Documents/SideProjects/MCPs/spotify-mcp/build/index.js"
],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REFRESH_TOKEN": "your_refresh_token_here"
}
},
}
}Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspectorThe Inspector will provide a URL to access debugging tools in your browser.
Setup Instructions
Create a Spotify Developer Account
Visit Spotify Developer and create an account.Create a New Application
After logging in, create a new application to obtain your Client ID and Client Secret.Set Up Redirect URI
In your Spotify application settings, configure the redirect URI to:http://localhost:8888/callbackCreate a
.envFile
In the root of your project, create a.envfile and add the following environment variables:SPOTIFY_CLIENT_ID=your_client_id_here SPOTIFY_CLIENT_SECRET=your_client_secret_here SPOTIFY_REDIRECT_URI=http://localhost:8888/callbackGet Your Spotify Token
Run the following command to obtain your Spotify token:npx ts-node src/scripts/get-spotify-token.tsLogin to Your Application
Visit http://localhost:8888/login in your browser Copy the refresh token and set it in your environment variables: SPOTIFY_REFRESH_TOKEN=your_refresh_token_here
Available Tools
2 toolscreate_playlistB
Create a new Spotify playlist and return the URI to ALWAYS present to the user as a hyperlink
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the playlist | |
| description | No | Description of the playlist | |
| tracks | Yes | Array of Spotify track URIs | |
| public | No | Whether the playlist should be public |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavior. It mentions returning a URI and instructs to present it as a hyperlink, but lacks details on side effects, required permissions, rate limits, or what happens if the playlist creation fails. The description is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the core action and key instruction concisely. It wastes no words, though it could potentially add more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering the lack of annotations and output schema, and the presence of 4 parameters (2 required), the description is minimal. It explains the return value (URI) and user instruction, but omits details about parameter effects (e.g., public defaults) and potential errors. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 4 parameters, so the schema already documents each parameter. The description does not add additional meaning or context beyond the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create', the resource 'Spotify playlist', and the action 'return the URI'. It also provides an instruction to present the URI as a hyperlink, which is specific and useful. The purpose is distinct from the sibling tool 'search_songs'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it provide conditions for when not to use it. However, the sibling tool 'search_songs' is clearly for searching, so usage is implied. No guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_songsC
Search for songs on Spotify
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (song name, artist, etc.) | |
| limit | No | Maximum number of results (1-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavior. It only states it searches, implying a read operation, but fails to disclose any details about authentication, rate limits, result limits, or what happens with empty queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise and front-loaded. However, it may be too brief, lacking important context that could be added without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal description, essential context about return format, pagination, or usage limits is absent. The description is incomplete for a search tool that likely returns multiple results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add param details. The description adds no additional meaning beyond the schema, but since the schema is clear, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search for songs on Spotify' clearly identifies the verb (search) and resource (songs on Spotify). While it does not explicitly differentiate from siblings, 'create_playlist' is a distinct action, so no confusion arises.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 or any prerequisites. For instance, it does not mention that this tool is for searching existing content, unlike 'create_playlist' which creates new content.
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. Dates show when Glama detected each change.
2 tool updates
v0.2.0- First observed
create_playlist - First observed
search_songs
TDQS
The two tools have clearly distinct purposes: one creates playlists, the other searches for songs. There is no overlap or ambiguity.
Both tool names follow a consistent verb_noun pattern (create_playlist, search_songs) with clear and predictable structure.
With only 2 tools, the surface is too thin for a comprehensive music service like Spotify. This falls in the borderline range for tool count.
The set lacks many essential operations such as playing music, managing playlists (get, update, delete), and user library actions, leaving significant gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Streamline your Attio workflows using natural language to search, create, update, and organize com…
Create, inspect, and manage Wubble music, speech, voice, and sound-effect requests through MCP.
Search speech in podcasts, government meetings, and your own audio: speakers, entities, timestamps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates with Spotify Web API through the Model Context Protocol, allowing users to search tracks, control playback, and manage playlists programmatically.109MIT
- AlicenseNot gradedqualityCmaintenanceControl Spotify directly from your AI assistant using the Model Context Protocol.21MIT
- AlicenseAqualityCmaintenanceEnables searching, managing playlists, getting recommendations, and downloading music from TIDAL through natural language commands via the Model Context Protocol.16MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables searching and managing Spotify music, playlists, artists, albums, and audiobooks through natural language.35MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/carllapierre/spotify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server