spotify_get_track
Retrieve comprehensive metadata for a specific Spotify track using its ID, including artist details, album information, duration, popularity, and external URLs.
Instructions
Get detailed information about a specific Spotify track by ID.
Retrieves comprehensive metadata for a single track including artists, album, duration,
popularity, URIs, and external URLs.
Args:
- track_id: Spotify track ID (not URI), extract from URIs or search results
- response_format: 'markdown' or 'json'
Returns:
Markdown: Track details (name, artists, album, duration, ID, URI, popularity)
JSON: Full API response (id, name, artists, album, duration_ms, popularity, uri, external_urls, preview_url, track_number, disc_number, explicit, available_markets)
Examples:
- "Get details for track ID 4u7EnebtmKWzUH433cf5Qv" -> Retrieve track info
- "Show me info about this track" -> When you have the track ID
Errors: Returns error for invalid track (404), auth failure (401), rate limits (429).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Implementation Reference
- server.py:546-576 (handler)The async handler function that executes the spotify_get_track tool, fetching track details from Spotify API and formatting as markdown or JSON.async def spotify_get_track(params: GetTrackInput) -> str: """Get detailed information about a specific Spotify track by ID. Retrieves comprehensive metadata for a single track including artists, album, duration, popularity, URIs, and external URLs. Args: - track_id: Spotify track ID (not URI), extract from URIs or search results - response_format: 'markdown' or 'json' Returns: Markdown: Track details (name, artists, album, duration, ID, URI, popularity) JSON: Full API response (id, name, artists, album, duration_ms, popularity, uri, external_urls, preview_url, track_number, disc_number, explicit, available_markets) Examples: - "Get details for track ID 4u7EnebtmKWzUH433cf5Qv" -> Retrieve track info - "Show me info about this track" -> When you have the track ID Errors: Returns error for invalid track (404), auth failure (401), rate limits (429). """ try: data = await make_spotify_request(f"tracks/{params.track_id}") if params.response_format == ResponseFormat.MARKDOWN: return f"# Track Details\n\n{format_track_markdown(data)}" else: # JSON format return json.dumps(data, indent=2) except Exception as e: return handle_spotify_error(e)
- server.py:536-545 (registration)MCP tool registration decorator specifying the name and annotations for spotify_get_track.@mcp.tool( name="spotify_get_track", annotations={ "title": "Get Spotify Track Details", "readOnlyHint": True, "destructiveHint": False, "idempotentHint": True, "openWorldHint": True, }, )
- spotify_mcp/types.py:192-204 (schema)Pydantic BaseModel defining the input parameters for the spotify_get_track tool: track_id (required string) and response_format (markdown or json).class GetTrackInput(BaseModel): """Input model for getting track details.""" model_config = ConfigDict(str_strip_whitespace=True, validate_assignment=True) track_id: str = Field( ..., description="Spotify track ID", min_length=1, max_length=100 ) response_format: ResponseFormat = Field( default=ResponseFormat.MARKDOWN, description="Output format: 'markdown' or 'json'", )