Grok Imagine Video MCP Server
MCP server for generating, editing, and batch processing videos using xAI's Grok Imagine Video API, with support for text-to-video, image-to-video, and video editing via natural language prompts.
README
Grok Imagine Video MCP Server
xAI の Grok Imagine Video API 用 MCP (Model Context Protocol) サーバー。テキストプロンプトからの動画生成、画像からの動画生成(Image-to-Video)、既存動画の編集をサポートします。
クイックスタート (npx)
最も簡単な方法は npx を使用することです:
# APIキーを設定
export XAI_API_KEY="xai-your-api-key"
# サーバーを実行
npx grok-imagine-video-mcp-server
機能
- 動画生成(Text-to-Video): テキストプロンプトから新規動画を生成
- 動画生成(Image-to-Video): 画像を入力として動画を生成(プロンプト省略可)
- 動画生成(Reference-to-Video / R2V): 参照画像をスタイル/コンテンツ参照として動画を生成
- 動画編集: 既存動画をプロンプトで編集
- 動画延長(Extension): 既存動画の続きを生成して延長
- バッチ処理: CLIで複数動画を一括処理
- 多様なアスペクト比をサポート(16:9, 4:3, 1:1, 9:16 など)
- 解像度: 480p, 720p, 1080p
- 動画長: 1〜15秒(デフォルト8秒。編集時は元動画と同じ長さ、延長は1〜10秒)
- 非同期処理対応(ポーリングによる結果取得、進捗・コスト表示)
grok-imagine-video 1.5 対応: 1080p 解像度、Reference-to-Video、動画延長、構造化エラー/進捗、実コスト(
cost_in_usd_ticks)表示に対応しています。
サポートモデル
| モデル | 機能 | 備考 |
|---|---|---|
grok-imagine-video |
T2V / I2V / R2V / 編集 / 延長 | 推奨・デフォルト。1.5世代の各機能はこのモデルで動作 |
grok-imagine-video-1.5 |
I2V 中心(pinned版) | T2V / R2V / 延長は非対応。特定用途のみ |
モデルと機能の対応について(実機検証済み): Reference-to-Video・動画延長・Text-to-Video はいずれも基本モデル
grok-imagine-videoで動作します(公式ドキュメントの例も全てgrok-imagine-videoを使用)。pinned 版のgrok-imagine-video-1.5は T2V/R2V/延長を受け付けないため、通常はデフォルトのgrok-imagine-videoを使用してください。1080p について: xAI の動画生成 API は現状
480p/720pのみで、720p が上限です(公式: Video Generation)。1080pを指定すると1080p video resolution is not available for this model.が返ります。これはアカウントの権限や Grok のサブスク(SuperGrok 等)とは無関係で、API がまだ 1080p を提供していないためです(1080p は将来のロードマップ項目)。720p/480pを使用してください。なお xAI の API 課金は消費者向け Grok サブスクとは別系統(前払いクレジット/請求)で、サブスク加入で API 機能が解放されることはありません。
必要条件
- Node.js 18.0.0 以上
- xAI API キー(console.x.ai から取得)
インストール
方法1: npx(推奨)
npx grok-imagine-video-mcp-server
方法2: グローバルインストール
npm install -g grok-imagine-video-mcp-server
grok-imagine-video-mcp-server
設定
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
XAI_API_KEY |
Yes | xAI API キー |
DEBUG |
No | true でデバッグログを有効化 |
OUTPUT_DIR |
No | 動画のデフォルト出力ディレクトリ |
VIDEO_POLL_INTERVAL |
No | ポーリング間隔(ミリ秒、デフォルト: 5000) |
VIDEO_MAX_POLL_ATTEMPTS |
No | 最大ポーリング回数(デフォルト: 120) |
Claude Desktop 設定
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"grok-imagine-video": {
"command": "npx",
"args": ["-y", "grok-imagine-video-mcp-server"],
"env": {
"XAI_API_KEY": "xai-your-api-key-here"
}
}
}
}
ツール
generate_video
テキストプロンプトまたは画像から動画を生成します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | 条件付き | 生成する動画の説明テキスト。T2V/R2V では必須、I2V(画像指定時)では省略可 |
output_path |
string | No | 出力ファイルパス(デフォルト: generated_video.mp4) |
model |
string | No | モデル(デフォルト: grok-imagine-video) |
duration |
number | No | 動画長(1-15秒、デフォルト: 8) |
aspect_ratio |
string | No | アスペクト比(デフォルト: 16:9) |
resolution |
string | No | 解像度(480p/720p/1080p、デフォルト: 720p) |
image_url |
string | No | Image-to-Video用の入力画像URL |
image_path |
string | No | ローカル画像ファイルパス(base64 data URLとしてAPIに送信) |
reference_images |
array | No | Reference-to-Video用の参照画像(各要素は url / path / file_id のいずれか) |
注意:
image_urlとimage_pathは同時に指定できません。また、画像(I2V)とreference_images(R2V)も同時指定できません。
edit_video
既存動画を編集します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | Yes | 編集内容の説明 |
video_url |
string | Yes | 編集する動画のURL(公開アクセス可能、最大8.7秒) |
output_path |
string | No | 出力ファイルパス(デフォルト: edited_video.mp4) |
model |
string | No | モデル(デフォルト: grok-imagine-video) |
注意: 編集後の動画は元動画と同じ長さになります。
durationパラメータは編集時には指定できません。
extend_video
既存動画の続きを生成して延長します(grok-imagine-video 1.5)。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | Yes | 続きで何が起こるかの説明 |
video_url |
string | Yes | 延長する動画のURL(公開アクセス可能 or base64 data URL、.mp4) |
output_path |
string | No | 出力ファイルパス(デフォルト: extended_video.mp4) |
model |
string | No | モデル(デフォルト: grok-imagine-video) |
duration |
number | No | 延長セグメントの長さ(1-10秒、デフォルト: 6) |
バッチ処理 CLI
コマンド書式
grok-imagine-video-batch <config.json> [options]
または npx 経由:
npx grok-imagine-video-batch <config.json> [options]
基本的な使用例
# 設定ファイルでバッチ実行
npx grok-imagine-video-batch batch.json
# コスト見積もりのみ(実行しない)
npx grok-imagine-video-batch batch.json --estimate-only
# 出力先とフォーマットを指定
npx grok-imagine-video-batch batch.json --output-dir ./videos --format json
# ポーリング設定をカスタマイズ
npx grok-imagine-video-batch batch.json --poll-interval 10000 --max-poll-attempts 60
# 高並列実行(タイムアウト延長)
npx grok-imagine-video-batch batch.json --max-concurrent 5 --timeout 1800000
# ヘルプ表示
npx grok-imagine-video-batch --help
# バージョン表示
npx grok-imagine-video-batch --version
CLI オプション一覧
| オプション | 短縮形 | 引数 | 説明 | デフォルト |
|---|---|---|---|---|
--output-dir |
- | <path> |
出力ディレクトリを上書き | 設定ファイルから |
--format |
- | text|json |
出力フォーマット | text |
--timeout |
- | <ms> |
タイムアウト(ミリ秒、最小1000) | 600000 |
--max-concurrent |
- | <n> |
最大同時実行数(1-10) | 2 |
--poll-interval |
- | <ms> |
ポーリング間隔(ミリ秒、最小1000) | 5000 |
--max-poll-attempts |
- | <n> |
最大ポーリング回数 | 120 |
--estimate-only |
- | - | コスト見積もりのみ(実行しない) | - |
--allow-any-path |
- | - | 任意の出力パスを許可(CI/CD用) | - |
--help |
-h |
- | ヘルプメッセージ表示 | - |
--version |
-v |
- | バージョン表示 | - |
終了コード
| コード | 意味 |
|---|---|
0 |
成功(全ジョブ完了) |
1 |
エラー(失敗またはキャンセルあり) |
バッチ設定ファイル
{
"jobs": [
{
"prompt": "猫がボールで遊んでいる",
"output_path": "cat_video.mp4",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
},
{
"prompt": "キャラクターが歩いているアニメーション",
"image_url": "https://example.com/character.jpg",
"output_path": "walking.mp4",
"duration": 10
},
{
"prompt": "ボールを大きくして",
"video_url": "https://example.com/video.mp4",
"output_path": "edited.mp4"
}
],
"output_dir": "./output",
"max_concurrent": 2,
"poll_interval": 5000,
"max_poll_attempts": 120,
"default_model": "grok-imagine-video",
"default_duration": 5,
"retry_policy": {
"max_retries": 2,
"retry_delay_ms": 1000
}
}
ジョブ定義スキーマ
各ジョブは3種類のうち1つを指定します:
1. Text-to-Video(テキストから動画生成)
{
"prompt": "生成したい動画の説明",
"output_path": "output.mp4",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"model": "grok-imagine-video"
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | Yes | 動画の説明テキスト |
output_path |
string | No | 出力ファイル名 |
duration |
number | No | 動画長(1-15秒) |
aspect_ratio |
string | No | アスペクト比 |
resolution |
string | No | 解像度(720p/480p) |
model |
string | No | モデル名 |
2. Image-to-Video(画像から動画生成)
URL指定の場合:
{
"prompt": "画像をアニメーション化する説明",
"image_url": "https://example.com/image.jpg",
"output_path": "animated.mp4",
"duration": 5
}
ローカルファイルの場合(base64 data URL):
{
"prompt": "画像をアニメーション化する説明",
"image_path": "./images/character.jpg",
"output_path": "animated.mp4",
"duration": 5
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | Yes | アニメーションの説明 |
image_url |
string | No* | 入力画像のURL(公開アクセス可能) |
image_path |
string | No* | ローカル画像ファイルパス(base64 data URLとしてAPIに送信) |
output_path |
string | No | 出力ファイル名 |
duration |
number | No | 動画長(1-15秒) |
*
image_urlまたはimage_pathのいずれかを指定(同時指定不可)
3. Reference-to-Video(参照画像から動画生成 / R2V)
{
"prompt": "アニメ風に歩くキャラクター",
"reference_images": [
{ "url": "https://example.com/style.jpg" },
{ "path": "./images/character.png" }
],
"output_path": "r2v.mp4",
"duration": 8
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | Yes | 動画の説明 |
reference_images |
array | Yes | 参照画像(各要素は url / path / file_id のいずれか) |
output_path |
string | No | 出力ファイル名 |
duration |
number | No | 動画長(1-15秒) |
画像(I2V)と
reference_images(R2V)は同時指定できません。
4. Video Edit(動画編集)
{
"prompt": "編集内容の説明",
"video_url": "https://example.com/video.mp4",
"output_path": "edited.mp4"
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
prompt |
string | Yes | 編集内容の説明 |
video_url |
string | Yes | 編集する動画のURL(最大8.7秒) |
output_path |
string | No | 出力ファイル名 |
5. Video Extension(動画延長)
{
"operation": "extend",
"prompt": "カメラが引いて街並みが見える",
"video_url": "https://example.com/video.mp4",
"output_path": "extended.mp4",
"duration": 6
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
operation |
string | Yes | "extend" を指定(省略すると video_url 付きは編集扱い) |
prompt |
string | Yes | 続きで何が起こるかの説明 |
video_url |
string | Yes | 延長する動画のURL |
output_path |
string | No | 出力ファイル名 |
duration |
number | No | 延長セグメントの長さ(1-10秒、デフォルト6) |
video_urlを持つジョブは既定で編集(edit)として扱われます。延長したい場合は"operation": "extend"を明示してください。
グローバル設定
| フィールド | 型 | 説明 | デフォルト |
|---|---|---|---|
output_dir |
string | 出力ディレクトリ | ./output |
max_concurrent |
number | 最大同時実行数(1-10) | 2 |
poll_interval |
number | ポーリング間隔(ms) | 5000 |
max_poll_attempts |
number | 最大ポーリング回数 | 120 |
default_model |
string | デフォルトモデル | grok-imagine-video |
default_duration |
number | デフォルト動画長 | 8 |
default_aspect_ratio |
string | デフォルトアスペクト比 | 16:9 |
default_resolution |
string | デフォルト解像度 | 720p |
リトライポリシー
{
"retry_policy": {
"max_retries": 2,
"retry_delay_ms": 1000,
"retry_on_errors": ["rate_limit", "429", "500", "502", "503"]
}
}
| フィールド | 型 | 説明 | デフォルト |
|---|---|---|---|
max_retries |
number | 最大リトライ回数 | 2 |
retry_delay_ms |
number | リトライ間隔(ms) | 1000 |
retry_on_errors |
string[] | リトライ対象エラー | 上記参照 |
設定例は examples/ ディレクトリを参照してください:
batch-simple.json- 基本的な動画生成batch-image-to-video.json- 画像からの動画生成(URL指定)batch-local-images.json- ローカル画像からの動画生成batch-reference-to-video.json- 参照画像からの動画生成(R2V)batch-with-edits.json- 動画編集チェーンbatch-extend.json- 動画延長(Extension)batch-social-media.json- SNS向けフォーマット
サポートされているアスペクト比
| アスペクト比 | 用途例 |
|---|---|
16:9 |
横長ワイドスクリーン、YouTube(デフォルト) |
4:3 |
標準的な横長 |
1:1 |
正方形、Instagram |
9:16 |
縦長、TikTok、Reels、Stories |
3:4 |
縦長 |
3:2 / 2:3 |
写真比率 |
サポートされている解像度
| 解像度 | 説明 |
|---|---|
1080p |
フルHD画質(1.5で追加) |
720p |
HD画質(デフォルト) |
480p |
標準画質 |
動画長の制限
| 操作 | 最小 | 最大 | デフォルト |
|---|---|---|---|
| 生成(Text/Image/Reference-to-Video) | 1秒 | 15秒 | 8秒 |
| 編集 | - | 8.7秒 | 元動画と同じ |
| 延長(Extension) | 1秒 | 10秒 | 6秒 |
非同期処理について
Video APIは非同期で動作します:
- リクエスト送信: 動画生成/編集リクエストを送信
- request_id 取得: APIから
request_idが返される - ポーリング: 定期的に結果を確認(デフォルト: 5秒間隔)
- 結果取得: 完了後、動画URLを取得してダウンロード
POST /v1/videos/generations → { request_id: "abc123" }
↓
GET /v1/videos/abc123 → { status: "pending" } → 待機
↓
GET /v1/videos/abc123 → { status: "completed", url: "..." } → ダウンロード
使用例
# テキストから動画生成
「猫がボールで遊んでいる」の5秒動画を16:9で生成して
# 画像から動画生成
この画像のキャラクターを歩かせる動画を作って
# 動画編集
この動画の背景を夜に変更して
API リファレンス
| 機能 | エンドポイント |
|---|---|
| 動画生成(T2V/I2V/R2V) | POST https://api.x.ai/v1/videos/generations |
| 動画編集 | POST https://api.x.ai/v1/videos/edits |
| 動画延長 | POST https://api.x.ai/v1/videos/extensions |
| 結果取得 | GET https://api.x.ai/v1/videos/{request_id} |
- ドキュメント: docs.x.ai
開発
git clone https://github.com/ex-takashima/grok-imagine-video-mcp-server.git
cd grok-imagine-video-mcp-server
npm install
npm run build
npm start
開発用コマンド
# ビルド
npm run build
# ウォッチモード
npm run dev
# バッチCLI実行
npm run batch -- examples/batch-simple.json --estimate-only
トラブルシューティング
ポーリングがタイムアウトする
動画生成には時間がかかる場合があります。以下を試してください:
# ポーリング回数を増やす
npx grok-imagine-video-batch batch.json --max-poll-attempts 200
# タイムアウトを延長
npx grok-imagine-video-batch batch.json --timeout 1200000
Rate Limit エラー
並列数を減らすか、リトライ設定を調整してください:
{
"max_concurrent": 1,
"retry_policy": {
"max_retries": 3,
"retry_delay_ms": 5000,
"retry_on_errors": ["rate_limit", "429"]
}
}
関連プロジェクト
- grok-imagine-image-mcp-server - 画像生成用MCP Server
ライセンス
MIT
作者
Junji Takashima takajyun00@gmail.com
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.