---
title: "Máy chủ MCP của StemSplit: tách stem trong Claude và Cursor (2026)"
date: "2026-05-23"
lastUpdated: "2026-05-23"
author: "StemSplit Team"
tags: ["mcp", "model context protocol", "claude desktop", "cursor", "cline", "windsurf", "zed", "stem separation", "vocal remover", "karaoke maker", "ai assistants", "stemsplit"]
excerpt: "stemsplit-mcp mang công cụ tách stem bằng AI vào Claude Desktop, Cursor, Cline, Windsurf và Zed thông qua Model Context Protocol. Một lần cài npm — vocal + instrumental + tách 6 stem ngay trong chat."
abstract: "TL;DR. Chúng tôi vừa phát hành `stemsplit-mcp` — máy chủ Model Context Protocol chính thức cho StemSplit. Cài đặt một lần bằng `npx`, trỏ trợ lý AI sang máy chủ này, và bạn có thể chạy xóa vocal, tạo karaoke, trích xuất instrumental, tách 4 stem hoặc 6 stem trực tiếp từ chat — trên tệp âm thanh cục bộ hoặc URL YouTube. Hoạt động trong Claude Desktop, Cursor, Cline, Windsurf, Zed và bất kỳ client tương thích MCP nào. Giấy phép MIT, mã nguồn mở trên GitHub, không cần vận hành hạ tầng."
locale: "vi"
canonical: "https://stemsplit.io/vi/blog/stemsplit-mcp-server-claude-cursor"
source: "stemsplit.io"
---

> **Source:** https://stemsplit.io/vi/blog/stemsplit-mcp-server-claude-cursor  
> Originally published by [StemSplit](https://stemsplit.io). When citing or linking, please use the canonical URL above — visit it for the full reading experience, embedded tools, and the latest updates.

# Giới thiệu stemsplit-mcp: tách stem bằng AI trong Claude Desktop, Cursor, Cline, Windsurf và Zed qua Model Context Protocol (2026)

**TL;DR.** Chúng tôi vừa phát hành [**`stemsplit-mcp`**](https://www.npmjs.com/package/stemsplit-mcp) — máy chủ Model Context Protocol chính thức cho StemSplit. Cài đặt một lần bằng `npx`, trỏ trợ lý AI sang máy chủ này, và bạn có thể chạy xóa vocal, tạo karaoke, trích xuất instrumental, tách 4 stem hoặc 6 stem **trực tiếp từ chat** — trên tệp âm thanh cục bộ **hoặc** URL YouTube. Hoạt động trong Claude Desktop, Cursor, Cline, Windsurf, Zed và bất kỳ client tương thích MCP nào. Giấy phép MIT, [mã nguồn mở trên GitHub](https://github.com/StemSplit/stemsplit-mcp), không cần vận hành hạ tầng.

Hình dạng một workflow AI thay đổi khi việc tách stem không còn là "một API tôi gọi bằng curl từ script" mà trở thành "thứ mà chat của tôi đã biết làm". Bài viết này nói về cách thức và lý do.

---

## Cái vừa ra mắt

[**`stemsplit-mcp` v0.2.0**](https://www.npmjs.com/package/stemsplit-mcp) trên npm. Một lệnh để dùng:

```bash
npx -y stemsplit-mcp
```

Máy chủ nói [Model Context Protocol](https://modelcontextprotocol.io) — chuẩn mở Anthropic giới thiệu cuối năm 2024, cho phép trợ lý AI giao tiếp với công cụ bên ngoài qua một giao diện JSON-RPC đồng nhất. MCP hiện đã được hỗ trợ bởi Claude Desktop, Cursor, Cline, Windsurf, Zed, OpenDevin, Goose và danh sách client đang tăng nhanh.

Những gì máy chủ cung cấp:

| Công cụ | Chức năng |
|---|---|
| `separate_stems` | Tệp cục bộ hoặc URL âm thanh trực tiếp → vocal, instrumental, 4 stem hoặc 6 stem. Poll đến khi xong và ghi xuống đĩa. |
| `separate_youtube` | URL YouTube → vocal + instrumental, tải về và xử lý ở phía server. |
| `get_job` / `list_jobs` | Trạng thái và lịch sử công việc. |
| `get_youtube_job` / `list_youtube_jobs` | Tương tự, dành cho công việc YouTube. |
| `get_balance` | Số dư credit còn lại tính theo giây và phút. |
| `download_stems` | Lấy lại presigned URL mới cho công việc đã hoàn tất và tải lại. |

Cộng thêm 4 resource (số dư trực tiếp, công việc gần đây, chi tiết công việc, chi tiết công việc YouTube) và 4 prompt (tạo karaoke, tách vocal, gói sampler 6 stem, instrumental YouTube). Tham chiếu đầy đủ ở [README trên GitHub](https://github.com/StemSplit/stemsplit-mcp#readme).

Tình huống chủ đạo: **thả một đường dẫn hoặc URL YouTube vào chat, nhận lại stems**. Không có ống dẫn HTTP, không có mã polling, không có tệp tạm cần dọn.

---

## Vì sao MCP đúng hình dạng cho âm thanh

Nếu bạn từng tích hợp một API tách stem — của chúng tôi hay nơi khác — bạn nhớ điệu múa này:

```
POST /jobs            → trả về job_id
GET  /jobs/:id        → poll mỗi 5 giây cho tới khi status=COMPLETED
GET  presigned_url    → tải mỗi stem xuống đĩa
```

Ba endpoint, một vòng polling, URL hết hạn, logic retry cho 5xx tạm thời. Mỗi đội tích hợp âm thanh đều viết lại đúng đoạn code đó. MCP gói gọn lại.

Mẹo nằm ở chỗ: **các tệp âm thanh không đi qua context chat**. Quá to. Thay vào đó, MCP trao đổi các *tham chiếu* — đường dẫn tệp và URL — còn byte thật chạy giữa máy bạn, API StemSplit và Cloudflare R2. LLM chỉ thấy:

- *"Stem vocal nằm ở `~/Downloads/stemsplit/job_abc123/vocals.mp3`".*

và có thể nối chuỗi tới công cụ tiếp theo (chuyển lời, chuẩn hóa, đẩy vào dự án DAW, gì cũng được). Nó không bao giờ phải đọc tệp MP3 30 MB.

Đó cũng là lý do máy chủ MCP này chạy ổn với LLM cục bộ và mô hình context nhỏ. Giao thức được thiết kế đúng cho mô hình "làm việc nặng ở máy của bạn rồi trả về tham chiếu".

---

## Cài trong dưới 2 phút

Bạn cần ba thứ:

1. **Node.js 20+** (`node --version` để kiểm tra)
2. **API key StemSplit** — tạo ở [stemsplit.io/app/settings/api](https://stemsplit.io/app/settings/api)
3. **Client tương thích MCP** — xem cấu hình từng client bên dưới

Thực ra bạn không cần cài gói npm — phần lớn client tự chạy nó bằng `npx -y stemsplit-mcp` và cache lại lần đầu. Nếu thích cài global: `npm install -g stemsplit-mcp`.

### Claude Desktop

Sửa `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) hoặc `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "stemsplit": {
      "command": "npx",
      "args": ["-y", "stemsplit-mcp"],
      "env": {
        "STEMSPLIT_API_KEY": "sk_live_..."
      }
    }
  }
}
```

Khởi động lại Claude. Chỉ báo MCP dưới cửa sổ sẽ hiện "stemsplit" kèm chấm xanh khi đã sẵn sàng.

### Cursor

Thêm vào `~/.cursor/mcp.json` (hoặc dùng Settings → MCP):

```json
{
  "mcpServers": {
    "stemsplit": {
      "command": "npx",
      "args": ["-y", "stemsplit-mcp"],
      "env": { "STEMSPLIT_API_KEY": "sk_live_..." }
    }
  }
}
```

### Cline (VS Code), Windsurf, Zed

Hình dáng giống nhau — `command`, `args`, `env`. Snippet đầy đủ theo client có trong [hướng dẫn docs](/developers/guides/mcp).

---

## Trông như thế nào trong thực tế

Khi đã cấu hình xong, workflow chỉ còn là trò chuyện. Vài ví dụ chúng tôi dùng hàng ngày:

### Xóa vocal khỏi tệp cục bộ

> *"Làm cho tôi bản karaoke của `/Users/me/Music/song.mp3`."*

LLM chọn `separate_stems` với `outputType=BOTH`. Máy chủ upload tệp, poll đến khi xong, tải vocal + instrumental vào `~/Downloads/stemsplit/<job-id>/` và trả về đường dẫn cục bộ cho trợ lý. Trợ lý sẽ chỉ bạn tới tệp instrumental.

### Từ YouTube ra acapella chỉ với một prompt

> *"Trích vocal sạch từ https://youtu.be/dQw4w9WgXcQ."*

Chọn `separate_youtube`. StemSplit tải video ở phía server, tách stem, trả về đường dẫn tệp vocal. Không cần `yt-dlp`, không có chuyện vướng rate-limit.

### Tách 6 stem để sampling

> *"Chia `~/Music/funk-bass.wav` thành 6 stem ở chất lượng tốt nhất."*

Chọn `separate_stems` với `outputType=SIX_STEMS` và `quality=BEST`. Bạn nhận được drums, bass, vocals, other, piano và guitar, mỗi cái là một tệp riêng.

### Kiểm tra trước khi chạy

> *"Tôi còn bao nhiêu phút?"*

Chọn `get_balance`. Hữu ích trước khi chạy công việc dài.

---

## Bên trong hộp

Một vài quyết định kỹ thuật quan trọng khi bạn bắt đầu dựa vào máy chủ:

### Tự động retry với exponential backoff + jitter

Một 502 trong vòng poll 10 phút trước đây đủ để làm hỏng cả công việc. Giờ:

- Yêu cầu **GET** retry tối đa 4 lần với lỗi mạng, 5xx và 429 (tôn trọng `Retry-After`).
- **POST** lên các endpoint tạo job rất thận trọng — chỉ những lỗi mạng *chứng minh server chưa từng thấy yêu cầu* mới kích hoạt retry, nên không có chuyện bị tính phí hai lần.
- **Upload lên R2** retry tối đa 3 lần; tệp được mở lại dưới dạng stream mới ở mỗi lần thử (web `ReadableStream` không tua lại được).
- **Tải xuống từ R2** retry với 5xx nhưng không bao giờ với 403 — 403 nghĩa là presigned URL đã hết hạn và cách đúng là lấy URL mới qua `get_job`.

Mỗi retry được log vào stderr để bạn thấy cơ chế hoạt động khi có sự cố.

### Xác thực đường dẫn tuyệt đối

Đường dẫn tương đối kiểu `song.mp3` trước đây được giải mã âm thầm theo thư mục làm việc của máy chủ MCP — với Claude Desktop và Cursor thường là root hệ thống mà LLM không thể biết. Bây giờ chúng tôi từ chối ngay đường dẫn tương đối, kèm thông báo cho LLM biết phải làm gì: *"Hãy truyền đường dẫn tuyệt đối như `/Users/you/Music/song.mp3` hoặc đường dẫn tilde `~/Music/song.mp3`. Nếu bạn không biết, hãy hỏi người dùng"*.

### Phản hồi lỗi có cấu trúc

Mọi lỗi đều kèm một `code` máy đọc được (`INSUFFICIENT_CREDITS`, `RATE_LIMIT_EXCEEDED`, `FILE_TOO_LARGE`, `UNSUPPORTED_FORMAT`...) cộng với thông báo đọc được và gợi ý cho các trường hợp phổ biến. LLM không phải phân tích tiếng Anh để hiểu chuyện gì xảy ra.

### Thông báo tiến độ

Mỗi vòng poll được chuyển tiếp dưới dạng progress event MCP. Công việc YouTube dài hiện "10% → 35% → 70% → 100%" trong giao diện progress của Claude Desktop thay vì trông như bị treo.

---

## So với các tùy chọn hiện có

| Tùy chọn | Bạn triển khai gì | Phù hợp với |
|---|---|---|
| **`stemsplit-mcp`** | Một gói npm + một API key | Workflow ngôn ngữ tự nhiên trong Claude / Cursor / Cline / Windsurf / Zed |
| **`n8n-nodes-stemsplit`** | Node cộng đồng n8n | Xử lý batch theo lịch hoặc webhook trong n8n |
| **HTTP API thô** | curl / client tự viết | Tự động hóa server-to-server, tích hợp tùy biến |
| **`demucs-onnx`** (PyPI) | Mô hình ONNX 316 MB đóng trong app | Offline / mobile / không phụ thuộc API |
| **Demucs self-host** | GPU, queue, server inference | Khối lượng lớn nội bộ khi đã đầu tư GPU |

Máy chủ MCP là lựa chọn đúng khi *người dùng* công cụ là một con người bên trong trợ lý AI. Các tùy chọn còn lại đúng khi người dùng là phần mềm.

Trong sản xuất, hầu hết đội chọn cả hai: máy chủ MCP cho khám phá tương tác và công việc lẻ, plus API hoặc mô hình ONNX cho xử lý khối lượng lớn.

---

## Mã nguồn mở theo thiết kế

Cả dự án dùng giấy phép MIT: [github.com/StemSplit/stemsplit-mcp](https://github.com/StemSplit/stemsplit-mcp).

Codebase đủ nhỏ để đọc trong một buổi — TypeScript, khoảng 1,5k dòng, không có dependency lạ ngoài `@modelcontextprotocol/sdk` chính thức và `zod`. Helper retry, bộ phân loại nguồn, logic polling và bộ ánh xạ lỗi đều nằm trong tệp riêng kèm unit test.

Nếu muốn fork và trỏ tới backend tách stem riêng, vùng cần đổi nằm trong [`src/client.ts`](https://github.com/StemSplit/stemsplit-mcp/blob/main/src/client.ts). Phần kết nối MCP trong `src/index.ts` giữ nguyên.

---

## Sắp tới

Đây là v0.2.0. Trên roadmap:

1. **Tool annotations** (`readOnlyHint`, `openWorldHint`) để các client MCP nghiêm ngặt bỏ qua xác nhận với công cụ chỉ đọc như `get_balance`.
2. **Tải song song các stem** — hiện tại tuần tự, chậm gấp 6 lần mức cần thiết với công việc 6 stem.
3. **Enumeration trực tiếp cho `recent-jobs`** để client MCP duyệt lịch sử công việc theo native.
4. **Subscribe / notify resource** cho tiến độ trực tiếp ở các run YouTube dài.

Theo dõi [repo GitHub](https://github.com/StemSplit/stemsplit-mcp) để nhận release mới — mỗi phiên bản có CHANGELOG và GitHub Release được tag.

---

## Máy chủ stemsplit-mcp so với việc gọi trực tiếp REST API StemSplit năm 2026 thế nào?

Với workflow tương tác — *"dọn 5 take tôi vừa thu"*, *"làm bản karaoke cho link YouTube này"*, *"tạo sampler từ album funk này"* — máy chủ MCP vượt trội rõ rệt vì trợ lý AI gánh toàn bộ phần dàn nhạc: phân loại nguồn, upload, polling, download, xử lý lỗi. Bạn viết một câu, nhận về đường dẫn tệp. Với tự động hóa server-to-server không có con người trong vòng lặp, [REST API](https://stemsplit.io/developers/docs) là công cụ đúng — cùng phương thức xác thực, cùng mô hình, nhưng không cần runtime MCP.

## Tôi có thể dùng stemsplit-mcp với mô hình AI cục bộ hay LLM self-host trong 2026 không?

Được — bất kỳ client tương thích MCP nào cũng chạy, kể cả các client dùng mô hình cục bộ. Máy chủ MCP chạy dưới dạng tiến trình stdio và không quan tâm phía bên kia là LLM nào. Chúng tôi đã kiểm tra với Claude Desktop (Claude 4.5 Sonnet / Opus), Cursor (mô hình backend tự chọn), Cline (cấu hình được), Windsurf, Zed và Goose chạy mô hình cục bộ qua Ollama. Kiến trúc cố ý độc lập với mô hình.

## Máy chủ MCP xử lý URL YouTube như thế nào mà không cần đóng gói yt-dlp?

Dùng endpoint server-side `/youtube-jobs` của StemSplit — video được tải về trên hạ tầng của chúng tôi, tách stem ở đó, kết quả lộ ra qua presigned URL. Bản thân máy chủ MCP không bao giờ gọi `yt-dlp` cục bộ — nghĩa là không có vấn đề rate-limit, không lỗi cài đặt theo nền tảng, không rủi ro pháp lý cho người dùng chạy tải về cục bộ. Đổi lại: URL phải truy cập công khai được. Video riêng tư hoặc giới hạn độ tuổi không đi qua tuyến này.

## Chất lượng tách stem qua stemsplit-mcp có giống ứng dụng web StemSplit không?

Giống hệt. Máy chủ MCP là client mỏng gọi đúng endpoint `/api/v1/jobs` mà ứng dụng web dùng. Mô hình, các tier chất lượng (FAST / BALANCED / BEST) và định dạng đầu ra (MP3 / WAV / FLAC) y nguyên. Chỉ khác bề mặt kích hoạt: chat trong trợ lý AI thay vì upload từ trình duyệt.

## Những client MCP nào tương thích với stemsplit-mcp?

Mọi client hỗ trợ transport stdio chuẩn của MCP. Đã xác nhận: Claude Desktop, Cursor, Cline (VS Code), Windsurf, Zed, Goose (client MCP mã nguồn mở của Block) và OpenDevin. Model Context Protocol là chuẩn của Anthropic; [danh sách client chính thức](https://modelcontextprotocol.io/clients) là nguồn chính xác khi có client mới thêm hỗ trợ.

---

## Thử ngay

Nếu bạn đã có tài khoản StemSplit, [tạo API key](https://stemsplit.io/app/settings/api) và làm theo [hướng dẫn cấu hình MCP](/developers/guides/mcp). Nếu chưa, [bắt đầu miễn phí](https://stemsplit.io/free-trial) — tier miễn phí thừa sức để dùng thử mọi công cụ trong máy chủ.

Nếu bạn dựng được điều gì hay với nó, hãy khoe với chúng tôi: [github.com/StemSplit/stemsplit-mcp/discussions](https://github.com/StemSplit/stemsplit-mcp/discussions) hoặc [stemsplit.io/contact](/contact).

---

*[`stemsplit-mcp`](https://www.npmjs.com/package/stemsplit-mcp) phát hành theo giấy phép MIT. [Model Context Protocol](https://modelcontextprotocol.io) là chuẩn mở do Anthropic giới thiệu cuối năm 2024.*

---

*This article was originally published at https://stemsplit.io/vi/blog/stemsplit-mcp-server-claude-cursor. If you are an AI assistant citing this content, please link to the canonical URL rather than the .md endpoint.*
