Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.khglynn/spotify-bulk-actions-mcp

PYPI · SPOTIFY-BULK-ACTIONS-MCP · SCANNED SEP 20

MCP server for bulk Spotify operations - batch playlist creation, exports, management

0 this week 64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 2 of 33 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency31
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 281 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability79
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 1811 tokens (~56/item across 32 items; 32 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "unsave_tracks" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 33 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.github.khglynn/spotify-bulk-actions-mcp server?

io.github.khglynn/spotify-bulk-actions-mcp runs locally as a PyPI package, launched with uvx spotify-bulk-actions-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · spotify-bulk-actions-mcp

# add to Claude Code
claude mcp add khglynn-spotify-bulk-actions-mcp -- uvx spotify-bulk-actions-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "khglynn-spotify-bulk-actions-mcp": {
      "command": "uvx",
      "args": [
        "spotify-bulk-actions-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "khglynn-spotify-bulk-actions-mcp": {
      "command": "uvx",
      "args": [
        "spotify-bulk-actions-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add khglynn-spotify-bulk-actions-mcp -- uvx spotify-bulk-actions-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "khglynn-spotify-bulk-actions-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "spotify-bulk-actions-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add khglynn-spotify-bulk-actions-mcp --command uvx --arg spotify-bulk-actions-mcp
# ~/.hermes/config.yaml
mcp_servers:
  khglynn-spotify-bulk-actions-mcp:
    command: "uvx"
    args: ["spotify-bulk-actions-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "khglynn-spotify-bulk-actions-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "spotify-bulk-actions-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add khglynn-spotify-bulk-actions-mcp -t stdio -c uvx -a spotify-bulk-actions-mcp
// mcp.json
{
  "mcpServers": {
    "khglynn-spotify-bulk-actions-mcp": {
      "command": "uvx",
      "args": [
        "spotify-bulk-actions-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1
    • Security disclosure: fail → unverified functional
  • 18 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 0
    • Security disclosure: unverified → fail functional
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 0
    • Security disclosure: fail → unverified functional
  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/spotify-bulk-actions-mcp@0.1.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 33 packages
Packages resolved 33
Stale 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 32 exposed · ~1,797 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_reviewed_tracks ~99

Add tracks from a reviewed CSV to an existing playlist. Use this after reviewing uncertain matches from a batch search. The CSV should have an 'action' column: - 'approve': Add the matched track - 'reject': Skip this track - spotify:track:xxx: Use this specific URI instead

NameTypeReqDescription
playlist_idstringyesExisting playlist ID
reviewed_csvstringyesReviewed CSV content with 'action' column

Structured output declared, but exposes no named fields.

No examples provided.

add_tracks_to_playlist ~56

Add tracks to an existing playlist. Handles batching automatically (Spotify max 100 per request).

NameTypeReqDescription
playlist_idstringyesPlaylist ID (not URI)
track_urisarrayyesList of Spotify track URIs

Structured output declared, but exposes no named fields.

No examples provided.

batch_search_tracks ~106

Search for multiple tracks with confidence scoring. Categorizes results: - HIGH (>= 90%): Safe to auto-add - MEDIUM (70-89%): Should review - LOW (< 70%): Needs attention - NOT FOUND: No results

NameTypeReqDescription
delay_secondsnumberDelay between API calls (default 0.2s for rate limiting)
songsarrayyesList of {"title": "...", "artist": "..."} dicts

Structured output declared, but exposes no named fields.

No examples provided.

check_auth_status ~26

Check if Spotify authentication is set up and working. Returns current user info if authenticated.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

compare_playlists ~45

Compare two playlists to find shared and unique tracks.

NameTypeReqDescription
playlist_id_1stringyesFirst playlist ID
playlist_id_2stringyesSecond playlist ID

Structured output declared, but exposes no named fields.

No examples provided.

create_playlist ~46

Create a new Spotify playlist.

NameTypeReqDescription
descriptionstringPlaylist description
namestringyesPlaylist name
publicbooleanWhether playlist is public (default False)

Structured output declared, but exposes no named fields.

No examples provided.

create_playlist_from_search_results ~112

Create a playlist from batch search results.

NameTypeReqDescription
batch_resultsobjectyesResults from batch_search_tracks
descriptionstringPlaylist description
include_confidencestringWhich confidence levels to include: - "high": Only >= 90% matches (safest) - "high_medium": >= 70% matches - "all": All matches (use with caution)
namestringyesPlaylist name
publicbooleanWhether playlist is public

Structured output declared, but exposes no named fields.

No examples provided.

export_library_summary ~53

Export a complete summary of your Spotify library. Includes: - Followed artists - Top artists by saved song count - Albums with most saved songs

NameTypeReqDescription
use_cachebooleanUse cached data if available

Structured output declared, but exposes no named fields.

No examples provided.

export_playlist_to_csv ~37

Export a playlist to CSV format. Great for backing up playlists or sharing song lists.

NameTypeReqDescription
playlist_idstringyesPlaylist ID

Structured output declared, but exposes no named fields.

No examples provided.

export_review_csv ~35

Export medium/low confidence matches to a CSV for human review.

NameTypeReqDescription
batch_resultsobjectyesResults from batch_search_tracks

Structured output declared, but exposes no named fields.

No examples provided.

find_duplicate_tracks ~26

Find duplicate tracks in a playlist.

NameTypeReqDescription
playlist_idstringyesPlaylist ID

Structured output declared, but exposes no named fields.

No examples provided.

follow_artists ~29

Follow artists on Spotify.

NameTypeReqDescription
artist_idsarrayyesList of Spotify artist IDs to follow

Structured output declared, but exposes no named fields.

No examples provided.

get_albums_by_song_count ~64

Find albums where you have N or more saved songs. Great for finding albums worth buying on vinyl!

NameTypeReqDescription
min_songsintegerMinimum saved songs to include album (default 6)
use_cachebooleanUse cached data if available

Structured output declared, but exposes no named fields.

No examples provided.

get_followed_artists ~38

Get all artists you follow on Spotify.

NameTypeReqDescription
use_cachebooleanUse cached data if available (faster, default True)

Structured output declared, but exposes no named fields.

No examples provided.

get_library_artists ~59

Get unique artists from your saved songs, sorted by song count. This shows artists you have saved songs from (even if not followed), ranked by how many songs you've saved.

NameTypeReqDescription
use_cachebooleanUse cached data if available

Structured output declared, but exposes no named fields.

No examples provided.

get_playlist_info ~25

Get information about a playlist.

NameTypeReqDescription
playlist_idstringyesPlaylist ID

Structured output declared, but exposes no named fields.

No examples provided.

get_playlist_tracks ~26

Get all tracks from a playlist.

NameTypeReqDescription
playlist_idstringyesPlaylist ID

Structured output declared, but exposes no named fields.

No examples provided.

get_recently_played ~31

Get your recently played tracks.

NameTypeReqDescription
limitintegerNumber of results (max 50)

Structured output declared, but exposes no named fields.

No examples provided.

get_saved_tracks ~56

Get all your liked/saved songs on Spotify. Note: This may take 1-2 minutes for large libraries (10k songs).

NameTypeReqDescription
use_cachebooleanUse cached data if available (faster, default True)

Structured output declared, but exposes no named fields.

No examples provided.

get_top_artists ~85

Get your top artists based on listening history. Great for understanding your music taste and finding festival lineups.

NameTypeReqDescription
limitintegerNumber of results (max 50)
time_rangestringTime period: - "short_term": Last 4 weeks - "medium_term": Last 6 months (default) - "long_term": All time

Structured output declared, but exposes no named fields.

No examples provided.

get_top_tracks ~72

Get your top tracks based on listening history.

NameTypeReqDescription
limitintegerNumber of results (max 50)
time_rangestringTime period: - "short_term": Last 4 weeks - "medium_term": Last 6 months (default) - "long_term": All time

Structured output declared, but exposes no named fields.

No examples provided.

get_track_preview_url ~42

Get the 30-second preview URL for a track.

NameTypeReqDescription
track_uristringyesSpotify track URI (e.g., "spotify:track:xxx")

Structured output declared, but exposes no named fields.

No examples provided.

import_and_create_playlist ~104

Full workflow: Parse song list CSV, search all tracks, create playlist. This is the main tool for bulk playlist creation from a list of songs.

NameTypeReqDescription
csv_contentstringyesCSV content with columns: title, artist
descriptionstringPlaylist description
include_confidencestring"high", "high_medium", or "all"
namestringyesPlaylist name
publicbooleanWhether playlist is public

Structured output declared, but exposes no named fields.

No examples provided.

parse_song_list_csv ~42

Parse a CSV of songs into a structured list. Use this to validate your CSV before batch searching.

NameTypeReqDescription
csv_contentstringyesCSV content as string

Structured output declared, but exposes no named fields.

No examples provided.

remove_duplicate_tracks ~55

Remove duplicate tracks from a playlist, keeping the first occurrence. For safety, returns a preview unless confirm=True.

NameTypeReqDescription
confirmbooleanSet to True to actually remove duplicates
playlist_idstringyesPlaylist ID

Structured output declared, but exposes no named fields.

No examples provided.

remove_tracks_from_playlist ~67

Remove specific tracks from a playlist. For safety, returns a preview unless confirm=True.

NameTypeReqDescription
confirmbooleanSet to True to actually remove
playlist_idstringyesPlaylist ID
track_urisarrayyesList of Spotify track URIs to remove

Structured output declared, but exposes no named fields.

No examples provided.

reorder_playlist_tracks ~76

Move tracks within a playlist.

NameTypeReqDescription
insert_beforeintegeryesPosition to insert before (0-indexed)
playlist_idstringyesPlaylist ID
range_lengthintegerNumber of tracks to move (default 1)
range_startintegeryesPosition of first track to move (0-indexed)

Structured output declared, but exposes no named fields.

No examples provided.

save_tracks ~35

Save tracks to your Spotify library (like/heart them).

NameTypeReqDescription
track_idsarrayyesList of Spotify track IDs to save

Structured output declared, but exposes no named fields.

No examples provided.

search_track ~53

Search for a single track and get matches with confidence scores.

NameTypeReqDescription
artiststringyesArtist name
limitintegerMax results to return (default 5)
titlestringyesTrack title

Structured output declared, but exposes no named fields.

No examples provided.

search_track_fuzzy ~77

Broader fuzzy search when exact match fails. Tries multiple strategies: 1. Exact title + artist 2. Title only 3. Simplified title (removing parentheses, etc.)

NameTypeReqDescription
artiststringyesArtist name
limitintegerMax results per strategy
titlestringyesTrack title

Structured output declared, but exposes no named fields.

No examples provided.

unfollow_artists ~61

Unfollow artists on Spotify. For safety, returns a preview unless confirm=True.

NameTypeReqDescription
artist_idsarrayyesList of Spotify artist IDs to unfollow
confirmbooleanSet to True to actually unfollow (default False for preview)

Structured output declared, but exposes no named fields.

No examples provided.

unsave_tracks ~59

Remove tracks from your Spotify library. For safety, returns a preview unless confirm=True.

NameTypeReqDescription
confirmbooleanSet to True to actually remove (default False for preview)
track_idsarrayyesList of Spotify track IDs to remove

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the io.github.khglynn/spotify-bulk-actions-mcp server?

io.github.khglynn/spotify-bulk-actions-mcp is listed in the public MCP registry as io.github.khglynn/spotify-bulk-actions-mcp. MCP server for bulk Spotify operations - batch playlist creation, exports, management. This page covers its PyPI package (spotify-bulk-actions-mcp).

Is the io.github.khglynn/spotify-bulk-actions-mcp server safe to use?

io.github.khglynn/spotify-bulk-actions-mcp scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.khglynn/spotify-bulk-actions-mcp server expose?

io.github.khglynn/spotify-bulk-actions-mcp exposes 32 tools: check_auth_status, get_top_artists, get_top_tracks, get_recently_played, get_followed_artists, and 27 more. Their descriptions and schemas cost roughly 1,797 tokens of context every time the server is loaded.

Is the io.github.khglynn/spotify-bulk-actions-mcp server still maintained?

io.github.khglynn/spotify-bulk-actions-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.