返回市场
json转视频-mcp服务器

json转视频-mcp服务器

作者:omergocmen23 星标更新:2025-05-10

项目介绍

json2video MCP Server

这是一个使用json2video API进行视频生成的Model Context Protocol (MCP)服务器实现。此服务器提供了强大的视频生成和状态检查工具,适用于LLMs、代理或任何兼容MCP的客户端。


功能

  • 使用丰富的场景和元素支持生成视频(文本、图像、视频、音频、组件、字幕等)
  • 异步视频渲染并支持状态轮询
  • 灵活且可扩展的视频项目JSON模式
  • 设计易于与LLMs、自动化代理和兼容MCP的工具集成
  • API密钥认证(环境变量或每次请求)
  • 完整的错误处理和日志记录

安装

使用npx运行

env JSON2VIDEO_API_KEY=your_api_key_here npx -y @omerrgocmen/json2video-mcp

手动安装

npm install -g @omerrgocmen/json2video-mcp

Windows用户

如果您在Windows上遇到问题,请尝试:

cmd /c "set JSON2VIDEO_API_KEY=your_api_key_here && npx -y @omerrgocmen/json2video-mcp"

在Cursor上运行

Cursor v0.48.6+

  1. 打开Cursor设置
  2. 转到功能 > MCP服务器
  3. 点击“+ 添加新MCP服务器”
  4. 输入以下内容:
    • 名称:“json2video-mcp”(或您喜欢的名称)
    • 类型:“命令”
    • 命令:env JSON2VIDEO_API_KEY=your_api_key_here npx -y @omerrgocmen/json2video-mcp

Cursor v0.48.6+

  1. 打开Cursor设置
  2. 转到功能 > MCP服务器
  3. 点击“+ 添加新的全局MCP服务器”
  4. 输入以下代码:
    {
      "mcpServers": {
        "json2video-mcp": {
          "command": "npx",
          "args": ["-y", "@omerrgocmen/json2video-mcp"],
          "env": {
            "JSON2VIDEO_API_KEY": "your_api_key_here"
          }
        }
      }
    }
    

your_api_key_here替换为您从json2video.com获取的实际API密钥。

添加后,刷新MCP服务器列表以查看新工具。您的代理或LLM将在适当情况下自动使用json2video MCP,或者您可以明确请求它来描述您的视频生成需求。


MCP集成示例

将以下内容添加到您的mcp.json或其他配置文件中:

{
  "mcpServers": {
    "json2video-mcp": {
      "command": "npx",
      "args": ["-y", "@omerrgocmen/json2video-mcp"],
      "env": {
        "JSON2VIDEO_API_KEY": "your_api_key_here"
      }
    }
  }
}
  • your_api_key_here替换为您实际的json2video API密钥。
  • 此配置允许您的代理或LLM自动启动并与json2video MCP服务器通信。
  • 该服务器将公开generate_videoget_video_status工具供您在工作流程中使用。

配置

环境变量

  • JSON2VIDEO_API_KEY(必需):您的json2video API密钥。可以设置为环境变量或每次请求时提供。

注意: 如果您遇到“客户端已关闭”的错误,请在终端中运行以下命令:

npm i @omerrgocmen/json2video-mcp

使用方法

可用工具

1. 生成视频 (generate_video)

创建一个具有场景和元素的可定制视频项目。

描述: 使用json2video API创建一个视频项目。每个项目可以包含多个场景,每个场景可以包含各种元素,如文本、图像、视频、音频、组件、HTML、语音、音图和字幕。视频生成是异步的;使用返回的项目ID检查状态。请参阅https://json2video.com/docs/api/了解完整的模式和更多示例。

输入模式:

{
  "id": "string (可选,电影的唯一标识符)",
  "comment": "string (可选,项目描述)",
  "cache": true,
  "client_data": {},
  "draft": true,
  "quality": "high", // 其中之一:low, medium, high
  "resolution": "custom", // 其中之一:sd, hd, full-hd, squared, instagram-story, instagram-feed, twitter-landscape, twitter-portrait, custom
  "width": 1920, // 如果分辨率是自定义,则需要
  "height": 1080, // 如果分辨率是自定义,则需要
  "variables": {},
  "elements": [ /* 全局元素,见下文示例 */ ],
  "scenes": [
    {
      "id": "string (可选,唯一的场景ID)",
      "comment": "string (可选)",
      "background_color": "#000000",
      "cache": true,
      "condition": "string (可选)",
      "duration": -1,
      "variables": {},
      "elements": [ /* 见下文元素示例 */ ]
    }
  ],
  "apiKey": "string (可选)"
}

元素类型及示例:

  • 文本元素:
{
  "type": "text",
  "text": "Hello world",
  "duration": 5,
  "settings": { "font-size": "60px", "color": "#FF0000" }
}
  • 图像元素:
{
  "type": "image",
  "src": "https://images.pexels.com/photos/1105666/pexels-photo-1105666.jpeg",
  "width": 1620,
  "height": 1080,
  "x": 0,
  "y": 0
}
  • 视频元素:
{
  "type": "video",
  "src": "https://example.com/path/to/my/video.mp4",
  "duration": 7.3
}
  • 组件元素:
{
  "type": "component",
  "component": "basic/001",
  "settings": {
    "headline": { "text": "Lorem ipsum", "color": "white" },
    "body": { "text": "Dolor sit amet" }
  }
}
  • HTML元素:
{
  "type": "html",
  "html": "<h1>Hello world</h1>",
  "width": 800,
  "height": 600
}
  • 音频元素:
{
  "type": "audio",
  "src": "https://example.com/audio.mp3",
  "duration": 5
}
  • 语音元素:
{
  "type": "voice",
  "text": "This is a voiceover.",
  "voice": "en-US-Wavenet-D"
}
  • 音图元素:
{
  "type": "audiogram",
  "color": "#00FF00",
  "amplitude": 5
}
  • 字幕元素:
{
  "type": "subtitles",
  "captions": "1\n00:00:00,000 --> 00:00:02,000\nHello world!"
}

示例输入:

{
  "comment": "MyProject",
  "resolution": "full-hd",
  "scenes": [
    {
      "elements": [
        { "type": "video", "src": "https://example.com/path/to/my/video.mp4" },
        { "type": "text", "text": "Hello world", "duration": 5 },
        { "type": "image", "src": "https://images.pexels.com/photos/1105666/pexels-photo-1105666.jpeg", "width": 1620, "height": 1080, "x": 0, "y": 0 },
        { "type": "component", "component": "basic/001", "settings": { "headline": { "text": "Lorem ipsum" } } },
        { "type": "html", "html": "<h1>Hello world</h1>", "width": 800, "height": 600 },
        { "type": "audio", "src": "https://example.com/audio.mp3", "duration": 5 },
        { "type": "voice", "text": "This is a voiceover.", "voice": "en-US-Wavenet-D" },
        { "type": "audiogram", "color": "#00FF00", "amplitude": 5 },
        { "type": "subtitles", "captions": "1\n00:00:00,000 --> 00:00:02,000\nHello world!" }
      ]
    }
  ]
}

用户注意事项:

  • 每种元素类型都有其特定的必填和可选属性。请参阅https://json2video.com/docs/api/了解详细信息。
  • 您可以在场景和全局范围内混合使用不同类型的元素。
  • 对于自定义分辨率,需同时设置宽度和高度。
  • 使用返回的项目ID通过get_video_status检查视频状态。

输出:

  • 返回一个项目ID,用于与get_video_status一起使用。

2. 获取视频状态 (get_video_status)

检查视频生成作业的状态或结果。

描述: 检索之前开始的视频生成作业的状态或结果。注意:视频渲染是异步的,可能需要一些时间。如果状态不是“完成”,请稍后再试,使用相同的项目ID。

输入模式:

{
  "project": "string (必需)",
  "apiKey": "string (可选)"
}

示例输入:

{
  "project": "q663vmm2"
}

示例输出:

{
  "success": true,
  "movie": {
    "success": true,
    "status": "done",
    "message": "",
    "project": "q663vmm2",
    "url": "https://assets.json2video.com/clients/yourclient/renders/yourvideo.mp4",
    "created_at": "2025-04-27T10:44:18.880Z",
    "ended_at": "2025-04-27T10:44:28.589Z",
    "duration": 11,
    "size": 359630,
    "width": 640,
    "height": 360,
    "rendering_time": 10
  }
}

3. 创建模板 (create_template)

在json2video中创建一个新的模板。

描述: 根据给定的名称和可选描述创建一个新的模板。

输入模式:

{
  "name": "string (必需,模板的名称)",
  "description": "string (可选,模板的描述)",
  "apiKey": "string (可选)"
}

示例输入:

{
  "name": "MyTemplate",
  "description": "一个可重复使用的视频模板。"
}

输出:

  • 如果成功,返回模板ID。

4. 获取模板 (get_template)

从json2video获取模板详情。

描述: 根据模板名称检索模板详情。

输入模式:

{
  "name": "string (必需,模板的名称)",
  "apiKey": "string (可选)"
}

示例输入:

{
  "name": "MyTemplate"
}

输出:

{
    "updated_at": "YYYY-MM-DDTHH:MM:SSZ",
    "created_at": "YYYY-MM-DDTHH:MM:SSZ",
    "movie": "{\"id\":\"template1\",\"comment\":\"Example template\",\"resolution\":\"full-hd\",\"quality\":\"high\",\"scenes\":[{\"id\":\"scene1\",\"comment\":\"Scene 1\",\"elements\":[]}],\"elements\":[],\"width\":1920,\"height\":1080}",
    "name": "MyTemplate",
    "id": "MyTemplate_ID"
  }

5. 列出模板 (list_templates)

列出json2video中所有可用的模板。

描述: 列出用户可用的所有模板。

输入模式:

{
  "apiKey": "string (可选)"
}

示例输入:

{
}

输出:

[
  {
    "updated_at": "YYYY-MM-DDTHH:MM:SSZ",
    "created_at": "YYYY-MM-DDTHH:MM:SSZ",
    "movie": "{\"id\":\"template1\",\"comment\":\"Example template\",\"resolution\":\"full-hd\",\"quality\":\"high\",\"scenes\":[{\"id\":\"scene1\",\"comment\":\"Scene 1\",\"elements\":[]}],\"elements\":[],\"width\":1920,\"height\":1080}",
    "name": "MyTemplate1",
    "id": "TEMPLATE_ID_1"
  },
  {
    "updated_at": "YYYY-MM-DDTHH:MM:SSZ",
    "created_at": "YYYY-MM-DDTHH:MM:SSZ",
    "movie": "{\"id\":\"template2\",\"resolution\":\"instagram-story\",\"quality\":\"medium\",\"scenes\":[{\"id\":\"scene2\",\"comment\":\"Scene 2\",\"elements\":[]}],\"elements\":[],\"comment\":\"Another template\"}",
    "name": "MyTemplate2",
    "id": "TEMPLATE_ID_2"
  }
]