capcut-mcp
# π¬ CapCut MCP Server (Upgraded by Antigravity)
μ΄ νλ‘μ νΈλ **CapCut Pro** μμ νΈμ§μ AI μμ΄μ νΈκ° μλ²½νκ² μλνν μ μλλ‘ μ§μνλ **Model Context Protocol (MCP)** μλ²μ
λλ€. κΈ°μ‘΄ μ€νμμ€ κΈ°λ° μμ **μ°λ¦¬ ν(Antigravity & Luca Agent)**μ νμμ λ§μΆ° λ λλ§ νμ΄νλΌμΈ, μμμκΆ ν°νΈ μ§μ λ° νΈλμ§μ
μ²λ¦¬ λ‘μ§μ λν μ
κ·Έλ μ΄λνμ΅λλ€! π
## ⨠무μμ΄ μ
κ·Έλ μ΄λ λμλμ? (Antigravity's Touch)
1. **VectCutAPI μμ μ± κ·Ήλν** π οΈ
- Python κΈ°λ°μ λ‘컬 λ λλ§ μλ²μΈ `VectCutAPI`λ₯Ό λ΄μ₯νκ³ , `save_draft_impl.py` λ±μ μ μ₯ λ‘μ§μ κ°μ νμ¬ μΊ‘μ»· μ΄μ(Draft)μ΄ μμ νκ² μ¬μ©μ ν΄λμ κ½νλλ‘ μμ νμ΅λλ€.
2. **λ€κ΅μ΄(CJK) ν°νΈ μλ²½ μ§μ** π
- κΈ°λ³Έ `System` ν°νΈ μλ¬λ₯Ό ν΄κ²°νκ³ , `SourceHanSansCN_Regular` λ± λ€κ΅μ΄/νκΈ μ§μ ν°νΈλ₯Ό λ§€ννμ¬ μλ§ κΉ¨μ§ μμ΄ κΉλνκ² μΆλ ₯λλλ‘ ν°νΈ μμ§μ μ
κ·Έλ μ΄λνμ΅λλ€.
3. **κ³ κΈ νΈλμ§μ
λ° ν€νλ μ 보κ°** π
- `Dissolve`, `Mix` λ± μΊ‘μ»· κ³ μ μ λμλ¬Έμ κ΅¬λΆ νΈλμ§μ
μλ¬λ₯Ό ν΄κ²°νκ³ , μ€μΈ/μ€μμ λ± `add_video_keyframe`μ νμ©ν λ―ΈμΈ μ λλ©μ΄μ
μ μ΄λ₯Ό κ°ννμ΅λλ€.
4. **μ νλΈ μΌμΈ μλν μ΅μ ν** π±
- 9:16 λΉμ¨(μΈλ‘ν) λ λλ§ λ° λμ‘ΈλΈ νΈλμ§μ
μ μλ μ μ©νμ¬ μμμ λ§μΆ° μ΄λ―Έμ§λ₯Ό λ‘€λ§νλ μ νλΈ νμ΄νλΌμΈμ μ΅μ νλμμ΅λλ€.
---
## π μμνκΈ° (Installation & Setup)
CapCut MCPλ **2λ¨κ³ ꡬ쑰**λ‘ μ€νλ©λλ€. Python μλ²(VectCutAPI)κ° μΊ‘μ»· μ΄μμ λ§λ€κ³ , Node.js μλ²(MCP)κ° μμ΄μ νΈμ μν΅ν©λλ€.
### 1. Python λ°±μλ μ€ν (VectCutAPI)
```bash
cd VectCutAPI
pip install -r requirements.txt
python capcut_server.py
```
> κΈ°λ³Έμ μΌλ‘ `http://localhost:9000` (λλ 9001)μμ λκΈ°ν©λλ€.
### 2. Node.js MCP μλ² μ°κ²°
μν°κ·ΈλλΉν° `mcp_config.json`μ λ€μ μ€μ μ μΆκ°νλ©΄ μμ΄μ νΈκ° μλμΌλ‘ μΈμν©λλ€.
```json
{
"mcpServers": {
"capcut-mcp": {
"command": "node",
"args": ["C:/Users/User/Documents/capcut-mcp/dist/index.js"],
"env": {
"CAPCUT_API_URL": "http://localhost:9000"
}
}
}
}
```
---
## π οΈ μ 곡λλ λꡬ (Available Tools)
AI μμ΄μ νΈλ λ€μ 11κ°μ§ λꡬλ₯Ό ν΅ν΄ λΉλμ€λ₯Ό νλ‘κ·Έλλ° λ°©μμΌλ‘ νΈμ§ν©λλ€.
1. **`capcut_create_draft`**: μλ‘μ΄ νλ‘μ νΈ μ΄μ μμ± (HD, 4K, μΈλ‘ν λ±)
2. **`capcut_add_video`**: μμ μΆκ° λ° μ»·νΈμ§, λ°°μ, λ³Όλ₯¨ μ‘°μ
3. **`capcut_add_audio`**: λ°°κ²½μμ
, BGM λ° νμ΄λμΈ/μμ μ μ©
4. **`capcut_add_text`**: νμ΄ν, ν
μ€νΈ μΆκ° (μμ, κ·Έλ¦Όμ, μ λλ©μ΄μ
)
5. **`capcut_add_image`**: μ΄λ―Έμ§ μΆκ° λ° λ°°μΉ (ν¬κΈ°, νμ )
6. **`capcut_add_subtitle`**: SRT νμμ μλ§ μλ μμ± λ° μ±ν¬ λ§€ν
7. **`capcut_add_keyframe`**: λΆλλ¬μ΄ μ€μΈ/μ€μμ λ± ν€νλ μ μ λλ©μ΄μ
μμ±
8. **`capcut_add_effect`**: λΈλ¬, λΉλ€ν
λ± νλ©΄ μ΄ννΈ μΆκ°
9. **`capcut_add_sticker`**: μ€ν°μ»€ λ° μ΄λͺ¨μ§ μ½μ
10. **`capcut_save_draft`**: μλ£λ νλ‘μ νΈλ₯Ό μΊ‘μ»· λ°μ€ν¬ν μ±μΌλ‘ μΆμΆ
11. **`capcut_get_duration`**: μμ/μμμ μ νν κΈΈμ΄(λ©νλ°μ΄ν°) νμΈ
---
## π μλν μμ (Workflow Example)
```python
# μμ΄μ νΈ νμ΄νλΌμΈ λμ μμ
draft = req("/create_draft", {"width": 1080, "height": 1920}) # μΈλ‘ν μΌμΈ
req("/add_audio", {"draft_id": draft["draft_id"], "audio_url": "music.wav", "start": 0, "end": 60})
req("/add_image", {"draft_id": draft["draft_id"], "image_url": "scene.png", "transition": "Dissolve"})
req("/add_subtitle", {"draft_id": draft["draft_id"], "srt": "lyrics.srt", "font": "SourceHanSansCN_Regular"})
req("/save_draft", {"draft_id": draft["draft_id"]})
```
## π Acknowledgments
- Based on the original [VectCutAPI](https://github.com/sun-guannan/VectCutAPI) framework.
- Upgraded and Maintained by the **Antigravity & Luca Agent Team** for hyper-automated video production.
TDQS
Scored across 11 tools
Most tools have distinct purposes (draft creation, media addition, effects, saving), but add_image and add_sticker are very similar (both overlays with positioning/scaling), and add_text vs add_subtitle serve different text use cases but could still cause confusion for an agent.
All tools follow a consistent 'capcut_verb_noun' pattern: create_draft, add_video, add_audio, add_image, add_sticker, add_text, add_subtitle, add_effect, add_keyframe, get_duration, save_draft. The verbs are uniform and descriptive.
With 11 tools, the set is well-scoped for a video editing assistant. Each tool covers a core operation (create, add media types, effects, keyframes, metadata, save) without being bloated.
The tool set covers creating drafts and adding various elements, but lacks delete or update operations for draft elements, no export or rendering tool, and no draft listing. Agents have no way to remove mistakes or finalize a video, limiting workflow autonomy.