mcp-vod

volcengine/mcp-vod

3.4

If you are the rightful owner of mcp-vod and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

Volcengine VOD MCP is a Model Context Protocol Server implementation that integrates Volcengine VOD services into LLM model contexts, allowing large models to directly operate and manage VOD resources.

Tools

Functions exposed to the LLM to take actions

guide

VOD MCP is the Volcengine VOD MCP Server.

(en)Before using the VOD service, please note:

  • create_space creates a test space without requiring parameters (recommended to create by default, space names must be globally unique)
  • Before create_space, use list_space to check existing spaces. If a space starting with 'mcp-test-space-' exists, use it. Otherwise create one.
  • After create_space use list_space list the avaliable spaces,get the SpaceName as params for upload_media
  • upload_media requires an available space. Specify a space before uploading. If none specified, check for existing test space or create one.
  • Before upload_media, use list_space to verify space availability.
  • upload_media requires user to input local video file path. Other parameters use default values unless specified.
  • If upload_media fails, recheck space availability and upload address configuration.
  • If get_play_info (get video playback URL) fails due to missing domain configuration, show error guidance.
  • submit_direct_edit_task_async video editing depends on upload_media and get_play_info to get vid. Before editing, use get_media_info to get video duration as TargetTime for video/text types.
  • submit_direct_edit_task_async requires TargetTime parameter to be non-empty array.
  • For submit_direct_edit_task_async, refer to examples for parameter construction.

(zh)在使用点播服务服务之前,需要知道以下事情:

  • 创建测试空间之前先使用 list_space 查询空间列表,如果有返回mcp-test-space-开头的空间,则直接推荐使用该空间,如果没有使用create_space创建一个测试空间,不需要传入参数,可以直接使用默认参数
  • 在使用create_space创建空间之前,先使用list_space查询可用空间,如果存在可用空间则直接使用(空间名称对应字段是SpaceName),创建完成之后可以通过list_space获取可用空间
  • 使用upload_media上传视频时需要先通过list_space查询该空间(SpaceName)是否可用,使用SpaceName作为参数(space_name),并需要输入本地文件地址
  • 可以通过upload_media上传视频到指定空间,上传视频之前需要指定一个空间,用户没有主动指定时可以先看是否已经有创建测试空间,有则直接使用,没有则创建一个测试空间
  • 上传视频需要用户输入本地视频资源地址,其他参数可以使用内部默认值,除非用户需要主动输入
  • 如果上传失败,需要重新检查空间是否可用,以及是否有设置上传地址
  • 如果指定Vid,可以通过get_media_info查询该视频的完整信息,作为参数给submit_direct_edit_task_async执行
  • get_play_info(获取视频播放地址)失败因为没有配置域名时,直接展示错误引导就行,不用再执行后续tool
  • 在执行submit_direct_edit_task_async之前,先通过get_media_info查询视频信息(获取视频时长、Vid),将视频时长作为submit_direct_edit_task_async video、text等类型的TargetTime输入,TargetTime不能为空数组,默认使用get_media_info获取视频播放信息
  • submit_direct_edit_task_async执行剪辑任务的参数拼接参照示例进行
    • 文字叠加示例Track要放在轨道的最前面 Extra示例:
      "Extra": [ { "Type": "transform", "PosX": 0, "PosY": 0, "Width": 100, "Height": 100 } ]
    • 一个视频截取多段拼接时,需要设置Extra字段,不要跟TargeTime混淆 Extra示例(EndTime、StartTime对应想要在原视频中截取的时间段): "Extra": [ { "EndTime": 15000, "StartTime": 5000, "Type": "trim" } ],
    • 转场动画需要在前一个视频中增加Extra字段 Extra设置示例(Duration是持续时间) "Extra": [{ "Type": "transition", "Source": "1182359", "Duration": 2000 }]
  • submit_direct_edit_task_async 执行完成后需要根据get_direct_edit_progress查询任务处理进度,再根据get_direct_edit_result查询处理结果
  • 任务执行完成通过get_play_info获取相应VID视频的播放信息

get_space_detail

Get space details 获取空间详细信息

list_space

List available spaces for the user 获取空间列表

create_space

Create VOD space. For test spaces, no parameters needed - uses defaults. Args: space_name: Space name, defaults to randomly generated 'mcp-test-space-' prefix project_name: Project name, defaults to 'default' space_desc: Space description, defaults to empty 创建点播空间,需要创建测试空间时不需要传入参数,可以直接使用默认参数 Args: space_name: 空间名称, 默认使用mcp-test-space-开始随机生成的空间名称 project_name: 项目名称, 默认使用default space_desc: 空间描述,默认为空

upload_media

Upload audio/video to specified space via synchronous upload Args: space_name: Space name (required) file_path: Local file path with extension (required) 同步上传音频、视频到指定的空间里 Args: space_name: 空间名称 (必须) file_path: 带有扩展名的本地文件路径 (必须)

submit_direct_edit_task_async

Submit audio/video editing task asynchronously, supporting:

  • Video splicing/composition
  • Audio-video mixing
  • Transition effects
  • Text overlays
  • And other scenarios Args: space_name: Space name (required) edit_param: Editing parameters object containing: Upload (UploadInfo): Upload settings (required) SpaceName (str): Upload space for output (required) VideoName (str): Output video name in VOD space (optional) FileName (str): Output file path (optional) Output (Output): Encoding output settings (optional) Alpha (bool): Include alpha channel (default false) Format (str): Output format (mp4/hls/mp3) Fps (float): Output frame rate (default 30fps) Codec (dict): Audio/video codec settings VideoCodec (str): Video codec (h264/h265/vp9) AudioCodec (str): Audio codec (aac) DisableVideo (bool): Audio-only output (default false) DisableAudio (bool): Video-only output (default false) Cover (dict): Frame extraction settings CanvasWithMax (bool): Follow max resolution (default false) Canvas (Canvas): Rendering canvas settings (required) Width (int|str): Output width (default 720px), use the source vid's Width default Height (int|str): Output height (default 1280px),use the source vid's Height default BackgroundColor (str): Canvas color (RGBA) Long/Short (int): Long/short side settings (requires CanvasWithRatio=true) Ratio (str): Aspect ratio (e.g. "16:9") Track (Track[]): Track list (required) Type (str): Resource type (audio/video/text - currently supported) TargetTime (list[int]): Resource timeline [start,end] in ms (required, non-empty array) Source (str): Resource URL (vid:// or tos:// format) Extra (list[dict]): Extended resources (filter types)

提交异步音视频剪辑任务,支持视频拼接、画中画、音视频混合、转场特效、文字叠加等场景 Args: space_name: 空间名称(必选) edit_param: 编辑参数对象,包含以下字段: Upload (UploadInfo): 业务上传设置(必选) SpaceName (str): 任务产物的上传空间(必选) VideoName (str): 任务产物在点播空间中的名称(可选) FileName (str): 任务产物的文件路径(可选) Output (Output): 编码输出设置(可选) Alpha (bool): 是否包含alpha通道(默认false) Format (str): 输出文件封装格式(mp4/hls/mp3) Fps (float): 输出视频帧率(默认30fps) Codec (dict): 音视频编码参数设置 VideoCodec (str): 视频编码格式(h264/h265/vp9) AudioCodec (str): 音频编码格式(aac) DisableVideo (bool): 是否仅输出音频(默认false) DisableAudio (bool): 是否仅输出视频(默认false) Cover (dict): 抽帧抽封面设置 CanvasWithMax (bool): 画布分辨率是否遵循最大分辨率(默认false) Canvas (Canvas): 渲染画布设置(可选) Width (int|str): 输出视频宽度(默认720px) Height (int|str): 输出视频高度(默认1280px) BackgroundColor (str): 画布颜色(RGBA格式) Long/Short (int): 长/短边设置(需CanvasWithRatio=true) Ratio (str): 长短边比(如"16:9") Track (Track[]): 轨道列表(必选) Type (str): 资源类型(audio/video/text,目前只支持这三种) TargetTime (list[int]): 资源在轨道中的时间,单位是ms,用户可以指定资源轨道的起始、截止时间,不能为空数组 Source (str): 资源下载地址(vid://或tos://格式) Extra (list[dict]): 拓展资源(filter类型)

 Examples:
     1. Video timeline splicing example (demonstrates how to splice 2 videos into one), request parameters:
        视频时域拼接示例(本示例演示如何将2个视频按时域拼接为一个视频),请求参数如下:
     {
        "Canvas": {
             "Height": 720,
             "Width": 1280
         },
         "Track": [
             [
                 {
                     "Source": "vid://v03567g100***2ljht77lji4oeg",
                     "TargetTime": [],
                     "Type": "video"
                 },
                 {
                     "Source": "vid://v02567g1006***grjaljhtfnjiifjg0", 
                     "TargetTime": [],
                     "Type": "video"
                 }
             ]
         ],
         "Upload": {
             "SpaceName": "vod-**-2025"
         }
     }

     2. Multi-segment video extraction example (demonstrates extracting segments at 5-15s, 25-35s, 50-60s, 80-100s and recomposing into one video), request parameters:
        视频多段截取合成示例(本示例演示如何截取一个视频里时域在 5-15 秒、25-35 秒、50-60 秒、80-100 秒的内容,并重新合成一个视频。)请求参数如下:
        - 注意,多段视频截取合成时需要使用Extra字段,StartTime、EndTime是想要在原视频中截取的时间段
        - TargetTime是想要拼接的视频在轨道里的起始、截止时间
     {
         "Canvas": {
             "Height": 720,
             "Width": 1280
         },
         "Output": {
             "Fps": 25
         },
         "Track": [
             [
                 {
                     "Extra": [
                         {
                             "EndTime": 15000,
                             "StartTime": 5000,
                             "Type": "trim"
                         }
                     ],
                     "Source": "vid://v02b6d97000***pi6vambf9r4s5qhg",
                     "TargetTime": [0, 10000],
                     "Type": "video"
                 },
                 {
                     "Extra": [
                         {
                             "EndTime": 35000,
                             "StartTime": 25000,
                             "Type": "trim"
                         }
                     ],
                     "Source": "vid://v02b6d970000***6vambf9r4s5qhg",
                     "TargetTime": [10000, 20000],
                     "Type": "video"
                 },
                 {
                     "Extra": [
                         {
                             "EndTime": 60000,
                             "StartTime": 50000,
                             "Type": "trim"
                         }
                     ],
                     "Source": "vid://v02b6d970000***i6vambf9r4s5qhg",
                     "TargetTime": [20000, 30000],
                     "Type": "video"
                 },
                 {
                     "Extra": [
                         {
                             "EndTime": 100000,
                             "StartTime": 80000,
                             "Type": "trim"
                         }
                     ],
                     "Source": "vid://v02b6d97000***i6vambf9r4s5qhg",
                     "TargetTime": [30000, 50000],
                     "Type": "video"
                 }
             ]
         ],
         "Upload": {
             "SpaceName": "edit_test",
             "VideoName": "edit_test"
         }
     }
 3. Audio-video mixing example (demonstrates combining video with audio), request parameters:
    音视频混合示例(本示例演示如何将一个视频跟一个音频合成在一起),请求参数如下:
 {
     "Canvas": {
         "Height": 720,
         "Width": 1280
     },
     "Track": [
         [
             {
                 "Source": "vid://v03567g1006***grj2ljht77lji4oeg",
                 "TargetTime": [],
                 "Type": "video"
             }
         ],
         [
             {
                 "Source": "vid://a02567g10064***rjaljhtfnjiifjg0",
                 "TargetTime": [],
                 "Type": "audio"
             }
         ]
     ],
     "Output": {
         "Format": "mp4",
         "Fps": 30
     },
     "Upload": {
         "SpaceName": "vod-**-2025"
     }
 }

 4. Video splicing with transitions example (demonstrates splicing two videos with alternating transitions), request parameters:
    视频拼接转场示例(本示例演示如何将两个视频按时域拼接为一个视频并添加交替出场的转场效果),请求参数如下:
 {
     "Upload": {
         "SpaceName": "edit_test",
         "VideoName": "video-transition-example"
     },
     "Canvas": {
         "Width": "$0|0.h",
         "Height": "$0|0.w"
     },
     "Track": [
         [
             {
                 "Source": "vid://v0d399g10001cuh***qljht476t34bc0",
                 "Type": "video",
                 "TargetTime": [0, 4000],
                 "Extra": [{
                     "Type": "transition",
                     "Source": "1182359",
                     "Duration": 2000
                 }]
             },
             {
                 "Source": "vid://v02399g10001c***r9qljht49uesktf0",
                 "Type": "video",
                 "TargetTime": [4000, 9000]
             }
         ]
     ]
 }

 5. 文字叠加示例(本示例演示如何将特定的文字压入到视频中),请求参数如下:
 {
     "Canvas": {
         "Height": 720,
         "Width": 1280
     },
     "Track": [
         [
             {
                 "Type": "text",
                 "TargetTime": [0, 10000],
                 "Text": "example-text",
                 "FontSize": 20,
                 "FontColor":"#FF0000FF",
                 "Extra": [
                     {
                         "Type": "transform",
                         "PosX": 0,
                         "PosY": 0,
                         "Width": 100,
                         "Height": 100
                     }
                 ]
             }
         ],
         [
             {
                 "Source": "vid://v03567g1006***grj2ljht77lji4oeg",
                 "TargetTime": [],
                 "Type": "video"
             }
         ]
     ],
     "Upload": {
         "SpaceName": "vod-**-2025"
     }
 }

 6. Adding filters example (demonstrates adding TransformFilter and LutFilter to video), request parameters:
   添加滤镜(本示例演示如何为视频添加TransformFilter和LutFilter),请求参数如下:
 {
     "Upload": {
         "SpaceName": "edit_test",
         "VideoName": "edit_test"
     },
     "Output": {
         "Alpha": false,
         "Fps": 24.99,
         "Codec": {
             "VideoCodec": "h264",
             "Preset": "slow",
             "Crf": 23,
             "AudioCodec": "aac",
             "AudioBitrate": 128
         },
         "DisableVideo": false,
         "DisableAudio": true
     },
     "Track": [
         [
             {
                 "Type": "video",
                 "Source": "vid://v02b6d970***5pi6vambf9r4s5qhg",
                 "TargetTime": [0, 4000],
                 "Extra": [
                     {
                         "Type": "transform",
                         "PosX": 0,
                         "PosY": 0,
                         "Width": 720,
                         "Height": 1280,
                         "Alpha": 1
                     },
                     {
                         "Type": "lut_filter",
                         "Source": "loki://1183993",
                         "TargetTime": [0, 4000],
                         "Intensity": 1
                     }
                 ]
             }
         ]
     ],
     "Canvas": {
         "Width": 720,
         "Height": 1280
     }
 }

cancel_direct_edit_task

Cancel editing task

get_direct_edit_progress

Check editing task progress (100 means completed)

get_direct_edit_result

Get editing task execution details (Status=success means completed successfully)

upload_by_url

Batch URL pull upload

get_play_info

Get video playback URL

list_domain

List space domains 获取空间域名列表

get_media_info

Get media asset information

update_publish_status

Update media publish status (can publish media) 修改媒资发布状态,可以发布媒资

get_media_list

List audio/video files uploaded to VOD space 查询当前空间音视频列表

Prompts

Interactive templates invoked by user choice

No prompts

Resources

Contextual data attached and managed by the client

No resources