Skip to main content
Glama

videolab-mcp

Claude(または任意のMCPホスト)をショート動画用のハンズオン動画編集ツールに変えるMCPサーバーです。音楽ライブラリの閲覧や新規トラックの生成、Veoによる静止画のアニメーション化、OmniHumanによるポートレートのリップシンク、スクリプトの作成・書き換え、ElevenLabsによるナレーション合成が可能です。FFmpegでタイムラインを結合し、結果を再生した後、音楽やナレーション、特定のクリップを差し替えることで、最初からレンダリングし直すことなく低コストで反復編集が行えます。

また、長文テキスト(PDF、書籍、論文など)を、AI生成のナレーション、キャプション、Bロールを備えた構造化ドキュメンタリー動画に変換するtext-to-documentaryスキルも搭載しています。

スタンドアロンでポータブル、設定も可能です。APIキーはご自身でご用意ください。

含まれるもの

ワークフロー全体をカバーするツール:

カテゴリ

ツール

音楽

list_music, preview_music, generate_music

Bロール

list_broll, preview_broll

シーンアセット

list_scene_assets, get_scene_asset

画像

generate_image, list_images, get_image

ナレーション (ElevenLabs)

list_voices, generate_voiceover, preview_voiceover, list_voiceovers

スクリプト (Anthropic)

generate_script, rewrite_script, get_script, list_scripts

動画結合 (FFmpeg)

assemble_promo, swap_music, swap_voiceover, swap_clip, play_render, list_recent_renders, describe_render

アニメーション (Veo)

animate_image_to_video

トーキングヘッド (Fal OmniHuman)

generate_talking_head

ドキュメンタリー

extract_pdf, split_chapters, plan_documentary_scenes, validate_attention

診断

ping, describe_capabilities

ツール呼び出しを消費せずに閲覧するためのリソース: library://music, library://broll, library://renders, library://voiceovers, library://scripts, library://scenes

ガイド付きのマルチステップフローのためのプロンプト: make-scene-promo, remix-render, compose-music-for-scene

skills/ 内のスキル: text-to-documentary — PDF/書籍から、章立てされた構造的な物語構成を持つドキュメンタリー動画を作成します。

Related MCP server: Video MCP

要件

  • Node.js 18以上

  • PATH上のFFmpeg(または設定で ffmpeg.binary に絶対パスを指定)

  • 使用するプロバイダーのAPIキー(事前必須ではありません。初回呼び出し時に遅延初期化されます)

クイックスタート

git clone <this-repo> videolab-mcp
cd videolab-mcp
npm install
npm run build
cp videolab.config.example.json videolab.config.json
cp .env.example .env  # then fill in keys you have

Claude Desktopに接続します(macOSの場合は ~/Library/Application Support/Claude/claude_desktop_config.json、Windowsの場合は %AppData%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "videolab": {
      "command": "node",
      "args": ["C:\\path\\to\\videolab-mcp\\build\\index.js"],
      "env": {
        "ELEVENLABS_API_KEY": "...",
        "ANTHROPIC_API_KEY": "...",
        "GOOGLE_VEO_API_KEY": "...",
        "FAL_KEY": "...",
        "VIDEOLAB_CONFIG": "C:\\path\\to\\videolab-mcp\\videolab.config.json"
      }
    }
  }
}

Claude Desktopを再起動します。チャットを開き、ping を呼び出して接続を確認してください。

設定

2つのファイルを使用します。.env はシークレット用です:

ELEVENLABS_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_VEO_API_KEY=
FAL_KEY=

videolab.config.json はそれ以外(ストレージ、プロバイダー、FFmpegフラグ、デフォルト値)の設定用です。サンプルファイルは、ローカルストレージ、JSONインデックス、ElevenLabs/Anthropic/Veo/Falプロバイダー、モバイル(9:16)デフォルトといった、依存関係のない合理的な設定になっています。

ウォークスルー — プロモーション動画をゼロから作成する

Claude DesktopでMCPサーバーを接続した状態で:

User: Make a 20-second mobile promo for the test scene.

Claude:
  → list_scene_assets({ sceneRef: { key: "test-scene" } })
     → 3 assets: magenta, cyan, orange

  → generate_script({
      context: "Test scene with three coloured backdrops",
      durationSeconds: 20, tone: "punchy"
    })
     → scriptId: script_a3f, slot breakdown shown

  → generate_voiceover({ text: "<the script>" })
     → voiceoverId: vo_8d2

  → generate_music({
      prompt: "driving electronic, slow build, retro synth pad",
      durationMs: 20000
    })
     → trackId: music_4e1

  → assemble_promo({
      timeline: {
        platform: "mobile",
        slots: [
          { source: { kind: "scene", id: "asset-test-magenta" }, durationMs: 7000 },
          { source: { kind: "scene", id: "asset-test-cyan" },    durationMs: 7000 },
          { source: { kind: "scene", id: "asset-test-orange" },  durationMs: 6000 }
        ]
      },
      voiceoverId: "vo_8d2",
      musicId: "music_4e1"
    })
     → renderId: render_94c, autoplays in default video player

User: Make the music more chill.

Claude:
  → generate_music({ prompt: "soft ambient pad, gentle rhythm", durationMs: 20000 })
     → trackId: music_c70
  → swap_music({ renderId: "render_94c", newMusicId: "music_c70" })
     → renderId: render_d11 (rev of render_94c) — only re-mixes audio (~2s)

User: Replace the orange shot with a Veo animation of the magenta image zooming in.

Claude:
  → animate_image_to_video({
      imageSource: { kind: "scene", id: "asset-test-magenta" },
      prompt: "slow camera push-in, dust particles drifting"
    })
     → clipId: broll_veo_a8b
  → swap_clip({
      renderId: "render_d11",
      slotIndex: 2,
      newSource: { kind: "broll", id: "broll_veo_a8b" }
    })
     → renderId: render_2f9 (rev of render_d11)

反復ループ

ワークフローを快適にするポイントです:

  • assemble_promo は、スロットごとの中間ファイル (slot_*.mp4)、音声なしの visuals.mp4、オーディオミックス、最終的な output.mp4 をすべて media/renders/<renderId>/ 配下に書き出します。

  • swap_music / swap_voiceover は、親の visuals.mp4 を再利用し、オーディオのみを再ミックスします。通常、所要時間は約2秒です。

  • swap_clip は、ビジュアルストリームを再構築し、オーディオを再ミックスします。通常、所要時間は約5〜10秒です。

  • すべてのレンダリングは parentId でリンクされた新しい renderId となるため、以前のバージョンを失うことはありません。

Text-to-documentaryモード

skills/text-to-documentary/ スキルは、PDF、書籍、または貼り付けられた長文テキストを、章ごとに約5分のドキュメンタリー動画シリーズに変換します。各動画は構造化された物語構成(フック → コアアイデア → 例 → パターン割り込み → マイクロ要約 → クリフハンガー)を持ち、ElevenLabsのタイムスタンプによるカラオケ風キャプションと、AI生成のBロールが含まれます。

使用ツール: extract_pdf, split_chapters, plan_documentary_scenes, validate_attention, generate_voiceover, generate_image, animate_image_to_video, generate_music, assemble_promo

Claude Codeやスキルをサポートするホストを使用している場合、トリガー(「このPDFをドキュメンタリーにして」「この本から動画を作って」など)でスキルが自動的に読み込まれます。それ以外の場合は、skills/text-to-documentary/SKILL.md を読んで手順を確認し、直接ツールを呼び出してください。

カスタムシーンアセットプロバイダー

このサーバーはシーンアセットに対してプロバイダー非依存です。同梱の json-manifest プロバイダーはJSONファイルから読み込みます。より複雑なもの(CMS、データベース、APIなど)は SceneAssetProvider として実装します:

export interface SceneAssetProvider {
  readonly kind: string;
  describeRefShape(): string;  // shows up in the tool description so the host knows what to send
  listAssets(ref: SceneRef): Promise<SceneAsset[]>;
  getAsset(id: string): Promise<SceneAsset | null>;
}

実装を src/providers/scene-assets/<your-name>.ts に配置し、src/providers/factory.ts の buildSceneAssets に登録し、src/config.ts の設定スキーマに追加してください。ストレージバックエンド(S3、Azure)も同様のパターンです。src/providers/types.ts:StorageProvider を参照してください。

プロバイダーマトリックス

対象

デフォルトプロバイダー

環境変数

設定フィールド

ストレージ

local

—

storage.kind

インデックス (アセットメタデータ)

json

—

index.kind

音楽生成

ElevenLabs Music

ELEVENLABS_API_KEY

providers.musicGen

TTS

ElevenLabs

ELEVENLABS_API_KEY

providers.tts

スクリプト LLM

Anthropic Claude

ANTHROPIC_API_KEY

providers.llm

画像生成

Gemini Nano Banana

GOOGLE_VEO_API_KEY

providers.imageGen

画像から動画へ

Google Veo

GOOGLE_VEO_API_KEY

providers.animate

トーキングヘッド

Fal OmniHuman

FAL_KEY

providers.talkingHead

シーンアセット

json-manifest

—

providers.sceneAssets

環境変数によるモデルのオーバーライド: ANTHROPIC_MODEL, ELEVENLABS_MUSIC_MODEL, VEO_MODEL, VEO_ENDPOINT, VEO_POLL_INTERVAL_MS, VEO_POLL_TIMEOUT_MS, FAL_OMNIHUMAN_MODEL, PROMO_VIDEO_LOG_LEVEL

ライセンス

MIT — LICENSE を参照してください。

Related MCP Connectors

Related MCP Servers