StemSplit Vocal Remover & Stem Separator
About
Remove vocals, extract instrumentals, and split any song into up to six stems — directly from Claude Desktop, Cursor, or any MCP client
Details
- Author
- stemsplit
- Categories
- Communication, Other, Media
Jump to
Setup
Install StemSplit Vocal Remover & Stem Separator in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/stemsplit/stemsplit-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
StemSplit Vocal Remover & Stem Separator
Remove vocals, extract instrumentals, and split any song into up to six stems — directly from Claude Desktop, Cursor, or any MCP client
AI stem separation and voice cleaning as a Model Context Protocol (MCP) server.Remove vocals, build karaoke tracks, isolate dialogue, split any song into vocals, drums, bass, piano, guitar, and other stems — or remove background noise from voice recordings using DeepFilterNet — directly from Claude Desktop, Cursor, Cline, Windsurf, Zed, or any other MCP-compatible client. Works with local audio files (MP3, WAV, FLAC, M4A, OGG, AAC) and YouTube/SoundCloud URLs.
- Remove vocals from a song— separate any MP3, WAV, or FLAC into vocals and instrumental
- Build a karaoke version of any track—/karaokeslash command returns just the instrumental
- Extract an acapella— pull a clean vocal track for remixes, mashups, or re-arrangement
- Extract drums, bass, piano, or guitar— split audio into up to six individual stems
- Process YouTube videos— paste ayoutube.comoryoutu.beURL and get separated stems back
- Clean vocals before processing— isolate vocals first, then pass to a de-esser, noise reducer, or pitch corrector without mix bleed affecting the result
- Stem delivery for mastering— auto-generate per-stem exports from a final mix for a mastering engineer
- Adaptive game audio— split a track so a game engine can fade individual layers (e.g. mute drums during quiet scenes)
- DJ acapella/instrumental packs— batch-generate acapellas and instrumentals for live performance or DJ sets
- Sample chopping— extract drums or bass for sample packs in hip-hop / electronic production
- Clean up a podcast or interview— remove hum, hiss, HVAC noise, or ambient room sound from any voice recording
- Denoise vocals after stem separation— passdenoiseVocals: truetoseparate_stemsand get a noise-free vocals stem in one shot
- Clean dialogue for video production— strip wind, echo, or background noise before syncing to picture
- Pre-process audio before transcription— clean first for dramatically higher ASR / Whisper accuracy
- Vocals → transcription— isolate vocals first, then feed to Whisper or any ASR model for significantly cleaner speech-to-text
- Lyrics generation— vocals → transcription → synced lyrics file, fully automated in a single MCP chain
- Training data for AI music models— generate clean separated stems from raw mixed tracks for fine-tuning or dataset building
- Content-ID / copyright checking— extract vocals to fingerprint and match against a vocal database
- Per-stem audio visualizers— drive instrument-reactive visualizers in video or web apps by separating stems first
- Podcast / interview cleanup— strip music beds or background music from recorded dialogue
- Sync licensing— instantly generate an instrumental version of a submitted track for a music supervisor
- Music education apps— isolate individual instruments to build solo/mute practice tools or ear training exercises
- Build audio agents in your IDE— orchestrate stem separation from Cursor or Claude Desktop using natural language
- Batch process audio in MCP-driven pipelines— chain stem separation with transcription, translation, or any other MCP tool
stemsplit-mcpruns as a local stdio MCP server, so it works in any client that supports the standard MCP transport:
- Claude Desktop(Anthropic)
- Cursor
- Cline(VS Code extension)
- Windsurf(Codeium)
- Zed
- Any client following theModel Context Protocol specification
Plus six ready-made prompts (slash commands):karaoke,isolate_dialogue,sampler_pack,youtube_instrumental,soundcloud_instrumental,clean_voice.
Add to~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows):
{ "mcpServers": { "stemsplit": { "command": "npx", "args": ["-y", "stemsplit-mcp"], "env": { "STEMSPLIT_API_KEY": "sk_live_your_key_here" } } } }
Restart Claude Desktop. Type/karaokeor just ask:"Separate the vocals from ~/Music/demo.mp3".
Add to~/.cursor/mcp.json(or per-workspace<workspace>/.cursor/mcp.json):
{ "mcpServers": { "stemsplit": { "command": "npx", "args": ["-y", "stemsplit-mcp"], "env": { "STEMSPLIT_API_KEY": "sk_live_your_key_here" } } } }
Any MCP client that supports stdio-launched servers works. Use the samenpx -y stemsplit-mcpcommand and passSTEMSPLIT_API_KEYvia the client's env mechanism.
- Sign up atstemsplit.io
- Openstemsplit.io/app/settings/api
- Generate a key (format:sk_live_...)
- Paste it into your MCP client config as shown above
Submit an audio file or direct URL for stem separation.
{ "source": "/Users/me/Music/song.mp3", "outputType": "BOTH", "quality": "BEST", "outputFormat": "MP3", "wait": true }
{ "jobId": "job_abc123", "status": "COMPLETED", "creditsCharged": 180, "outputDir": "/Users/me/Downloads/stemsplit/job_abc123", "stems": { "vocals": "/Users/me/Downloads/stemsplit/job_abc123/vocals.mp3", "instrumental": "/Users/me/Downloads/stemsplit/job_abc123/instrumental.mp3" } }
Same shape, but takesyoutubeUrlinstead ofsource. Output is fixed to vocals + instrumental, MP3, BEST quality (this is the StemSplit API's contract for YouTube jobs).
Submit an audio file or direct URL for noise removal using DeepFilterNet. Removes background hum, hiss, HVAC noise, wind, echo, and other ambient sounds. By default (wait=true), polls until complete and downloads the cleaned audio to disk.
{ "source": "/Users/me/recordings/podcast-ep12.mp3", "outputFormat": "MP3", "wait": true }
{ "jobId": "dnz_abc123", "status": "COMPLETED", "creditsCharged": 180, "outputDir": "/Users/me/Downloads/stemsplit/dnz_abc123", "cleanedAudioPath": "/Users/me/Downloads/stemsplit/dnz_abc123/podcast-ep12_denoised.mp3" }
get_job,list_jobs,get_youtube_job,list_youtube_jobs,get_denoise_job,list_denoise_jobs,get_balance,download_stems
Thin wrappers over the corresponding StemSplit/api/v1endpoints.download_stemsre-fetches the job first to mint fresh 1-hour presigned URLs, so the expiry never matters.get_denoise_jobreturnsoutputs.audio.urlwhen the job isCOMPLETED.
Read-only context the LLM can pull on demand.
Karaoke from a local file (Claude Desktop):
Make a karaoke version of~/Music/demo.mp3.
Claude callsseparate_stemswithoutputType="BOTH", polls for ~60s, and returns:
Done. Karaoke (instrumental) is at: /Users/me/Downloads/stemsplit/job_abc123/instrumental.mp3
Split./loops/break.wavinto all six stems for sampling.
Cursor callsseparate_stemswithoutputType="SIX_STEMS",quality="BEST",outputDir="./loops/break-stems", and reports each file path so you can drop them into your DAW.
Get me the instrumental ofhttps://youtu.be/dQw4w9WgXcQ.
Claude callsseparate_youtube, polls until COMPLETED, downloadsvocals.mp3andinstrumental.mp3to~/Downloads/stemsplit/<jobId>/, and returns the instrumental path.
Clean vocals for transcription (Claude Desktop):
Transcribe the lyrics from~/Music/interview-with-music.mp3— there's a music bed underneath, clean it up first.
Claude callsseparate_stemswithoutputType="VOCALS"to strip the music bed, then passesvocals.mp3to a transcription tool (e.g. Whisper via another MCP server). The result is a clean transcript with none of the background music interfering.
Batch acapella extraction (Cursor agent):
Extract acapellas from every MP3 in./tracks/and save them to./acapellas/.
Cursor iterates the directory, callsseparate_stemswithoutputType="VOCALS"and a customoutputDirper file, and returns a list of acapella paths ready for a remix session or AI training dataset.
Vocal isolation → stems for remix (Claude Desktop):
I want to remix~/Music/original.wav. Give me the acapella and all the individual instrument stems separately.
Claude callsseparate_stemstwice — once withoutputType="VOCALS"for the clean acapella, once withoutputType="SIX_STEMS"for the full stem pack — and hands back all seven file paths organized by stem type.
Clean up a noisy podcast recording (Claude Desktop):
My recording at~/Desktop/episode-23.mp3has a lot of HVAC noise. Can you clean it up?
Claude callsclean_voicewithsource="~/Desktop/episode-23.mp3", polls for ~10–20s, and returns:
Done. Cleaned audio saved to: /Users/me/Downloads/stemsplit/dnz_abc123/episode-23_denoised.mp3
Separate stems and denoise vocals in one call (Cursor):
Extract the vocals from./stems/song.wavand clean them up for use in a transcription pipeline.
Cursor callsseparate_stemswithoutputType="VOCALS"anddenoiseVocals=true. StemSplit runs Demucs to extract the vocals, then immediately passes them through DeepFilterNet — delivering a single noise-free vocals file in one job.
Useclean_voice(or the/clean_voiceslash command) to remove background noise from any audio file usingStemSplit Voice Cleaner, powered by DeepFilterNet.
{ "source": "/Users/me/recordings/episode.mp3", "outputFormat": "MP3" }
What it removes:background hum, HVAC/air conditioning noise, hiss, wind, echo, ambient room sound, and other non-speech noise. Ideal for podcasts, voiceovers, interview recordings, and dialogue.
- Maximum duration: 60 minutes
- Output: a single cleaned audio file (same duration as input)
- Credits: 1 credit = 1 second of audio
Clean up the background noise in~/Recordings/interview.wav.
Claude callsclean_voice, polls until COMPLETED (~10–30s depending on length), and returns:
Done. Cleaned audio saved to ~/Downloads/stemsplit/<jobId>/interview_denoised.wav
Useseparate_youtube(or the/youtube_instrumentalslash command) to extract vocals and an instrumental from any YouTube video.
{ "youtubeUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
- Maximum duration: 60 minutes
- Output: vocals + instrumental, MP3, BEST quality (fixed)
- Credits: 1 credit = 1 second of video
Get me the instrumental ofhttps://youtu.be/dQw4w9WgXcQ.
Claude callsseparate_youtube, polls until COMPLETED (~60s for a 3-minute video), and returns:
Done. Files saved to ~/Downloads/stemsplit/<jobId>/ vocals.mp3 instrumental.mp3
Useseparate_soundcloud(or the/soundcloud_instrumentalslash command) to extract vocals and an instrumental from any public SoundCloud track.
{ "soundcloudUrl": "https://soundcloud.com/artist/track-name" }
- Maximum duration: 15 minutes
- Must be a public track (private tracks and sets/playlists are not supported)
- Output: vocals + instrumental, MP3, BEST quality (fixed)
- Credits: 1 credit = 1 second of audio. When track duration is unknown at submission, 4 minutes (240 credits) is held and reconciled on completion.
Remove the vocals fromhttps://soundcloud.com/artist/my-track.
Claude callsseparate_soundcloud, polls until COMPLETED, and returns:
Done. Files saved to ~/Downloads/stemsplit/<jobId>/ vocals.mp3 instrumental.mp3
Extract the acapella from every SoundCloud URL in./tracks.txtand save each to./acapellas/.
Cursor reads the file, iterates the URLs, callsseparate_soundcloudwithoutputDirset per track, and returns a list of all saved acapella paths.
Limits:100 MB / 60 minutes per file. 1 credit = 1 second of audio. Credits are deducted at job submission.
git clone https://github.com/StemSplit/stemsplit-mcp cd stemsplit-mcp npm install npm run typecheck npm run lint npm test npm run build STEMSPLIT_API_KEY=sk_live_... npm run inspect
npm run inspectlaunches theMCP Inspectorfor interactive testing.
How do I remove vocals from a song in Claude Desktop?
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





