MCP Spotify Server
The MCP Spotify Server enables LLMs to interact with Spotify across four main areas:
Authentication: Initiate and complete OAuth2 login with Spotify (
spotify_auth,spotify_set_tokens)Search: Search for tracks, artists, albums, or playlists by query, with configurable result limits (
spotify_search)Playback Control:
Play a specific track (
spotify_play) or playlist (spotify_play_playlist)Pause (
spotify_pause), resume (spotify_resume), skip to next (spotify_next), or go to previous (spotify_previous)Get currently playing track info (
spotify_current_playing)List available playback devices (
spotify_devices)Target specific devices via an optional
device_idparameter
Playlist Management: List playlists (
spotify_playlists), create new playlists with name/description/visibility settings (spotify_create_playlist), and add tracks to existing playlists (spotify_add_tracks_to_playlist)
Provides comprehensive Spotify integration with OAuth2 authentication, music search capabilities, playback control (play, pause, skip), current track information, device management, and playlist management and playback functionality.
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., "@MCP Spotify Serverplay some chill lo-fi beats"
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.
🎵 MCP Spotify Server
Um servidor MCP (Model Context Protocol) que permite interagir com o Spotify através de LLMs. Este servidor fornece ferramentas para buscar música, controlar reprodução, gerenciar playlists e muito mais.
🚀 Funcionalidades
Autenticação OAuth2 com Spotify
Busca por músicas, artistas, álbuns e playlists
Controle de reprodução (tocar, pausar, próximo, anterior)
Informações da música atual
Gerenciamento de dispositivos
Listagem e reprodução de playlists
Related MCP server: Spotify MCP Node Server
📋 Pré-requisitos
Node.js (versão 18 ou superior)
Conta Spotify (Premium recomendado para funcionalidade completa)
Aplicação Spotify registrada no Spotify Developer Dashboard
ngrok (para expor o servidor local)
🛠️ Instalação
Clone o repositório:
git clone https://github.com/fborello/MCPSpotify.git cd MCPSpotifyInstale as dependências:
npm installInstale o ngrok:
macOS (com Homebrew):
brew install ngrok/ngrok/ngrokWindows (com Chocolatey):
choco install ngrokLinux:
# Baixe o binário do site oficial curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list sudo apt update && sudo apt install ngrokOu baixe diretamente do site oficial
Configure as variáveis de ambiente:
cp env.example .envEdite o arquivo
.envcom suas credenciais:SPOTIFY_CLIENT_ID=seu_client_id_aqui SPOTIFY_CLIENT_SECRET=seu_client_secret_aqui SPOTIFY_REDIRECT_URI=http://localhost:3000/callbackConfigure o MCP (opcional):
Para Claude Desktop:
cp configs/claude-desktop.example.json ~/.claude-desktop/config.json # Edite o arquivo com seu caminho e credenciaisPara Cursor:
cp configs/cursor.example.json ~/.cursor/mcp.json # Edite o arquivo com seu caminho e credenciaisPara outros clientes MCP:
cp mcp-config.example.json mcp-config.json # Edite o arquivo com seu caminho e credenciais
🔧 Configuração do Spotify
Acesse o Spotify Developer Dashboard
Clique em "Create App"
Preencha os dados:
App name: MCP Spotify Server
App description: Servidor MCP para integração com Spotify
Após criar, copie o Client ID e Client Secret
Clique em "Edit Settings" e adicione
http://localhost:3000/callbacknas Redirect URIs
🌐 Configuração do ngrok
Para que o OAuth do Spotify funcione corretamente, você precisa expor seu servidor local para a internet. O ngrok é a ferramenta recomendada para isso.
1. Crie uma conta no ngrok (opcional mas recomendado)
Acesse ngrok.com e crie uma conta gratuita
Isso permite URLs estáveis e remove limitações de tempo
2. Configure o ngrok
# Autentique sua conta (opcional)
ngrok config add-authtoken SEU_TOKEN_AQUI
# Exponha a porta 8080
ngrok http 80803. Atualize a Redirect URI
Copie a URL HTTPS fornecida pelo ngrok (ex:
https://abc123.ngrok.io)No Spotify Dashboard, adicione
https://abc123.ngrok.io/callbacknas Redirect URIsAtualize seu arquivo
.env:SPOTIFY_REDIRECT_URI=https://abc123.ngrok.io/callback
4. Inicie o servidor
# Em um terminal, mantenha o ngrok rodando
ngrok http 8080
# Em outro terminal, inicie o servidor
npm run dev🚀 Uso
Desenvolvimento
# Terminal 1: Inicie o ngrok
ngrok http 8080
# Terminal 2: Inicie o servidor
npm run devProdução
npm run build
npm start🎯 Ferramentas Disponíveis
Autenticação
spotify_auth- Inicia o processo de autenticaçãospotify_set_tokens- Finaliza a autenticação com ocodede retorno
Busca
spotify_search- Busca por músicas, artistas, álbuns ou playlists
Controle de Reprodução
spotify_play- Toca uma música específicaspotify_pause- Pausa a reproduçãospotify_resume- Retoma a reproduçãospotify_next- Pula para a próxima músicaspotify_previous- Volta para a música anterior
Informações
spotify_current_playing- Obtém informações sobre a música atualspotify_devices- Lista dispositivos disponíveisspotify_playlists- Lista playlists do usuário
Playlists
spotify_play_playlist- Toca uma playlist específica
📝 Exemplos de Uso
Fluxo de Autenticação
Iniciar o login (vai abrir o navegador)
{
"name": "spotify_auth",
"arguments": {}
}Depois de autorizar no Spotify, copie o
coderetornado e finalize:
{
"name": "spotify_set_tokens",
"arguments": { "code": "SEU_CODE_AQUI" }
}Buscar uma música
{
"name": "spotify_search",
"arguments": {
"query": "Bohemian Rhapsody",
"type": "track",
"limit": 5
}
}Tocar uma música
{
"name": "spotify_play",
"arguments": {
"track_id": "4uLU6hMCjMI75M1A2tKUQC"
}
}Buscar playlists
{
"name": "spotify_playlists",
"arguments": {
"limit": 10
}
}✅ Validar o Servidor MCP
Para verificar se o servidor está configurado corretamente:
npm run validateEste comando irá:
✅ Verificar se o build existe
✅ Validar o arquivo
.env✅ Checar variáveis de ambiente
✅ Mostrar a configuração correta para o cliente MCP
Configuração do Cliente MCP
Após validar, você pode usar a configuração sugerida pelo script no seu arquivo de configuração do cliente:
Para Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/caminho/para/MCPSpotify",
"env": {
"SPOTIFY_CLIENT_ID": "seu_client_id",
"SPOTIFY_CLIENT_SECRET": "seu_client_secret",
"SPOTIFY_REDIRECT_URI": "sua_redirect_uri"
}
}
}
}Para Claude Desktop (~/.claude-desktop/config.json):
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/caminho/para/MCPSpotify",
"env": {
"SPOTIFY_CLIENT_ID": "seu_client_id",
"SPOTIFY_CLIENT_SECRET": "seu_client_secret",
"SPOTIFY_REDIRECT_URI": "sua_redirect_uri"
}
}
}
}Importante:
Use
node dist/index.js(nãotsx src/index.ts) para produçãoCertifique-se de que o caminho
cwdestá corretoInclua as variáveis de ambiente no arquivo de configuração
Após alterar a configuração, reinicie o cliente MCP
🔒 Segurança
As credenciais do Spotify são armazenadas apenas localmente
Os tokens de acesso são renovados automaticamente
Nenhuma informação é enviada para servidores externos (exceto Spotify)
🐛 Solução de Problemas
Erro de Autenticação
Verifique se as credenciais no
.envestão corretasConfirme se a Redirect URI está configurada no Spotify Dashboard
Certifique-se de que o ngrok está rodando e a URL está atualizada no
.envVerifique se a URL do ngrok no Spotify Dashboard corresponde à URL no arquivo
.env
Erro "Cannot find module" ou caminho incorreto
Erro:
Cannot find module '/Users/.../src/index.ts'Solução: Use
node dist/index.jsao invés detsx src/index.tsno arquivo de configuração do MCPExecute
npm run buildantes de usar o servidorCertifique-se de que o
cwdno arquivo de configuração aponta para o diretório correto do projetoExecute
npm run validatepara gerar a configuração correta
Dispositivo Não Encontrado
Certifique-se de que o Spotify está aberto em algum dispositivo
Verifique se o dispositivo está ativo na sua conta Spotify
Erro de Permissões
Algumas funcionalidades requerem Spotify Premium
Verifique se todas as permissões foram concedidas durante a autenticação
Problemas com ngrok
URL muda a cada reinicialização: Use uma conta ngrok gratuita para URLs estáveis
Erro de conexão: Verifique se o ngrok está rodando na porta correta (3000)
Timeout: Certifique-se de que o servidor está rodando antes de iniciar o ngrok
URL não acessível: Verifique se o firewall não está bloqueando a conexão
📄 Licença
MIT License - veja o arquivo LICENSE para detalhes.
🤝 Contribuição
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
📞 Suporte
Se você encontrar problemas ou tiver dúvidas, abra uma issue no repositório.
Available Tools
14 toolsspotify_add_tracks_to_playlistC
Adiciona músicas a uma playlist existente
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | ID da playlist no Spotify | |
| track_ids | Yes | Array com os IDs das músicas para adicionar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'adiciona' implies a write/mutation operation, the description doesn't disclose important behavioral traits: whether authentication is required, rate limits, what happens if tracks already exist in the playlist, error conditions, or what the response looks like. It provides only the basic action without operational context.
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 extremely concise - a single Portuguese sentence that directly states the tool's purpose. There's zero waste or redundancy, and it's front-loaded with the essential information. Every word earns its place.
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?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address authentication requirements (critical given the sibling 'spotify_auth' tool), doesn't explain what happens on success/failure, and provides no context about the Spotify API's behavior. The description should do more to compensate for the lack of structured metadata.
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?
With 100% schema description coverage, the schema already documents both parameters thoroughly. The description doesn't add any meaningful semantic context beyond what's in the schema - it doesn't explain format requirements, constraints, or provide examples. The baseline of 3 is appropriate when the schema does the heavy lifting.
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 action ('Adiciona' - adds) and target resource ('músicas a uma playlist existente' - tracks to an existing playlist), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential alternatives like 'spotify_create_playlist' which might also add tracks during creation, or clarify if this is the only way to add tracks versus other methods.
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. It doesn't mention prerequisites (like authentication), doesn't specify when to use this versus 'spotify_create_playlist' for new playlists, and offers no context about limitations or best practices for adding tracks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_authB
Inicia o processo de autenticação com o Spotify
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states the tool initiates authentication but doesn't describe what this entails (e.g., opening a browser, returning tokens, requiring user interaction, or handling errors). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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, efficient sentence in Portuguese that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.
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?
Given the complexity of an authentication tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., tokens, URLs, or status), how it interacts with the user, or any behavioral traits like rate limits or errors, leaving the agent with insufficient context for effective use.
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 tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't add parameter details beyond what the schema provides, but with no parameters, a baseline of 4 is appropriate as there's nothing to compensate for.
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 action ('Inicia o processo de autenticação') and the target resource ('com o Spotify'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like 'spotify_set_tokens', but the verb 'inicia' suggests starting a process rather than setting tokens directly, which provides some implicit distinction.
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 like 'spotify_set_tokens', nor does it mention prerequisites or context for authentication. It implies usage for authentication but lacks explicit when/when-not instructions or references to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_create_playlistC
Cria uma nova playlist no Spotify
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | Descrição da playlist (opcional) | |
| name | Yes | Nome da playlist | |
| public | No | Se a playlist deve ser pública (padrão: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it creates a playlist but doesn't disclose behavioral traits like required permissions, whether it's idempotent, error handling, or what the response includes. This is a significant gap for a mutation tool with zero annotation coverage.
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, efficient sentence in Portuguese with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.
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?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects, prerequisites, and expected outcomes, making it inadequate for an AI agent to fully understand how to invoke it correctly.
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 description coverage is 100%, so the schema already documents all three parameters (name, description, public) with descriptions. The description adds no additional meaning beyond what the schema provides, meeting the baseline of 3 when schema does the heavy lifting.
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 'Cria uma nova playlist no Spotify' clearly states the action (creates) and resource (new playlist on Spotify) in Portuguese. It's specific about what the tool does, though it doesn't explicitly differentiate from sibling tools like 'spotify_playlists' which likely lists playlists rather than creates them.
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. It doesn't mention prerequisites (e.g., authentication via spotify_auth), exclusions, or contextual cues for choosing this over other playlist-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_current_playingB
Obtém informações sobre a música que está tocando
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool gets information, implying a read-only operation, but doesn't specify what information is returned (e.g., track name, artist, album), whether it requires active playback, error handling (e.g., if nothing is playing), or rate limits. This leaves significant gaps for an agent to understand the tool's behavior.
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, efficient sentence in Portuguese that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('Obtém informações'), making it easy to parse. Every part of the sentence earns its place by conveying essential intent.
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?
Given the tool's complexity (simple read operation) but lack of annotations and no output schema, the description is incomplete. It doesn't explain what information is returned (e.g., JSON structure), error conditions, or dependencies like authentication. For a tool that interacts with an external service (Spotify), more context is needed to use it effectively.
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 tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it naturally meets the baseline. It doesn't add or detract from parameter understanding, as there are none to document.
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 'Obtém informações sobre a música que está tocando' clearly states the tool's purpose: to get information about the currently playing music. It uses a specific verb ('Obtém') and resource ('música que está tocando'), making the intent unambiguous. However, it doesn't explicitly differentiate from siblings like 'spotify_devices' or 'spotify_playlists', which also provide information but about different resources.
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. It doesn't mention prerequisites (e.g., requires authentication via 'spotify_auth'), context (e.g., only works if music is actively playing), or exclusions (e.g., not for historical playback data). With siblings like 'spotify_search' for finding tracks, clear usage distinctions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_devicesB
Lista dispositivos disponíveis para reprodução
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists devices but does not describe what the list includes (e.g., device names, types, status), how it's formatted, whether it requires authentication, or any rate limits. This is a significant gap for a tool with zero annotation coverage.
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, clear sentence in Portuguese ('Lista dispositivos disponíveis para reprodução') that directly states the tool's function without any wasted words. It is appropriately sized and front-loaded, making it highly efficient.
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?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what the output looks like (e.g., list format, device attributes), behavioral aspects like authentication requirements, or how it integrates with sibling tools (e.g., used before 'spotify_play'). For a tool in a complex Spotify API context, this leaves critical gaps.
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 tool has 0 parameters, and schema description coverage is 100%, so there is no need for parameter details in the description. The baseline for 0 parameters is 4, as the description appropriately avoids unnecessary parameter information and focuses on the tool's purpose.
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 'Lista dispositivos disponíveis para reprodução' clearly states the tool's purpose as listing available playback devices, using specific verbs ('Lista') and resources ('dispositivos'). However, it does not explicitly differentiate from sibling tools like 'spotify_play' or 'spotify_pause', which are control tools rather than listing tools, so it falls short of a perfect score.
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. It does not mention prerequisites (e.g., authentication status), scenarios for use (e.g., before selecting a device for playback), or exclusions, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_nextC
Pula para a próxima música
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | ID do dispositivo (opcional) |
TDQS
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 states the action ('skip to the next song') but does not mention side effects (e.g., if it advances playback queue, requires active playback, or affects shuffle/repeat modes), permissions needed, or error conditions. This leaves significant gaps in understanding the tool's behavior beyond the basic action.
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, direct sentence in Portuguese that efficiently conveys the core action without any fluff or unnecessary details. It is front-loaded and appropriately sized for a simple tool, with every word earning its place.
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?
Given the tool's moderate complexity (a playback control action with one optional parameter) and lack of annotations or output schema, the description is incomplete. It does not address behavioral aspects like side effects, error handling, or interaction with sibling tools, leaving the agent with insufficient context for reliable use.
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, with the single parameter 'device_id' documented as optional and for device identification. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for adequate coverage without extra value.
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 'Pula para a próxima música' (Portuguese for 'Skip to the next song') clearly states the tool's action (skip) and resource (next song), making the purpose immediately understandable. It does not explicitly differentiate from sibling tools like 'spotify_previous' or 'spotify_pause', but the verb 'skip' implies forward navigation in playback.
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 such as 'spotify_previous', 'spotify_pause', or 'spotify_resume'. It lacks context about prerequisites (e.g., whether playback must be active) or exclusions, leaving usage decisions to inference from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_pauseC
Pausa a reprodução atual
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | ID do dispositivo (opcional) |
TDQS
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 states the action ('Pausa') but doesn't describe effects (e.g., pauses playback on a device, requires Spotify Premium, may fail if no active playback), permissions, or response behavior. The description is minimal and lacks necessary context 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, clear sentence in Portuguese ('Pausa a reprodução atual') that directly states the tool's purpose with zero wasted words. It's front-loaded and appropriately sized for a simple action, making it highly efficient and easy to parse.
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?
Given the tool is a mutation (pause action) with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects (e.g., what happens on success/failure, requirements like active playback), making it inadequate for safe and effective use by an AI agent. The simplicity of the action doesn't excuse the missing context.
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 schema description coverage is 100%, with the single parameter 'device_id' documented as optional and a string. The description adds no parameter information beyond what the schema provides. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to given the schema's completeness.
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 'Pausa a reprodução atual' clearly states the action (pause) and target (current playback) in Portuguese. It's specific about what the tool does, though it doesn't explicitly differentiate from sibling tools like 'spotify_resume' beyond the obvious action difference. The purpose is unambiguous but lacks explicit sibling comparison.
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. It doesn't mention prerequisites (e.g., requires active playback), exclusions, or comparisons to siblings like 'spotify_resume' or 'spotify_play'. Usage is implied from the action name alone, with no contextual instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_playC
Toca uma música específica no Spotify
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | ID do dispositivo (opcional) | |
| track_id | Yes | ID da música no Spotify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Toca' implies a playback action, it doesn't specify whether this interrupts current playback, requires premium subscription, has rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
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, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple playback function and front-loads the essential information.
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?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after invocation (does it return success status? error messages? playback confirmation?), nor does it address authentication requirements or potential limitations. Given the complexity of media playback operations, more context is needed.
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 schema has 100% description coverage, with both parameters clearly documented in the schema itself. The description doesn't add any parameter information beyond what's already in the schema, so it meets the baseline of 3 when the schema does the heavy lifting.
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 action ('Toca' - plays) and the resource ('uma música específica no Spotify'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'spotify_play_playlist' or 'spotify_resume', which also involve playback functionality.
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 like 'spotify_play_playlist' (for playing entire playlists) or 'spotify_resume' (for resuming playback). There's no mention of prerequisites (like authentication status) or context about when this specific track-playing function is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_playlistsC
Lista playlists do usuário
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Número máximo de playlists (padrão: 20) |
TDQS
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 states it lists user playlists but doesn't mention if it requires authentication, how it handles pagination, rate limits, or what the return format is. This leaves significant gaps for a tool that likely interacts with user data.
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, efficient phrase in Portuguese ('Lista playlists do usuário') that directly states the purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
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?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address authentication needs, return format, or error handling, which are crucial for a tool that likely requires user authorization and returns a list of playlists. This leaves the agent with insufficient context for reliable use.
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, with the 'limit' parameter well-documented. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline score of 3 without compensating or adding extra value.
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 'Lista playlists do usuário' clearly states the verb ('Lista') and resource ('playlists do usuário'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'spotify_search' or 'spotify_play_playlist', which might also involve playlists, so it doesn't reach the highest score.
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. It doesn't mention prerequisites (e.g., authentication status), exclusions, or comparisons to siblings like 'spotify_search' for finding playlists, leaving the agent with minimal context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_play_playlistC
Toca uma playlist específica
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | ID do dispositivo (opcional) | |
| playlist_id | Yes | ID da playlist no Spotify |
TDQS
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 states the action ('play') but lacks critical details: it doesn't specify if this starts playback from the beginning, requires an active Spotify session, affects other playback, or has side effects like changing device context. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence in Portuguese that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured for quick understanding.
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?
Given the tool's complexity (a mutation action with no annotations and no output schema), the description is incomplete. It doesn't cover behavioral aspects like authentication needs, playback effects, or error conditions, and it lacks output information. For a tool that likely interacts with an external service and changes state, this minimal description is insufficient.
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 description coverage is 100%, with clear descriptions for both parameters (playlist_id as required, device_id as optional). The description adds no additional meaning beyond the schema, such as format examples or usage context for device_id. Baseline 3 is appropriate since the schema adequately documents the parameters.
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 'Toca uma playlist específica' (Plays a specific playlist) clearly states the verb (play) and resource (playlist), making the purpose immediately understandable. However, it doesn't differentiate from siblings like 'spotify_play' (which likely plays something else) or 'spotify_resume' (which might resume playback), so it doesn't reach the highest score.
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. It doesn't mention prerequisites (e.g., authentication, active device), exclusions, or comparisons to siblings like 'spotify_play' or 'spotify_resume', leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_previousB
Volta para a música anterior
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | ID do dispositivo (opcional) |
TDQS
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 states the action ('go back to the previous song') but lacks critical details: whether it requires authentication, if it affects playback state (e.g., resumes if paused), what happens if there's no previous song (error or wrap-around), or rate limits. The description is minimal and misses key behavioral traits for a media control 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, efficient sentence in Portuguese that directly states the tool's purpose with zero wasted words. It is appropriately sized for a simple action tool and front-loaded with the core functionality. Every word earns its place, making it highly concise and well-structured.
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?
Given the tool's complexity (simple media control with one optional parameter), no annotations, no output schema, and minimal description, the description is incomplete. It lacks context on authentication needs, error conditions, playback state implications, and interaction with sibling tools (e.g., 'spotify_pause'). For a tool that modifies playback, more behavioral and contextual information is needed to guide the agent effectively.
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 1 parameter with 100% coverage (device_id is described as optional device ID). The description adds no parameter-specific information beyond what the schema provides. Since there are 0 parameters mentioned in the description and schema coverage is high, the baseline is 3, but the tool has only one optional parameter, making the lack of param details less critical, warranting a slightly higher score.
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 'Volta para a música anterior' (Portuguese for 'Go back to the previous song') clearly states the tool's action with a specific verb ('volta') and resource ('música anterior'). It distinguishes itself from siblings like 'spotify_next' (go forward) and 'spotify_pause' (pause), but doesn't explicitly differentiate from all siblings (e.g., 'spotify_play' could be ambiguous). The purpose is unambiguous but lacks explicit sibling comparison.
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. It doesn't mention prerequisites (e.g., requires an active playback session), exclusions (e.g., not applicable if at the start of a playlist), or comparisons to similar tools like 'spotify_next' or 'spotify_play'. Usage is implied from the action alone, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_resumeC
Retoma a reprodução pausada
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | ID do dispositivo (opcional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action (resume playback) but doesn't cover critical aspects like authentication requirements (implied by sibling 'spotify_auth'), error conditions (e.g., if no playback is paused), side effects, or response format. This leaves significant gaps 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, clear sentence in Portuguese with zero wasted words. It's front-loaded with the core action and efficiently conveys the purpose without unnecessary elaboration.
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?
For a tool that performs a mutation (resuming playback) with no annotations and no output schema, the description is incomplete. It lacks details on authentication, error handling, return values, and how it interacts with sibling tools. Given the complexity and missing structured data, more context is needed for effective use.
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 description coverage is 100%, with the single parameter 'device_id' documented as optional and a string. The description adds no additional parameter information beyond what the schema provides, such as format examples or contextual usage. With high schema coverage, the baseline score of 3 is appropriate.
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 'Retoma a reprodução pausada' (Resumes paused playback) clearly states the tool's action and target resource (playback). It's specific with the verb 'retoma' (resumes) and resource 'reprodução pausada' (paused playback). However, it doesn't explicitly differentiate from sibling tools like 'spotify_play' or 'spotify_play_playlist', which might have overlapping functionality.
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. It doesn't mention prerequisites (e.g., requires active playback to be paused), exclusions, or comparisons to siblings like 'spotify_play' (which might start new playback). Usage is implied from the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_searchC
Busca por músicas, artistas, álbuns ou playlists no Spotify
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Número máximo de resultados (padrão: 20) | |
| query | Yes | Termo de busca (nome da música, artista, etc.) | |
| type | Yes | Tipo de conteúdo para buscar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the search action but lacks details on rate limits, authentication requirements (implied by sibling 'spotify_auth'), response format, pagination, or error handling. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves operationally.
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, efficient sentence in Portuguese that directly states the tool's purpose without redundancy. It's front-loaded with the core function and lists the searchable resources concisely. There's no wasted verbiage, making it easy to parse quickly.
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?
Given the complexity (a search tool with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, rate limits, or response structure, which are critical for effective use. While the schema handles parameters well, the overall context for safe and correct invocation is insufficient.
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 description coverage is 100%, with clear descriptions for all parameters (limit, query, type). The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain query syntax, type implications, or default behaviors. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema adequately documents parameters without extra help from the description.
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 tool's purpose: 'Busca por músicas, artistas, álbuns ou playlists no Spotify' (Search for songs, artists, albums, or playlists on Spotify). It specifies the verb ('busca' - search) and resources (music, artists, albums, playlists), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'spotify_playlists' (which might list playlists rather than search them) or 'spotify_current_playing' (which retrieves current playback), leaving room for minor confusion.
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. It doesn't mention when to choose search over direct listing tools (e.g., 'spotify_playlists' for browsing playlists without a query) or other search-related tools (none exist among siblings, but context isn't provided). There's no indication of prerequisites, such as authentication status, or any exclusions for usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_set_tokensC
Conclui a autenticação com o código recebido do Spotify
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Código de autorização retornado pelo Spotify após login |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Conclui a autenticação' implies this is a write operation that exchanges an authorization code for tokens, it doesn't disclose what tokens are obtained (access/refresh), where they're stored, whether this requires specific permissions, or what happens on failure. For an authentication tool with zero annotation coverage, this leaves significant behavioral gaps.
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, efficient sentence in Portuguese that directly states the tool's purpose. There's zero wasted language, and it's appropriately sized for a single-parameter tool. Every word earns its place by conveying essential information about completing authentication with a Spotify code.
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?
For an authentication tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what authentication tokens are obtained, how they're stored/used, what the tool returns, or error conditions. Given the complexity of OAuth token exchange and the lack of structured documentation, the description should provide more context about the authentication flow and outcomes.
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 description coverage is 100%, with the single parameter 'code' well-documented in the schema as 'Código de autorização retornado pelo Spotify após login'. The description adds no additional parameter information beyond what the schema provides. With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.
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 action ('Conclui a autenticação' - Completes authentication) and the resource ('com o código recebido do Spotify' - with the code received from Spotify). It distinguishes from sibling tools like 'spotify_auth' by specifying this is for completing authentication with a code rather than initiating it. However, it doesn't explicitly mention that this is for OAuth token exchange, which would make it more specific.
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. It doesn't mention that this should be used after receiving an authorization code from Spotify's OAuth flow, nor does it clarify the relationship with 'spotify_auth' (which likely initiates authentication). There are no explicit when/when-not instructions or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: authentication (auth, set_tokens), playback control (play, pause, resume, next, previous), playlist management (create, add_tracks, playlists, play_playlist), search, and device/status queries. The descriptions reinforce these distinct roles, making misselection unlikely.
All tools follow a consistent 'spotify_verb' or 'spotify_verb_noun' pattern in snake_case, with verbs like 'add', 'create', 'play', 'pause', etc. This predictability makes the tool set easy to navigate and understand at a glance.
With 14 tools, this server is well-scoped for a Spotify integration, covering authentication, playback control, playlist operations, search, and device management. Each tool earns its place without bloat, supporting common user workflows effectively.
The tool surface is nearly complete for core Spotify interactions, including authentication, playback, playlists, and search. A minor gap is the lack of tools for modifying or deleting playlists, but agents can work around this with existing tools like create and add_tracks.
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
Full Spotify Web API coverage - albums, artists, playlists, player controls, and more.
Spotify: Spotify Data API for Millions of songs & podcasts, artists, albums, playlists and more.
Spotify MCP — Web API via client_credentials OAuth
OAuth 2.1 short-link tools for AI agents with scoped tokens, approvals, audit logs, and revocation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Spotify through natural language for music discovery, playback control, library management, and playlist creation. Supports searching for music, controlling playback, managing saved tracks, and getting personalized recommendations based on mood and preferences.1095MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to control Spotify playback, manage playlists, search music, and access listening history. Requires Spotify Premium and uses secure OAuth 2.0 with PKCE authentication.13109MIT
- FlicenseAqualityDmaintenanceEnables interaction with Spotify through OAuth 2.0 authentication, supporting search for tracks/artists/albums/playlists, user profile access, and playlist management including creation and adding tracks.6
- AlicenseCqualityDmaintenanceEnables natural language control of Spotify, including search, playback, and device management, with robust error handling and automatic token refresh.348MIT
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/fborello/MCPSpotify'
If you have feedback or need assistance with the MCP directory API, please join our Discord server