FFmpeg MCP Server
Provides FFmpeg video processing capabilities via base64 I/O, including resize video, extract audio, and get video info.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FFmpeg MCP Serverextract audio from this video as mp3"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FFmpeg MCP Server
MCP server providing FFmpeg video processing via base64 I/O. Stateless, portable, zero external dependencies.
Tools
get_ffmpeg_version
Returns FFmpeg version information.
resize_video
Resize video to standard resolutions (360p, 480p, 720p, 1080p). Outputs H.264/AAC.
Parameters:
videoBase64(string): Base64 encoded videoresolutions(array): Target resolutionsoutputFormat(string, optional): mp4 or webm (default: mp4)
Returns: Base64 encoded video for each resolution
extract_audio
Extract audio track from video.
Parameters:
videoBase64(string): Base64 encoded videoformat(string): mp3, aac, wav, or ogg
Returns: Base64 encoded audio
get_video_info
Inspect video metadata: format, duration, bitrate, resolution, codecs, streams.
Parameters:
videoBase64(string): Base64 encoded video
Returns: Formatted metadata
Design
Base64 I/O: All inputs and outputs are base64 encoded. No file paths, S3 URLs, or database storage.
Why:
Stateless: No persistent storage, cleanup, or orphaned files
Portable: Works in any Node.js environment
Simple: Single request/response cycle
Constraints:
Payload limits: ~4-6 MB depending on runtime
Best for: Thumbnails, previews, short clips, audio extraction
Not for: Feature films, 4K processing
Processing flow:
Decode base64 input → temp file
Execute FFmpeg
Read output → buffer
Delete temp files
Encode buffer → base64
Installation
FFmpeg binaries install automatically via ffmpeg-static and @ffprobe-installer/ffprobe.
npm install @windsornguyen/ffmpeg-mcpConfiguration
Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "@windsornguyen/ffmpeg-mcp"]
}
}
}VS Code
.vscode/mcp.json:
{
"servers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "@windsornguyen/ffmpeg-mcp"]
}
}
}Development
# Install dependencies
bun install
# Build
bun run build
# Test
bun test
# Run STDIO transport
bun run dev:stdio
# Run HTTP transport
bun run dev:shttpEnvironment Variables
PORT: HTTP server port (default: 3002)NODE_ENV: development | production
Testing
# Run all tests
bun test
# Run with output artifacts (kept in tests/output/)
bun test --keep-artifacts
# Single test file
bun test tests/ffmpeg.test.tsTests verify base64 round-trip encoding, resolution accuracy, and codec compliance. Output artifacts saved to tests/output/ when --keep-artifacts is set.
Architecture
Client (
src/client.ts): FFmpeg execution with base64 I/OTools (
src/tools/ffmpeg.ts): MCP tool definitionsServer (
src/server.ts): Request routingTransport (
src/transport/): STDIO and HTTP support
License
MIT License. See LICENSE file for details.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/windsornguyen/ffmpeg-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server