使用说明
FFmpeg MCP 服务器
一个模型上下文协议(MCP)服务器,它通过沙盒环境提供安全的FFmpeg功能。该服务器允许AI助手和其他MCP客户端在隔离环境中使用FFmpeg执行视频/音频处理任务。
特点/功能
- 沙盒执行所有FFmpeg命令均在隔离的临时目录中运行,以确保安全
- 文件管理在沙箱内上传、下载和管理文件
- Google Cloud Storage 集成与GCS直接集成以进行文件传输
- 安全仅允许使用FFmpeg命令,防止任意代码执行
- **RESTful API(Representational State Transfer(表述性状态转移)应用程序编程接口)**使用FastMCP作为HTTP服务器运行
安装
先决条件
- Python 3.11 或更高版本
- 您的系统上已安装FFmpeg
- (可选)用于GCS功能的Google Cloud凭据
设置
- 克隆仓库:
git clone <repository-url>
cd ffmpeg_mcp
- 使用 uv 安装依赖项(推荐):
uv sync
或者使用 pip:
pip install -e .
- (可选)为GCS集成设置Google Cloud凭据:
export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/credentials.json"
用法
启动服务器
python main.py
服务器将在 localhost:8000 默认情况下。
可用工具
1. create_sandbox()
为FFmpeg操作创建一个新的隔离沙盒环境。
返回值: 沙盒目录路径
2. run_ffmpeg_command(sandbox, command)
在指定的沙箱内执行FFmpeg命令。
参数:
sandbox(str): 沙盒目录路径command(字符串): 要执行的 FFmpeg 命令
返回值: 命令输出或错误信息
3. put_file(sandbox, filename, content)
将文件放入沙盒环境中。
参数:
sandbox(str): 沙盒目录路径filename(字符串):要创建的文件的名称content(字节):文件内容
返回值: 创建文件的完整路径
4. get_file(sandbox, filename)
从沙盒环境中检索文件。
参数:
sandbox(str): 沙盒目录路径filename(字符串): 要检索的文件的名称
返回: 文件内容以字节形式表示
5. delete_file(sandbox, filename)
从沙盒环境中删除一个文件。
参数:
sandbox(字符串): 沙盒目录路径filename(str): 要删除的文件的名称
返回: 确认信息
6. download_file(sandbox, url, filename)
从URL下载文件到沙盒中。
参数:
sandbox(str): 沙盒目录路径url(字符串): 要下载的文件的URLfilename(字符串): 保存为本地文件名
返回值: 下载文件的完整路径
7. upload_file(sandbox, filename, upload_url)
将文件从沙盒上传到指定的URL。
参数:
sandbox(str): 沙盒目录路径filename(字符串):要上传的文件的名称upload_url(字符串): 目标URL
返回: 上传响应
8. download_file_from_gcs(sandbox, gcs_url, filename)
从 Google 云存储下载文件。
参数:
sandbox(字符串): 沙盒目录路径gcs_url(str): GCS URL(gs://bucket/path)filename(字符串): 本地保存的文件名
返回值: 下载文件的完整路径
9. upload_file_to_gcs(sandbox, filename, gcs_url)
将文件上传到 Google Cloud Storage。
参数:
sandbox(str): 沙盒目录路径filename(str): 要上传的文件名gcs_url(字符串): 目标GCS URL
返回值: 确认信息
示例工作流程
# 1. Create a sandbox
sandbox = create_sandbox()
# 2. Download a video file
download_file(sandbox, "https://example.com/video.mp4", "input.mp4")
# 3. Process with FFmpeg
run_ffmpeg_command(sandbox, "ffmpeg -i input.mp4 -vf scale=720:480 output.mp4")
# 4. Retrieve the processed file
processed_video = get_file(sandbox, "output.mp4")
安全特性
- 命令限制仅允许以“ffmpeg”开头的命令
- 沙盒隔离所有操作均在临时目录内进行
- 路径验证沙盒目录在操作前会进行验证
- 错误处理针对失败操作的全面错误处理
配置
服务器运行在 localhost:8000 默认情况下。您可以在(配置中)修改主机和端口 main.py 文件:
if __name__ == "__main__":
mcp.run(transport="httpx", host="your-host", port=your-port)
依赖项
httpx用于文件下载和上传的HTTP客户端mcp[cli]模型上下文协议服务器框架google-cloud-storageGoogle云存储集成(可选)