MCP Server Guide
~5 minRun StemSplit from inside Claude, Cursor, Cline, Windsurf, Zed, and any MCP client
What is the StemSplit MCP server?
stemsplit-mcp is the official Model Context Protocol server for StemSplit. Install it once with npm, point your AI assistant at it, and you can run vocal removal, karaoke generation, instrumental extraction, and 4-stem / 6-stem separation directly from chat — on local audio files or YouTube URLs.
Prerequisites
- Node.js 20 or newer (
node --version) - StemSplit account with an API key (generate one)
- An MCP-compatible client (Claude Desktop, Cursor, Cline, Windsurf, Zed, etc.)
Install the MCP server
You don't actually need to install anything — the easiest path is to let your MCP client run it via npx. If you prefer a global install:
npm install -g stemsplit-mcpGet your API key
- Log in to StemSplit Settings
- Open the API Keys section
- Click Create New Key, name it "MCP Client", and copy the
sk_live_…value
Configure your MCP client
Pick the client you use. The config is the same shape everywhere — point at npx -y stemsplit-mcp and set STEMSPLIT_API_KEY in the env.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%\Claude\claude_desktop_config.json on Windows:
{
"mcpServers": {
"stemsplit": {
"command": "npx",
"args": ["-y", "stemsplit-mcp"],
"env": {
"STEMSPLIT_API_KEY": "sk_live_..."
}
}
}
}Restart Claude Desktop and the server will appear in the MCP indicator at the bottom of the chat window.
Cursor
Add to ~/.cursor/mcp.json (or use Settings → MCP):
{
"mcpServers": {
"stemsplit": {
"command": "npx",
"args": ["-y", "stemsplit-mcp"],
"env": {
"STEMSPLIT_API_KEY": "sk_live_..."
}
}
}
}Cline (VS Code)
Open Cline's settings, find MCP Servers, click Edit MCP Settings, and add the same JSON block as above. Cline reloads automatically.
Windsurf
In Settings → Cascade → MCP Servers, add the samemcpServers block. Windsurf will start the server when you open the AI panel.
Zed
Add to your Zed settings.json:
{
"assistant": {
"mcp_servers": {
"stemsplit": {
"command": "npx",
"args": ["-y", "stemsplit-mcp"],
"env": { "STEMSPLIT_API_KEY": "sk_live_..." }
}
}
}
}Try it
Open a new chat in your MCP client and try one of these prompts:
Separate the stems of /Users/me/Music/track.mp3 and give me the instrumental.Make a karaoke version of https://youtube.com/watch?v=...Split ~/Music/funk.wav into all 6 stems at the best quality and tell me where they are.How many minutes do I have left on my StemSplit account?Available tools
| Tool | What it does |
|---|---|
separate_stems | Run a local file or direct audio URL through StemSplit. Picks vocals, instrumental, both, 4-stem, or 6-stem output. Polls until done and downloads stems to your disk. |
separate_youtube | Submit a YouTube URL — StemSplit fetches the video server-side, separates it, and returns vocals + instrumental. |
get_job / list_jobs | Check status and history of stem jobs. |
get_youtube_job / list_youtube_jobs | Same as above, scoped to YouTube jobs. |
get_balance | Current credit balance in seconds and minutes. |
download_stems | Re-download outputs from any completed job with fresh presigned URLs (handy if you closed the original chat). |
The server also ships 4 resources (live balance, recent jobs, job detail, YouTube job detail) and 4 prompts (karaoke maker, vocal isolator, 6-stem sampler pack, YouTube instrumental). See the README for the full reference.
Common use cases
🎤 Karaoke from any song
Drop a YouTube URL or local MP3 into your AI assistant; get back the instrumental in seconds.
🥁 Stem extraction for production
Ask for "the drum stem from this track" and have it saved to your DAW's import folder.
🎙️ Transcription prep
Isolate vocals first, then feed them to your transcription tool for cleaner output.
🎛️ Sample pack building
Six-stem split a session, drop the result into a sampler, and start chopping.
Pro tips
- • Always pass absolute paths to
separate_stems— relative paths resolve against the MCP server's cwd, not your editor's. - • Use
SIX_STEMSonly withquality=BEST(the model only ships this combination). - • Set
STEMSPLIT_DEFAULT_OUTPUT_DIRin your env to send stems to a specific folder by default. - • Stem URLs expire after 1 hour — use
download_stemsto refresh them on old jobs.