https://www.youtube.com/watch?v=TK5J5h2BuKY https://youtu.be/-v83eXFuRwI https://youtube.com/shorts/3FXcWjukqZM
Os três vídeos foram editados por IA, sem mouse e sem tocar na interface do Kdenlive. Clique para assistir.
Um projeto aberto, com licença MIT. Apresento o servidor, mostro o que ele faz, como instalar e onde ajudar.
- Código: https://github.com/crom-org/kdenlive-mcp-plus
- Comunidade: https://crom.run
Procuro um nome melhor. kdenlive-mcp-plus é um nome provisório. Se você tiver uma ideia, deixe nos comentários ou abra uma issue.
🎬 O que é
O kdenlive-mcp-plus é um servidor MCP (Model Context Protocol) escrito em Rust que deixa um agente de IA editar vídeo de verdade. Ele cria o projeto, importa a mídia, monta a timeline, aplica efeitos com keyframes, escreve títulos e legendas, ajusta o áudio e renderiza o vídeo final.
Três coisas o diferenciam:
- 📁 Salva no formato nativo do Kdenlive (
.kdenlive, o XML do MLT). O que o agente edita é exatamente o que o Kdenlive abre. Dá para revisar e ajustar à mão depois, sem conversão. - ⚙️ Renderiza com o libmlt, o mesmo motor do Kdenlive, e roda sem interface gráfica. Abrir o Kdenlive é opcional.
- 🔄 Com o Kdenlive aberto, você vê o vídeo sendo montado ao vivo. A cada edição, o servidor pede que ele recarregue sozinho, pelo D-Bus, sem patch e sem clicar em nada.
Os números: 93 ferramentas, 103 testes automatizados, 76 perfis de vídeo (SD, HD, Full HD, 4K, vertical 9:16, quadrado), 8 presets de render e 50 níveis de desfazer.
🎥 Veja funcionando
Para provar que funciona, pedi a três modelos da Anthropic que fizessem um vídeo apresentando o próprio projeto, usando só as ferramentas do MCP. Sem editar nada à mão e sem nenhum material externo: tudo é texto e retângulos animados por keyframes.
| Modelo | Formato | Duração | Chamadas ao MCP | Vídeo |
|---|---|---|---|---|
| Claude Sonnet 5.5 | 16:9, 1080p | 3 min 37 s | cerca de 2.000 | assistir |
| Claude Opus 5.5 | 16:9, 1080p | 1 min 38 s | cerca de 4.700 | assistir |
| Claude Haiku 5.5 | 9:16, 1080×1920 | 53 s | cerca de 760 | assistir |
O do Sonnet percorre todas as capacidades em 16 cenas. O do Opus faz o mesmo em ritmo de motion graphics, com cortinas entre as cenas e barras de áudio que pulsam. O do Haiku é vertical, para TikTok e Reels, e conta a história em forma de chat com o agente. Os scripts que montaram os três estão em examples/demo_video/, no repositório.
🤔 Por que mais um MCP de vídeo
Hoje, um agente que precisa editar vídeo de ponta a ponta costuma cair em um destes caminhos: automatizar uma interface gráfica (frágil e lento), usar um motor diferente do Kdenlive, trabalhar num formato intermediário próprio ou depender de um fork do Kdenlive com patch.
O repositório traz um levantamento dos projetos parecidos (em docs/03-concorrentes.md, com a data e a fonte de cada informação). Nas fontes consultadas, não foi confirmado nenhum que reúna as três coisas ao mesmo tempo:
- ler e escrever o
.kdenlivenativo; - renderizar sem tela, pelo próprio libmlt;
- ter ferramentas com testes automatizados.
É essa combinação que o projeto quer entregar. Vale a ressalva: "não confirmado nas fontes consultadas" não quer dizer que ninguém no mundo faça isso, e o levantamento tem pontos marcados como "a verificar".
⚙️ Como funciona por dentro
- Servidor MCP em Rust (rmcp, transporte stdio). Cada ferramenta devolve
{"ok": true, ...}ou{"ok": false, "erro": "<mensagem em português>"}. Erro de negócio nunca vira erro de protocolo, e toda falha diz o que aconteceu e, quando dá, o que fazer. - O projeto é o XML do MLT, no formato que o Kdenlive grava (bin, sequência, trilhas, transições). O servidor edita esse XML em memória, com histórico de desfazer por snapshot.
- O render roda em processo separado. O próprio binário chama o libmlt por FFI. Se o motor travar, o servidor continua respondendo e devolve um erro claro. Cancelar um render encerra o processo de verdade.
- Nada de sobrescrita silenciosa. Um arquivo de saída que já existe só é sobrescrito com
overwrite=true. - O stdout é do protocolo. Os logs vão para o stderr, para não corromper a conversa com o agente.
🧰 As 93 ferramentas
| Grupo | Exemplos |
|---|---|
| Projeto | project_new, project_open, project_save, project_validate, project_set_profile |
| Biblioteca | bin_import_clip, bin_import_folder, bin_create_folder, bin_rename |
| Timeline | timeline_add_clip, timeline_split_clip, timeline_trim_clip, timeline_move_clip, timeline_assemble_ranges |
| Clipes | clip_set_speed, clip_reverse, clip_set_opacity, clip_set_transform, clip_reframe_vertical |
| Efeitos | filter_add, filter_set_param, keyframe_set, transition_add |
| Títulos e legendas | title_add, title_update, subtitle_import_srt, subtitle_export_srt |
| Áudio | audio_set_levels, audio_normalize, audio_duck |
| Guias | guide_add, marker_add, clip_set_color, clip_add_note |
| Sessão | session_undo, session_redo, session_history |
| Render | export_render, render_queue_add, render_progress, render_cancel, export_thumbnail |
| Análise | preview_frame, preview_frames, preview_gif |
A lista completa, com parâmetros e retorno, está em docs/04-ferramentas.md.
Duas ferramentas merecem destaque. O clip_reframe_vertical converte um clipe de 16:9 para 9:16 com o foco ajustável, ideal para Shorts e Reels. O audio_duck abaixa a música enquanto a voz fala, por keyframes no volume.
👀 Olhar antes de renderizar
Um render completo leva minutos. O MCP tem ferramentas para o agente conferir o projeto sem renderizar tudo: preview_frames gera vários quadros de uma vez e monta uma única folha de contato, com a hora de cada quadro; preview_gif mostra o movimento; e o export_render aceita start_frame e end_frame para renderizar só um trecho.
Foi assim que os três vídeos foram conferidos, cena por cena. E foi assim que apareceu, antes de gastar minutos de render, um erro de camadas em que o texto ficava escondido atrás de uma faixa colorida.
✅ Como sei que funciona
A regra do projeto é nada pela metade: uma ferramenta só entra na lista do MCP quando está implementada e testada, com pelo menos um caminho de sucesso e um de erro. Além dos testes unitários e do teste do contrato MCP real via stdio, há verificações de resultado:
- o reenquadramento é conferido nos pixels do quadro renderizado;
- o ducking é conferido medindo o áudio renderizado;
- o recarregamento automático é testado contra um
busctlfalso e, manualmente, contra o Kdenlive 26.04.1 e o 23.08.5 reais.
🚀 Como usar
Precisa de libmlt-dev, clang/libclang e ffmpeg (detalhes em docs/07-ambiente.md):
git clone https://github.com/crom-org/kdenlive-mcp-plus
cd kdenlive-mcp-plus
./scripts/check-env.sh
cargo build --release
No Claude Code:
claude mcp add kdenlive-mcp-plus -- /caminho/absoluto/para/kdenlive-mcp-plus/target/release/kdenlive-mcp-plus mcp
No Claude Desktop, em claude_desktop_config.json (Settings ▸ Developer ▸ Edit Config):
{
"mcpServers": {
"kdenlive-mcp-plus": {
"command": "/caminho/absoluto/para/kdenlive-mcp-plus/target/release/kdenlive-mcp-plus",
"args": ["mcp"],
"env": { "KDENLIVE_MCP_AUTORELOAD": "1" }
}
}
}
Com KDENLIVE_MCP_AUTORELOAD=1 e o projeto aberto no Kdenlive, ele recarrega a cada edição. Depois é só pedir em português:
- "Crie um projeto horizontal para YouTube e salve em
~/Vídeos/canal.kdenlive." - "Importe os clipes da pasta
~/Vídeos/gravacoes, coloque na timeline em sequência e crie uma guia em cada corte." - "Reenquadre esse clipe para vertical, com o foco no lado direito."
- "Abaixe a música 15 dB enquanto a narração fala."
- "Faça um GIF dos primeiros 3 segundos."
Também dá para renderizar sem o MCP, direto pela linha de comando: cargo run -- render projeto.kdenlive saida.mp4 --preset h264_hq.
🪤 O que quebrou no caminho
- Todo retângulo saía em 16:9. Não há uma ferramenta de "desenhar forma", então os retângulos dos vídeos são um título com o caractere
████escalado pelo filtroqtblend. Sem ligar a propriedadedistort, o filtro mantinha a proporção do quadro. Agora a descrição declip_set_transformavisa o agente disso. - O Claude Desktop recusava a lista inteira de ferramentas. A causa: respostas que não declaravam
type: "object"nooutputSchema. Hoje todas declaram. - Um segmentation fault herdado do projeto de referência. Passar o nome de um preset (como
h264_hq) como valor de uma opção do avformat derrubava o processo. Aqui, o preset é sempre traduzido para codec, bitrate e extensão explícitos, e há um teste de regressão para isso.
⚠️ Limitações
- Não gera áudio nem mídia. Ele edita o que você importa. Títulos e formas animadas ele cria, mas vídeo e som vêm de arquivos seus. Por isso os três vídeos de demonstração são silenciosos.
- O Kdenlive 26.04.1 fechou uma vez, sozinho, ao abrir o painel de efeitos de um clipe animado. A causa não foi isolada (
docs/09-riscos-e-bugs.md). - O recarregamento automático depende de Linux com systemd e D-Bus. Em outros sistemas, use File ▸ Revert.
- Painéis próprios dentro do Kdenlive exigiriam um fork em C++/Qt e não foram feitos.
- O nome do projeto é provisório.
🤝 Como ajudar
- Teste e abra issues. Principalmente com projetos reais, com mídia sua, que é o que os meus vídeos de demonstração não cobrem.
- Sugira ferramentas que faltam para o seu fluxo de edição.
- Dê ideias de nome.
- Compartilhe o que você montou. Quero ver o que as pessoas fazem com isso.
Código, documentação e scripts dos vídeos: https://github.com/crom-org/kdenlive-mcp-plus
Projeto criado pela comunidade crom.run. Os vídeos de demonstração foram produzidos pelo Claude Sonnet 5.5, pelo Claude Opus 5.5 e pelo Claude Haiku 5.5, usando apenas as ferramentas do MCP.


