🎬 FFmpeg MCP Server - Documentazione Completa
Server MCP (Model Context Protocol) per FFmpeg con 11 funzionalità essenziali di manipolazione video, audio e creazione contenuti multimediali.
📦 Funzionalità Disponibili
| Categoria | Tools Disponibili |
|---|---|
| 📊 Informazioni | get_video_info |
| 🔄 Conversione | convert_video, compress_video |
| 🎵 Audio | extract_audio, add_audio_to_video |
| ✂️ Manipolazione | trim_video, concatenate_videos, resize_video |
| 🖼️ Frame | create_thumbnail |
| 🎬 Creazione | create_video_from_image |
| 🌐 GIF | create_gif |
Totale: 11 Tools Essenziali
📋 Indice
- Informazioni e Analisi - - Manipolazione Audio - Manipolazione Video - Filtri ed Effetti - Thumbnail e Frame - Creazione Video - GIF e Formati Web - Preset Social Media
🚀 Installazione
Prerequisiti
- Node.js (v18 o superiore)
- FFmpeg installato e nel PATH di sistema
- Claude Desktop installato
Verifica Prerequisiti
node --version
npm --version
ffmpeg -versionSetup Progetto
# Naviga nella cartella del progetto
cd C:\DEV\MCP\mcp-ffmpeg-server
# Installa dipendenze
npm install⚙️ Configurazione
1. Configura Claude Desktop
Modifica il file di configurazione:
- Percorso:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ffmpeg": {
"command": "node",
"args": ["C:\\DEV\\MCP\\mcp-ffmpeg-server\\server.js"]
}
}
}Nota: Aggiorna il percorso C:\\DEV\\MCP\\mcp-ffmpeg-server\\server.js con il percorso effettivo del tuo progetto.
2. Riavvia Claude Desktop
Chiudi completamente Claude Desktop e riaprilo per caricare il server.
3. Verifica Connessione
In Claude Desktop, controlla che il server sia attivo in Settings → Developer.
📦 Categorie Funzionalità
| Categoria | Tools | Descrizione |
|---|---|---|
| 📊 Informazioni | 2 | Analisi e confronto video |
| 🔄 Conversione | 3 | Conversione formati e compressione |
| 🎵 Audio | 5 | Manipolazione tracce audio |
| ✂️ Manipolazione | 9 | Editing e trasformazioni video |
| 🎨 Effetti | 5 | Filtri visivi e stabilizzazione |
| 🖼️ Frame | 2 | Estrazione thumbnail e frame |
| 🎬 Creazione | 5 | Creazione video da zero |
| 🌐 Web/GIF | 3 | Ottimizzazione web e GIF |
| 📱 Social | 1 | Preset piattaforme social |
Totale: 40+ Tools
📖 Documentazione Tools
📊 Informazioni e Analisi
get_video_info
Ottiene informazioni dettagliate su un file video.
Parametri:
video_path(string, required): Percorso del file video
Esempio:
Ottieni informazioni su D:\video.mp4Output: JSON con codec, risoluzione, durata, bitrate, frame rate, ecc.
Note:
- Usa ffprobe per analizzare il file
- Ritorna formato JSON completo con tutti gli stream
compare_videos
Crea un video side-by-side per confrontare due video.
Parametri:
video1_path(string, required): Percorso primo videovideo2_path(string, required): Percorso secondo videooutput_path(string, required): Percorso outputlayout(string, default: "horizontal"): Layout - "horizontal" o "vertical"
Esempio:
Confronta D:\original.mp4 e D:\edited.mp4 orizzontalmente, salva in D:\comparison.mp4🔄 Conversione e Compressione
convert_video
Converte un video in un altro formato.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputformat(string, required): Formato output (mp4, avi, mkv, webm, mov)
Esempio:
Converti D:\video.avi in MP4 e salva come D:\video.mp4Note:
- FFmpeg rileva automaticamente il formato dall'estensione
- Mantiene codec originali quando possibile
compress_video
Comprime un video riducendone la dimensione.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputquality(string, default: "medium"): Qualità - "low", "medium", "high"
Esempio:
Comprimi D:\video.mp4 con qualità media e salva in D:\video_compressed.mp4Note:
low: CRF 28 (massima compressione, qualità ridotta)medium: CRF 23 (bilanciato, consigliato)high: CRF 18 (alta qualità, file più grande)- Usa codec H.264 e AAC per compatibilità universale
extract_segment_by_size
Estrae un segmento video per raggiungere una dimensione file specifica.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputtarget_size_mb(number, required): Dimensione target in MBstart_time(string, default: "00:00:00"): Tempo di inizio
Esempio:
Estrai un segmento di circa 50MB da D:\video.mp4 partendo dal minuto 2, salva in D:\segment.mp4🎵 Manipolazione Audio
extract_audio
Estrae la traccia audio da un video.
Parametri:
video_path(string, required): Percorso videoaudio_output_path(string, required): Percorso audio output (es: audio.mp3)
Esempio:
Estrai l'audio da D:\video.mp4 e salva in D:\audio.mp3Note:
- Usa codec libmp3lame per output MP3
- Rimuove la traccia video (-vn)
- Il formato viene rilevato dall'estensione del file output
remove_audio
Rimuove completamente l'audio da un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video output
Esempio:
Rimuovi l'audio da D:\video.mp4 e salva in D:\video_muto.mp4add_audio_to_video
Aggiunge o sostituisce l'audio di un video.
Parametri:
video_path(string, required): Percorso videoaudio_path(string, required): Percorso file audiooutput_path(string, required): Percorso outputreplace(boolean, default: true): Se true sostituisce, se false mixa
Esempio:
Sostituisci l'audio di D:\video.mp4 con D:\music.mp3 e salva in D:\video_new_audio.mp4Note:
- Con
replace: truesostituisce completamente l'audio originale - Con
replace: falsemixa l'audio nuovo con quello esistente usando amix - Il video viene copiato senza re-encoding (-c:v copy)
adjust_audio_volume
Regola il volume dell'audio in un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputvolume(number, required): Moltiplicatore volume (0.5=metà, 2.0=doppio)
Esempio:
Raddoppia il volume di D:\video.mp4 e salva in D:\video_loud.mp4generate_tone_audio
Genera un file audio con tono puro (sinusoide).
Parametri:
output_path(string, required): Percorso audio outputfrequency(number, default: 440): Frequenza in Hzduration(number, required): Durata in secondivolume(number, default: 0.5): Volume (0.0-1.0)
Esempio:
Genera un tono di 880Hz per 5 secondi in D:\tone.mp3✂️ Manipolazione Video
trim_video
Taglia un segmento dal video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputstart_time(string, required): Tempo inizio (HH:MM:SS, es: 00:01:30)end_time(string, required): Tempo fine (HH:MM:SS, es: 00:02:45)copy_codec(boolean, default: true): Se true usa -c copy (veloce), altrimenti ri-encodifica
Esempio:
Taglia D:\video.mp4 dal minuto 1:30 al minuto 2:45 e salva in D:\clip.mp4Note:
copy_codec: true- Veloce, mantiene qualità originalecopy_codec: false- Lento, ri-encodifica con libx264
concatenate_videos
Unisce più video in uno solo.
Parametri:
input_paths(array, required): Array di percorsi video (minimo 2 file)output_path(string, required): Percorso outputreencode(boolean, default: false): Se true ri-encodifica (compatibile ma lento)
Esempio:
Unisci D:\part1.mp4, D:\part2.mp4 e D:\part3.mp4 in D:\full.mp4Note:
reencode: false- Veloce con concat demuxer, richiede video con stesso codec/risoluzionereencode: true- Lento con filter_complex, funziona con qualsiasi video- Crea automaticamente file di lista temporaneo per concat demuxer
rotate_video
Ruota un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputrotation(string, required): Angolo - "90", "180", "270", "-90"
Esempio:
Ruota D:\video.mp4 di 90 gradi e salva in D:\video_rotated.mp4flip_video
Capovolge un video orizzontalmente o verticalmente.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputdirection(string, required): "horizontal" o "vertical"
Esempio:
Capovolgi D:\video.mp4 orizzontalmente e salva in D:\video_flipped.mp4resize_video
Ridimensiona un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputwidth(number, required): Larghezza (-1 per mantenere proporzioni in base all'altezza, -2 per auto)height(number, required): Altezza (-1 per mantenere proporzioni in base alla larghezza, -2 per auto)maintain_aspect(boolean, default: true): Se true mantiene le proporzioni con padding
Esempio:
Ridimensiona D:\video.mp4 a 1280x720 mantenendo proporzioni e salva in D:\video_720p.mp4Note:
- Con
maintain_aspect: trueaggiunge padding nero se necessario - Con
maintain_aspect: falsefa stretch del video - Usa -1 per una dimensione per calcolare automaticamente mantenendo proporzioni
change_framerate
Modifica il frame rate di un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputfps(number, required): Nuovo frame rate (es: 24, 30, 60)
Esempio:
Cambia il frame rate di D:\video.mp4 a 60fps e salva in D:\video_60fps.mp4change_speed
Accelera o rallenta un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputspeed(number, required): Fattore velocità (0.5=lento, 2.0=veloce)adjust_audio(boolean, default: true): Modifica anche velocità audio
Esempio:
Rallenta D:\video.mp4 a metà velocità e salva in D:\video_slow.mp4reverse_video
Inverte un video (riproduzione al contrario).
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputreverse_audio(boolean, default: false): Inverte anche l'audio
Esempio:
Inverti D:\video.mp4 e salva in D:\video_reverse.mp4🎨 Filtri ed Effetti
add_watermark
Aggiunge un watermark/logo a un video.
Parametri:
input_path(string, required): Percorso video inputwatermark_path(string, required): Percorso immagine watermark (PNG consigliato)output_path(string, required): Percorso video outputposition(string, default: "topright"): Posizione - "topleft", "topright", "bottomleft", "bottomright", "center"opacity(number, default: 1.0): Opacità (0.0-1.0)
Esempio:
Aggiungi watermark D:\logo.png in basso a destra su D:\video.mp4 con opacità 0.7add_text
Aggiunge testo sovrapposto a un video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputtext(string, required): Testo da aggiungereposition(string, default: "bottom"): Posizione - "top", "bottom", "center"font_size(number, default: 24): Dimensione fontfont_color(string, default: "white"): Colore testo
Esempio:
Aggiungi il testo "Copyright 2024" in basso a D:\video.mp4, dimensione 36, colore rossoapply_video_filter
Applica filtri video (effetti visivi).
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputfilter_type(string, required): Tipo filtro - "grayscale", "blur", "brightness", "contrast", "saturation", "sharpen"intensity(number, default: 1.0): Intensità effetto
Esempi:
Applica filtro bianco e nero a D:\video.mp4
Applica blur intensità 5 a D:\video.mp4
Aumenta luminosità di 0.3 su D:\video.mp4Note Intensità:
blur: 1-20 (pixel di sfocatura)brightness: -1 a 1 (negativo scurisce, positivo schiarisce)contrast: 0-2 (1=originale)saturation: 0-3 (0=bianco/nero, 1=originale, 3=super saturo)
stabilize_video
Stabilizza un video mosso (riduce il tremolio).
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputshakiness(number, default: 5): Livello shake detection (1-10)
Esempio:
Stabilizza D:\video_shaky.mp4 e salva in D:\video_stable.mp4Note: Processo in 2 passaggi, richiede più tempo.
add_fade
Aggiunge effetto fade in/out al video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputfade_in_duration(number, default: 0): Durata fade in in secondifade_out_duration(number, default: 0): Durata fade out in secondi
Esempio:
Aggiungi fade in di 2 secondi e fade out di 3 secondi a D:\video.mp4🖼️ Thumbnail e Frame
create_thumbnail
Crea una miniatura da un video.
Parametri:
video_path(string, required): Percorso videooutput_path(string, required): Percorso immagine output (jpg, png, ecc.)timestamp(string, default: "00:00:01"): Timestamp (HH:MM:SS, es: 00:00:30)
Esempio:
Crea thumbnail di D:\video.mp4 al secondo 30 e salva in D:\thumb.jpgNote:
- Estrae un singolo frame (-vframes 1)
- Il formato immagine viene rilevato dall'estensione
- Usa -ss per cercare il timestamp specificato
extract_frames
Estrae frame da video come immagini.
Parametri:
video_path(string, required): Percorso videooutput_pattern(string, required): Pattern output (es: frame_%04d.png)fps(number, default: 1): Frame per secondo da estrarrestart_time(string, default: "00:00:00"): Tempo inizioduration(string, optional): Durata estrazione
Esempio:
Estrai 1 frame al secondo da D:\video.mp4 e salva come D:\frames\frame_%04d.png🎬 Creazione Video
create_video_from_images
Crea un video da una sequenza di immagini.
Parametri:
input_pattern(string, required): Pattern immagini (es: img_%04d.png)output_path(string, required): Percorso video outputfps(number, default: 25): Frame rate del videoduration_per_image(number, optional): Durata ogni immagine in secondi
Esempio:
Crea video da immagini D:\Images\frame_%04d.jpg a 30fps, salva in D:\video.mp4create_video_from_image
Crea un video in loop da un'immagine statica.
Parametri:
image_path(string, required): Percorso del file immagine (jpg, png, ecc.)output_path(string, required): Percorso video outputduration(number, required): Durata del video in secondifps(number, default: 25): Frame rate del videowidth(number, optional): Larghezza del video (-1 per mantenere proporzioni)height(number, optional): Altezza del video (-1 per mantenere proporzioni)
Esempio:
Crea un video di 10 secondi da D:\immagine.jpg a 30fps, ridimensionato a 1920x1080Note:
- Usa
-loop 1di FFmpeg per ripetere l'immagine - Codec H.264 (libx264) per compatibilità universale
- Formato pixel yuv420p per massima compatibilità
- Opzionale: ridimensionamento con mantenimento proporzioni
create_slideshow
Crea uno slideshow con transizioni da immagini.
Parametri:
image_paths(array, required): Array percorsi immaginioutput_path(string, required): Percorso video outputduration_per_image(number, default: 3): Durata ogni immagine in seconditransition(string, default: "fade"): Tipo transizione - "fade", "wipeleft", "wiperight", "slideup", "slidedown"transition_duration(number, default: 1): Durata transizione in secondi
Esempio:
Crea slideshow da D:\img1.jpg, D:\img2.jpg, D:\img3.jpg con transizione fade, durata 5 secondi per immaginecreate_blank_video
Crea un video vuoto con colore solido.
Parametri:
output_path(string, required): Percorso video outputduration(number, required): Durata in secondiwidth(number, default: 1920): Larghezza videoheight(number, default: 1080): Altezza videocolor(string, default: "black"): Colore (es: "red", "blue", "#FF0000")fps(number, default: 25): Frame rate
Esempio:
Crea video vuoto di 10 secondi, 1280x720, colore blu, salva in D:\blue.mp4create_test_pattern
Crea video con pattern di test.
Parametri:
output_path(string, required): Percorso video outputduration(number, required): Durata in secondipattern(string, default: "smptebars"): Pattern - "smptebars", "testsrc", "rgbtestsrc", "yuvtestsrc"width(number, default: 1920): Larghezzaheight(number, default: 1080): Altezzafps(number, default: 25): Frame rate
Esempio:
Crea video test pattern SMPTE bars di 5 secondi, 1920x1080 in D:\test.mp4Pattern Disponibili:
smptebars: SMPTE color bars (standard TV)testsrc: Pattern gradiente con timerrgbtestsrc: Pattern RGByuvtestsrc: Pattern YUV
🌐 GIF e Formati Web
create_gif
Crea una GIF animata da video.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso GIF outputstart_time(string, default: "00:00:00"): Tempo inizio (HH:MM:SS)duration(number, optional): Durata GIF in secondifps(number, default: 10): Frame rate GIFwidth(number, default: 480): Larghezza in pixel (-1 per mantenere originale)
Esempio:
Crea GIF da D:\video.mp4 dal secondo 5 per 3 secondi, 10fps, larghezza 640pxNote:
- Usa palette generation per GIF di alta qualità
- Filtro lanczos per scaling ottimale
- Riduce automaticamente dimensione file con palette ottimizzata
optimize_for_web
Ottimizza video per pubblicazione web.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputtarget_size_mb(number, optional): Dimensione target in MBmax_width(number, default: 1920): Larghezza massima
Esempio:
Ottimizza D:\video.mp4 per il web, max larghezza 1280px, salva in D:\web.mp4Ottimizzazioni Applicate:
- Codec H.264 compatibile
- Audio AAC 128kbps
- Metadata ottimizzati (faststart)
- Ridimensionamento se necessario
📱 Preset Social Media
format_for_platform
Formatta video per specifiche piattaforme social.
Parametri:
input_path(string, required): Percorso video inputoutput_path(string, required): Percorso video outputplatform(string, required): Piattaforma target
Piattaforme Supportate:
| Platform | Risoluzione | Aspect Ratio | Bitrate Video | Audio |
|---|---|---|---|---|
youtube | 1920x1080 | 16:9 | 8000k | 192k |
instagram-post | 1080x1080 | 1:1 | 3500k | 128k |
instagram-story | 1080x1920 | 9:16 | 3500k | 128k |
tiktok | 1080x1920 | 9:16 | 3500k | 128k |
facebook | 1280x720 | 16:9 | 4000k | 128k |
twitter | 1280x720 | 16:9 | 5000k | 128k |
Esempio:
Formatta D:\video.mp4 per Instagram Story e salva in D:\story.mp4💡 Esempi Pratici
Scenario 1: Creare un Video Promozionale
1. Crea slideshow da 3 immagini con transizione fade
2. Aggiungi musica di sottofondo
3. Aggiungi watermark aziendale
4. Aggiungi testo "Promo 2024" in alto
5. Formatta per Instagram PostScenario 2: Editing Video Base
1. Taglia video dal minuto 1 al minuto 5
2. Ruota di 90 gradi
3. Ridimensiona a 1280x720
4. Aumenta luminosità di 0.2
5. Comprimi con qualità mediaScenario 3: Creare Video da Zero
1. Crea video vuoto 10 secondi colore blu
2. Genera tono audio 440Hz per 10 secondi
3. Aggiungi audio al video
4. Aggiungi testo "Test Video"Scenario 4: Ottimizzazione Multi-Piattaforma
1. Ottimizza video originale per web
2. Formatta copia per YouTube
3. Formatta copia per Instagram Story
4. Formatta copia per TikTok
5. Crea GIF preview di 5 secondi🔧 Troubleshooting
Problema: "File non trovato"
Soluzione: Verifica che:
- Il percorso sia corretto
- Usi backslash doppi
\\o singoli/ - Il file esista realmente
Problema: "FFmpeg non trovato"
Soluzione:
# Verifica installazione
ffmpeg -version
# Aggiungi FFmpeg al PATH se necessario
# Pannello di controllo → Sistema → Variabili d'ambienteProblema: Server MCP non si connette
Soluzione:
- Verifica configurazione in
claude_desktop_config.json - Controlla che il percorso del file
server-complete.jssia corretto - Riavvia Claude Desktop completamente
- Controlla i log in Settings → Developer
Problema: "Errore durante l'encoding"
Cause Comuni:
- Codec non supportato
- Formato output non compatibile
- Memoria insufficiente per video grandi
Soluzione:
- Usa
reencode: truequando unisci video - Comprimi video grandi prima di applicare filtri pesanti
- Verifica spazio su disco
Problema: Qualità video degradata
Soluzione:
- Per compressione usa
quality: "high" - Evita re-encoding multipli
- Usa
-1per mantenere proporzioni in resize - Preferisci
copy codecquando possibile
📚 Risorse Aggiuntive
Documentazione FFmpeg
- Sito ufficiale: https://ffmpeg.org/
- Documentazione: https://ffmpeg.org/documentation.html
- Wiki: https://trac.ffmpeg.org/wiki
Format Supportati
FFmpeg supporta centinaia di formati. I più comuni:
- Video: MP4, AVI, MKV, MOV, WebM, FLV
- Audio: MP3, WAV, AAC, FLAC, OGG
- Immagini: JPG, PNG, GIF, BMP, TIFF
Codec Consigliati
- Video: H.264 (libx264) - universale
- Audio: AAC - compatibilità massima
- Web: H.264 + AAC in container MP4
🤝 Contribuire
Vuoi aggiungere nuove funzionalità? Ecco come:
- Fork del progetto
- Crea un branch per la feature
- Implementa il nuovo tool in
server-complete.js - Testa accuratamente
- Aggiorna questo README
- Crea una Pull Request
📝 Note sulla Versione
Versione: 2.0.0 Data: Novembre 2024 Autore: Tutorial MCP FFmpeg Server
Changelog
v2.0.0 (Novembre 2024)
- ✨ Aggiunto supporto completo creazione video
- ✨ 40+ tools totali implementati
- ✨ Preset social media
- ✨ Filtri ed effetti avanzati
- ✨ Slideshow con transizioni
- 🐛 Fix vari miglioramenti stabilità
v1.0.0 (Novembre 2024)
- 🎉 Release iniziale
- ✅ 5 tools base
⚖️ Licenza
Questo progetto è rilasciato sotto licenza MIT.
FFmpeg è software libero rilasciato sotto LGPL 2.1+ o GPL 2+. Consulta https://ffmpeg.org/legal.html per dettagli sulla licenza FFmpeg.
🙏 Ringraziamenti
- Anthropic per il Model Context Protocol
- FFmpeg Team per l'eccellente tool multimedia
- Community Open Source per supporto e contributi
📞 Supporto
Per problemi, domande o suggerimenti:
- Apri una Issue su GitHub
- Consulta la documentazione FFmpeg
- Controlla la sezione Troubleshooting
Buon editing! 🎬✨
