get_devices
Retrieve all Spotify-connected devices for playback targeting and management. Shows available speakers, phones, TVs, and other devices with their current status and capabilities.
Instructions
Retrieve all available Spotify-connected devices for the user's account.
π― USE CASES: β’ Display device options for playback targeting β’ Build device management and control interfaces β’ Check which devices are currently online and available β’ Monitor device battery levels and connection status β’ Create smart home integrations with Spotify-enabled devices
π WHAT IT RETURNS: β’ Complete list of user's connected devices β’ Device names, types, and unique identifiers β’ Current active state and availability status β’ Volume levels and playback capabilities β’ Device restrictions and supported features
π EXAMPLES: β’ "Show me all my Spotify devices" β’ "What devices can I play music on?" β’ "List my available speakers and phones" β’ "Which devices are currently online?"
π§ DEVICE TYPES: β’ Computer (desktop/laptop applications) β’ Smartphone (mobile apps) β’ Speaker (smart speakers, soundbars) β’ TV (smart TVs, streaming devices) β’ Car (automotive systems) β’ Game Console (PlayStation, Xbox)
π‘ DEVICE MANAGEMENT: β’ Shows real-time availability status β’ Indicates which device is currently active β’ Displays volume control capabilities β’ Shows device-specific restrictions β’ Perfect for building device selector UIs
β οΈ REQUIREMENTS: β’ Valid Spotify access token with user-read-playback-state scope β’ At least one Spotify-enabled device must be logged in
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Spotify access token for authentication |
Implementation Reference
- src/mcp/tools/playback.ts:438-441 (handler)The MCP tool handler for get_devices, extracting token and delegating to SpotifyService.getUserDeviceshandler: async (args: any, spotifyService: SpotifyService) => { const { token } = args; return await spotifyService.getUserDevices(token); },
- src/mcp/tools/playback.ts:435-437 (schema)Input schema definition for the get_devices tool, requiring a valid Spotify access tokenschema: createSchema({ token: commonSchemas.token(), }),
- src/mcp/tools/playback.ts:393-442 (registration)Full registration of the get_devices tool within the playbackTools object, including title, description, schema, and handlerget_devices: { title: "Get User Devices", description: `Retrieve all available Spotify-connected devices for the user's account. π― USE CASES: β’ Display device options for playback targeting β’ Build device management and control interfaces β’ Check which devices are currently online and available β’ Monitor device battery levels and connection status β’ Create smart home integrations with Spotify-enabled devices π WHAT IT RETURNS: β’ Complete list of user's connected devices β’ Device names, types, and unique identifiers β’ Current active state and availability status β’ Volume levels and playback capabilities β’ Device restrictions and supported features π EXAMPLES: β’ "Show me all my Spotify devices" β’ "What devices can I play music on?" β’ "List my available speakers and phones" β’ "Which devices are currently online?" π§ DEVICE TYPES: β’ Computer (desktop/laptop applications) β’ Smartphone (mobile apps) β’ Speaker (smart speakers, soundbars) β’ TV (smart TVs, streaming devices) β’ Car (automotive systems) β’ Game Console (PlayStation, Xbox) π‘ DEVICE MANAGEMENT: β’ Shows real-time availability status β’ Indicates which device is currently active β’ Displays volume control capabilities β’ Shows device-specific restrictions β’ Perfect for building device selector UIs β οΈ REQUIREMENTS: β’ Valid Spotify access token with user-read-playback-state scope β’ At least one Spotify-enabled device must be logged in`, schema: createSchema({ token: commonSchemas.token(), }), handler: async (args: any, spotifyService: SpotifyService) => { const { token } = args; return await spotifyService.getUserDevices(token); }, },
- src/spotify.ts:707-712 (helper)SpotifyService helper method implementing the core logic by calling Spotify API endpoint /me/player/devicesasync getUserDevices(token: string): Promise<{ devices: SpotifyDevice[] }> { return await this.makeRequest<{ devices: SpotifyDevice[] }>( "me/player/devices", token ); }
- src/spotify.ts:114-122 (schema)TypeScript interface defining the structure of SpotifyDevice objects returned by the toolexport interface SpotifyDevice { id: string; is_active: boolean; is_private_session: boolean; is_restricted: boolean; name: string; type: string; volume_percent: number | null; }