{
  "name": "spotify",
  "display_name": "Spotify",
  "description": "This MCP allows an LLM to play and use Spotify.",
  "repository": {
    "type": "git",
    "url": "https://github.com/varunneal/spotify-mcp"
  },
  "homepage": "https://github.com/varunneal/spotify-mcp",
  "author": {
    "name": "varunneal"
  },
  "license": "MIT",
  "categories": [
    "Media Creation"
  ],
  "tags": [
    "spotify",
    "audio"
  ],
  "examples": [
    {
      "title": "Basic Playback Control",
      "description": "Use the MCP to start, pause, or skip songs on Spotify.",
      "prompt": "Start playing a song on Spotify."
    },
    {
      "title": "Search for Tracks",
      "description": "Search for tracks, albums, artists, or playlists using the Spotify API.",
      "prompt": "Search for the album 'Thriller'."
    }
  ],
  "installations": {
    "uvx": {
      "type": "uvx",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/varunneal/spotify-mcp",
        "spotify-mcp"
      ],
      "env": {
        "SPOTIFY_CLIENT_ID": "${SPOTIFY_CLIENT_ID}",
        "SPOTIFY_CLIENT_SECRET": "${SPOTIFY_CLIENT_SECRET}",
        "SPOTIFY_REDIRECT_URI": "${SPOTIFY_REDIRECT_URI}"
      }
    }
  },
  "arguments": {
    "SPOTIFY_CLIENT_ID": {
      "description": "The client ID for your Spotify application, required to authenticate with the Spotify API.",
      "required": true,
      "example": "your_spotify_client_id_here"
    },
    "SPOTIFY_CLIENT_SECRET": {
      "description": "The client secret for your Spotify application, needed for secure authentication with the API.",
      "required": true,
      "example": "your_spotify_client_secret_here"
    },
    "SPOTIFY_REDIRECT_URI": {
      "description": "The redirect URI you specified when creating the Spotify application, needed for the OAuth authentication process.",
      "required": false,
      "example": "http://localhost:8888"
    }
  },
  "tools": [
    {
      "name": "SpotifyPlayback",
      "description": "Manages the current playback with the following actions:\n    - get: Get information about user's current track.\n    - start: Starts playing new item or resumes current playback if called with no uri.\n    - pause: Pauses current playback.\n    - skip: Skips current track.\n    ",
      "inputSchema": {
        "description": "Manages the current playback with the following actions:\n- get: Get information about user's current track.\n- start: Starts playing new item or resumes current playback if called with no uri.\n- pause: Pauses current playback.\n- skip: Skips current track.",
        "properties": {
          "action": {
            "description": "Action to perform: 'get', 'start', 'pause' or 'skip'.",
            "title": "Action",
            "type": "string"
          },
          "spotify_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Spotify uri of item to play for 'start' action. If omitted, resumes current playback.",
            "title": "Spotify Uri"
          },
          "num_skips": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 1,
            "description": "Number of tracks to skip for `skip` action.",
            "title": "Num Skips"
          }
        },
        "required": [
          "action"
        ],
        "title": "Playback",
        "type": "object"
      }
    },
    {
      "name": "SpotifySearch",
      "description": "Search for tracks, albums, artists, or playlists on Spotify.",
      "inputSchema": {
        "description": "Search for tracks, albums, artists, or playlists on Spotify.",
        "properties": {
          "query": {
            "description": "query term",
            "title": "Query",
            "type": "string"
          },
          "qtype": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "track",
            "description": "Type of items to search for (track, album, artist, playlist, or comma-separated combination)",
            "title": "Qtype"
          },
          "limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 10,
            "description": "Maximum number of items to return",
            "title": "Limit"
          }
        },
        "required": [
          "query"
        ],
        "title": "Search",
        "type": "object"
      }
    },
    {
      "name": "SpotifyQueue",
      "description": "Manage the playback queue - get the queue or add tracks.",
      "inputSchema": {
        "description": "Manage the playback queue - get the queue or add tracks.",
        "properties": {
          "action": {
            "description": "Action to perform: 'add' or 'get'.",
            "title": "Action",
            "type": "string"
          },
          "track_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Track ID to add to queue (required for add action)",
            "title": "Track Id"
          }
        },
        "required": [
          "action"
        ],
        "title": "Queue",
        "type": "object"
      }
    },
    {
      "name": "SpotifyGetInfo",
      "description": "Get detailed information about a Spotify item (track, album, artist, or playlist).",
      "inputSchema": {
        "description": "Get detailed information about a Spotify item (track, album, artist, or playlist).",
        "properties": {
          "item_uri": {
            "description": "URI of the item to get information about. If 'playlist' or 'album', returns its tracks. If 'artist', returns albums and top tracks.",
            "title": "Item Uri",
            "type": "string"
          }
        },
        "required": [
          "item_uri"
        ],
        "title": "GetInfo",
        "type": "object"
      }
    }
  ]
}