A slick, docker-ready Model Context Protocol (MCP) server powered by Spotipy—transforming Spotify playback, search, and playlist actions into handy MCP tools.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add spotify-server-docker --env SPOTIPY_CLIENT_ID='<SPOTIPY_CLIENT_ID>' --env SPOTIPY_CLIENT_SECRET='<SPOTIPY_CLIENT_SECRET>' --env SPOTIPY_REDIRECT_URI='<SPOTIPY_REDIRECT_URI>' -- docker run --rm -i -v '${HOME}/.cache/spotify-mcp:/app/.cache' spotify-mcp:latest~/.codex/config.toml
[mcp_servers.spotify-server-docker]
command = "docker"
args = ["run", "--rm", "-i", "-v", "${HOME}/.cache/spotify-mcp:/app/.cache", "spotify-mcp:latest"]
env = { SPOTIPY_CLIENT_ID = "<SPOTIPY_CLIENT_ID>", SPOTIPY_CLIENT_SECRET = "<SPOTIPY_CLIENT_SECRET>", SPOTIPY_REDIRECT_URI = "<SPOTIPY_REDIRECT_URI>" }
# codex mcp add spotify-server-docker --env SPOTIPY_CLIENT_ID='<SPOTIPY_CLIENT_ID>' --env SPOTIPY_CLIENT_SECRET='<SPOTIPY_CLIENT_SECRET>' --env SPOTIPY_REDIRECT_URI='<SPOTIPY_REDIRECT_URI>' -- docker run --rm -i -v '${HOME}/.cache/spotify-mcp:/app/.cache' spotify-mcp:latest~/.cursor/mcp.json
{
"mcpServers": {
"spotify-server-docker": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${HOME}/.cache/spotify-mcp:/app/.cache",
"spotify-mcp:latest"
],
"env": {
"SPOTIPY_CLIENT_ID": "<SPOTIPY_CLIENT_ID>",
"SPOTIPY_CLIENT_SECRET": "<SPOTIPY_CLIENT_SECRET>",
"SPOTIPY_REDIRECT_URI": "<SPOTIPY_REDIRECT_URI>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"spotify-server-docker": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${HOME}/.cache/spotify-mcp:/app/.cache",
"spotify-mcp:latest"
],
"env": {
"SPOTIPY_CLIENT_ID": "<SPOTIPY_CLIENT_ID>",
"SPOTIPY_CLIENT_SECRET": "<SPOTIPY_CLIENT_SECRET>",
"SPOTIPY_REDIRECT_URI": "<SPOTIPY_REDIRECT_URI>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"spotify-server-docker": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${HOME}/.cache/spotify-mcp:/app/.cache",
"spotify-mcp:latest"
],
"env": {
"SPOTIPY_CLIENT_ID": "<SPOTIPY_CLIENT_ID>",
"SPOTIPY_CLIENT_SECRET": "<SPOTIPY_CLIENT_SECRET>",
"SPOTIPY_REDIRECT_URI": "<SPOTIPY_REDIRECT_URI>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"spotify-server-docker": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${HOME}/.cache/spotify-mcp:/app/.cache",
"spotify-mcp:latest"
],
"env": {
"SPOTIPY_CLIENT_ID": "<SPOTIPY_CLIENT_ID>",
"SPOTIPY_CLIENT_SECRET": "<SPOTIPY_CLIENT_SECRET>",
"SPOTIPY_REDIRECT_URI": "<SPOTIPY_REDIRECT_URI>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"spotify-server-docker": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${HOME}/.cache/spotify-mcp:/app/.cache",
"spotify-mcp:latest"
],
"env": {
"SPOTIPY_CLIENT_ID": "<SPOTIPY_CLIENT_ID>",
"SPOTIPY_CLIENT_SECRET": "<SPOTIPY_CLIENT_SECRET>",
"SPOTIPY_REDIRECT_URI": "<SPOTIPY_REDIRECT_URI>"
}
}
}
}Environment variables
SPOTIPY_CLIENT_IDSPOTIPY_CLIENT_SECRETSPOTIPY_REDIRECT_URI
Replace the placeholders with your own credentials and keep them out of version control.