UnificAlly MCP について
UnificAlly MCPは、AIアシスタントをUnificAlly APIに接続し、モデルカタログを通じてメディアの生成・編集、音声の文字起こし、アップスケールを行います。MCPクライアントで単一のAPIキーを使い、タスク追跡や支出制御も行いたいユーザー向けです。
主な機能
- 01動画と画像の生成
- 02音楽、音声、効果音の作成
- 03音声の文字起こしとクリーニング
- 04動画の編集と延長
- 05画像と動画のアップスケール
- 06タスク、モデル、費用の追跡
活用シーン
- 01画像を生成し、動画の開始フレームに利用
- 02音声の文字起こしやテキストからの音声生成
- 03生成タスクの状態確認や費用見積もり
MCP 対応
メディア生成・編集、タスク管理、モデル検索、アップロード、費用確認を行うUnificAlly APIの操作を、ツールとして公開します。stdioとStreamable HTTPに対応し、ホスト型エンドポイントも提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.unifically.com/mcpclaude mcp add --transport http unifically https://mcp.unifically.com/mcp{"mcpServers":{"unifically":{"type":"http","url":"https://mcp.unifically.com/mcp"}}}Cursor で開く{"servers":{"unifically":{"type":"http","url":"https://mcp.unifically.com/mcp"}}}VS Code で開く{"mcpServers":{"unifically":{"type":"http","url":"https://mcp.unifically.com/mcp"}}}{"mcpServers":{"unifically":{"serverUrl":"https://mcp.unifically.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.unifically.com/mcp認証が必要ツール
14| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| prompt | string | はい | 生成したい動画を説明するテキストプロンプト。 |
| model | string | いいえ | モデル。短縮エイリアスまたは完全な ID を指定します。エイリアス:'veo'(デフォルト)、'veo-quality'、'veo-lite'、'kling'、'kling-omni'、'hailuo'、'seedance'、'grok-video'、'grok-1.5'。'google/veo-3.1-fast' などの完全な ID も使用できます。カタログは list_models を呼び出して確認し、正確なパラメーターについてはモデルのドキュメントページを参照してください。 |
| duration | integer | いいえ | 動画の長さ(秒)。省略するとモデルのデフォルトが使用されます。指定可能な値はモデルごとに異なります。 |
| aspect_ratio | string | いいえ | 出力のアスペクト比。例:'16:9'。対応する比率はモデルごとに異なり、このパラメーターに対応しないモデルもあります。 |
| image_url | string | いいえ | 画像から動画を生成する場合に指定する任意の開始フレーム。このツールは選択したモデルが必要とするフィールドにマッピングするため、モデル固有のフィールド名ではなく、ここに渡してください。公開 https URL が必須です。ローカルパスやインラインの base64 は使用できません。ローカルファイルの場合は、先に files.unifically.com/upload に直接 PUT でアップロードし、返された file_url を渡してください。 |
| end_image_url | string | いいえ | 任意の終了フレーム(開始フレームと終了フレーム間の補間)。一部のモデルのみ対応しています。公開 https URL が必須です。ローカルパスやインラインの base64 は使用できません。ローカルファイルの場合は、先に files.unifically.com/upload に直接 PUT でアップロードし、返された file_url を渡してください。 |
| reference_image_urls | array | いいえ | スタイル/被写体の参照画像(任意)。各画像は公開 https URL である必要があります(ローカルファイルは先にアップロードしてください。パスや base64 は使用できません)。対応状況、最大数、開始フレームとの併用可否はモデルごとに異なります。 |
| seed | integer | いいえ | 再現可能な出力を得るためのシード(任意)。対応モデルでは、同じシードと同じ入力から同じ結果が得られます。 |
| wait | boolean | いいえ | デフォルトは true です。ジョブの完了を待ち、結果を返します。false に設定すると task_id がすぐに返され、get_task でポーリングできます。高品質動画やフルサイズの楽曲など、時間のかかるジョブや接続がタイムアウトする可能性がある場合に使用してください。 |
| callback_url | string | いいえ | 任意のWebhook URL。設定すると、ツールは task_id をすぐに返し、タスク完了時に結果をこの URL に POST します。Webhook の本文:{ task_id, status: 'completed'|'failed', data: { video_url | image_url | audio_url | ... }, error_message? } — メディアは 'output' ではなく 'data' の下に含まれる点に注意してください。待機の代わりに、時間のかかるジョブで使用します。 |
| confirm_cost | boolean | いいえ | オペレーターが支出ガードを有効にしている場合にのみ関係します。呼び出し額が設定された確認しきい値を超えると見積もりが返されます。confirm_cost: true を指定して再試行すると続行できます。それ以外の場合は無視してかまいません。 |
| provider_options | object | いいえ | 名前付きパラメーターとして公開されていないモデル固有のフィールドを渡すための拡張口です(例:Kling の multi_shots、Flux の steps)。API の 'input' ペイロードにマージされます。ツールがすでに管理しているフィールド(prompt、メディア URL、task_id など)と、予約済みのルーティング/課金/認証キー(model、callback_url、dry_run、api_key、authorization)は拒否されます。モデルの切り替えにはここではなく 'model' パラメーターを使用してください。モデルごとのフィールドについては https://docs.unifically.com を参照してください。 |
詳細
UnificAlly MCP server
UnificAlly API向けのMCP サーバーです。1つのAPIキーで、100種類以上のモデル(Veo 3.1、Kling、Seedance、Hailuo、Grok Imagine、Nano Banana、Flux、GPT Image、Suno、ElevenLabs、Topaz)を通じて、AI アシスタントが動画、画像、音楽、音声、効果音を生成したり、音声を書き起こしたり、メディアをアップスケールしたりできます。
Cursor、Claude Desktop、Claude Code、Cline、Windsurf、Zed、ChatGPT Desktop、Goose、n8n、自作コードなど、あらゆるMCP クライアントで動作します。
インストール
- https://unifically.com/api-keys でAPIキーを作成します。新しいアカウントには、テスト用に$0.50分の残高が用意されています。
- クライアントの設定にサーバーを追加します。
{
"mcpServers": {
"unifically": {
"command": "npx",
"args": ["-y", "@unifically/mcp-server"],
"env": { "UNIFICALLY_API_KEY": "sk-..." }
}
}
}
このブロックは、Cursor(.cursor/mcp.json)、Claude Desktop(claude_desktop_config.json)、Cline、Windsurf(~/.codeium/windsurf/mcp_config.json)でそのまま使用できます。保存後、クライアントを再起動してください。
Claude Code:
claude mcp add unifically -e UNIFICALLY_API_KEY=sk-... -- npx -y @unifically/mcp-server
その他のクライアント
Zed(~/.config/zed/settings.json):
{
"context_servers": {
"unifically": {
"command": { "path": "npx", "args": ["-y", "@unifically/mcp-server"] },
"env": { "UNIFICALLY_API_KEY": "sk-..." }
}
}
}
ChatGPT Desktop:Settings、Connectors、Add MCP serverの順に選択します。コマンドはnpx -y @unifically/mcp-server、環境変数はUNIFICALLY_API_KEYです。
Goose、n8nなど、stdioに対応するもの:
UNIFICALLY_API_KEY=sk-... npx -y @unifically/mcp-server
Windowsでクライアントにnpx not foundと表示される場合は、"command": "cmd", "args": ["/c", "npx", "-y", "@unifically/mcp-server"]を使用してください。
URLを指定できるクライアント向けに、ホスト型サーバーhttps://mcp.unifically.com/mcpも用意されています。リモートサーバーをご覧ください。
例
アシスタントに次のように依頼します。
夕暮れ時の灯台の16:9画像を作成し、続けてその画像から始まる6秒の動画を作成してください。
ツールは次の順に呼び出されます。
{ "name": "generate_image", "arguments": { "prompt": "a lighthouse at dusk, waves, warm light", "aspect_ratio": "16:9" } }
Generated image with google/nano-banana-pro. Result: https://files.unifically.com/image/....png [task_id: 7f3c...]
{ "name": "generate_video", "arguments": { "prompt": "slow push in, waves rolling", "image_url": "https://files.unifically.com/image/....png", "duration": 6 } }
各生成ツールはジョブの完了を待ち、メディアURLを返します。構造化された結果は次のようになります。
{
task_id: string,
status: "completed" | "pending" | "processing",
output: { video_url?, image_url?, audio_url?, image_urls?, audio_urls?, text? }, // when completed
model: string,
cost_usd?: number
}
内部では、各呼び出しはUnificAlly APIへの1回のリクエスト({ model, input }を指定したPOST /v1/tasks、続いてGET /v1/tasks/{id})であり、APIドキュメントに記載されているものと同じです。
ツール
| ツール | 機能 | 残高を消費 |
|---|---|---|
generate_video | テキストまたは画像から動画を生成します(Veo、Kling、Hailuo、Seedance、Grok など)。開始フレームと終了フレーム、参照画像を任意で指定できます。 | はい |
generate_image | テキストからの画像生成と画像編集に対応します(Nano Banana、GPT Image、Flux、Qwen、Kling、Grok、SeeDream)。 | はい |
generate_audio | テキスト読み上げ、効果音、会話、文字起こし(stt)、音声の変更(voice-changer)、音声のクリーンアップ(voice-isolation)に対応します。 | はい |
generate_music | Suno:曲の作成、または既存のトラックのcover、extend、add-vocals、add-instrumental、stemsに対応します。 | はい |
edit_video | プロンプトで既存のクリップを編集するか、被写体の画像に動きを適用します(motion-control)。 | はい |
upscale_media | 任意の画像または動画にはTopaz(image_url/video_url)を、Veo と Grok のアップスケーラーにはtask_idを使用します。 | はい |
extend_video | Veo(+8 s)または Grok Imagine で生成済みの動画を延長します。 | はい |
upload_file | URL、または stdio サーバー上のローカルファイルを公開 CDN URL に変換します。 | いいえ |
get_task | タスク ID を指定して、タスクのステータスと結果を取得します。完了まで待機することもできます。 | いいえ |
list_tasks | 過去のタスクを新しい順に取得します。ステータス、モデル、カテゴリ、プロバイダー、または時間で絞り込めます。 | いいえ |
list_resources | ElevenLabs(デフォルト)、Kling、Veo の音声リストを取得します。 | いいえ |
list_models | モデルカタログとエイリアスを取得します。 | いいえ |
dry_run_cost | 実行せずに呼び出し料金を確認します。 | いいえ |
check_balance | アカウント残高を USD で確認します。 | いいえ |
すべてのツールで、4 つの MCP ヒントがすべて設定されています。残高を消費する 7 つのツールには、destructiveHint: true と idempotentHint: false が設定されているため、読み取り専用ツールを自動承認するクライアントでも、有料実行の前には確認を求めます。生成に失敗しても課金されません。
各モデルのパラメーターと ID、ブラウザー上のプレイグラウンドを確認できます。
- 動画:Veo 3.1、Kling、Seedance、MiniMax Hailuo、Grok Imagine、Wan 3.0、Gemini Omni Flash 1.1
- 画像:Nano Banana、GPT Image 2、Flux.2 Pro、Qwen Image、SeeDream
- 音楽と音声:Suno、ElevenLabs
- アップスケーリング:Topaz Labs
list_modelsは、最新の全カタログを返します。
動作の仕組み
- すべての生成ツールは、
promptのみで動作します。modelは任意で、短縮名(veo、kling、flux、nano-banana-2、seedance、tts、sfx、stt)またはgoogle/veo-3.1-fastのような完全な ID を指定できます。 - メディアフィールド(
image_url、image_urls、end_image_url、reference_image_urls、audio_url、video_url)には、公開された HTTPS URL のみを指定できます。ローカルパスや Base64 文字列を指定すると、最初にアップロードするよう促すエラーが返されます。 - フィールド名はモデルによって異なります(Kling の
start_frame_url、Veo のstart_image_url、Seedance のfirst_frame_url)。image_urlを渡すと、サーバーが適切な名前に変更します。サーバーに対応するパラメーターがないフィールドはprovider_optionsに指定します。このフィールドを使うとマッピングを上書きすることもできます。 - サーバーは、各モデルで許可される長さ、解像度、アスペクト比を保持しません。API が値をチェックし、修正方法を示す 422 をコストなしで返します。サーバーの指示では、モデルを実行する前に
docs.unifically.com/llms.txtにあるモデルのページを読むようアシスタントに伝えます。 - すべての生成ツールは、
wait、callback_url、provider_options、confirm_costも受け付けます。 - エラーは 1 文で返されます。キーがない、または間違っている場合は 401、残高不足の場合は 402(チャージ用リンク付き)、API の検証メッセージ付きで 422 が返されます。タイムアウトの場合は、
get_taskで再開するようアシスタントに伝えるメッセージが返されます。429、5xx、ネットワークエラーはバックオフを伴って再試行されます。
アップロード
モデルが読み取れるのは公開 URL のみのため、ローカルファイルは最初に UnificAlly CDN へ送信します。
-
upload_file { content_type: "image/png" }は、1 回限りのupload_urlと最終的なfile_urlを返します。アシスタントはシェルに API キーを置かずに、curl でバイトデータを送信します。curl -X PUT '<upload_url>' --data-binary @photo.pngURL は署名付きで 1 回のみ使用でき、約 5 分で有効期限が切れます。ファイルは元の品質を保ちます。
-
upload_file { url }は、すでにオンラインにあるファイルを取り込みます。 -
upload_file { file_path }はディスクからファイルを読み込みます。この方法はサーバーが stdio でローカル実行されている場合に限ります。
Base64 でのアップロードには対応していません。また、ユーザーのファイルを別のホストに送信しないよう、指示でアシスタントに伝えます。どちらのルールも実際に起きた失敗を踏まえたものです。Base64 のサイズ上限があると、エージェントが上限に収めるためにユーザーの画像を縮小してしまいました。また、シェルにキーがなかったあるエージェントは、プライベートな写真を公開ファイルホストにアップロードしてしまいました。
長時間かかるジョブ
高品質な動画やフルサイズの楽曲の生成には、数分かかることがあります。
wait: falseは{ task_id, status: "pending" }をすぐに返します。statusが"completed"になるまでget_taskをポーリングします。callback_urlもすぐに応答し、API は結果を Webhook に POST します。
どのタスクも、後から get_task で再開できます。
支出制限
すべてデフォルトでは無効です。デプロイごとに設定してください。
UNIFICALLY_CONFIRM_COST_ABOVE=<usd>:この金額を超える料金の呼び出しは見積もりを返し、アシスタントがconfirm_cost: trueを指定して再試行した場合にのみ実行されます。UNIFICALLY_MAX_COST_PER_TASK=<usd>:この金額を超える料金の呼び出しは拒否されます。confirm_costでこの制限を上書きすることはできません。UNIFICALLY_BLOCKED_MODELS=veo-quality,sunoまたはUNIFICALLY_ALLOWED_MODELS=nano-banana-2,flux,tts:実行できるモデルを制限します。UNIFICALLY_DISABLE_GENERATION=true:読み取り専用モードです。ブラウジング、dry_run_cost、check_balanceは引き続き使用できます。
環境変数
| 変数 | 必須 | デフォルト |
|---|---|---|
UNIFICALLY_API_KEY | stdio のみ | なし。HTTP の呼び出し元は各自のキーを送信します。UNIFICALLY_KEY、UNIFICALLY_TOKEN、UNIFICALLY_API_TOKEN も使用できます。 |
UNIFICALLY_BASE_URL | いいえ | https://api.unifically.com |
UNIFICALLY_FILES_BASE_URL | いいえ | https://files.unifically.com |
UNIFICALLY_REQUEST_TIMEOUT_MS | いいえ | 60000 |
UNIFICALLY_MAX_RETRIES | いいえ | 3 |
UNIFICALLY_POLL_TIMEOUT_MS | いいえ | 600000 |
UNIFICALLY_POLL_START_MS | いいえ | 2000 |
UNIFICALLY_POLL_MAX_MS | いいえ | 10000 |
UNIFICALLY_CONFIRM_COST_ABOVE | いいえ | 無効 |
UNIFICALLY_MAX_COST_PER_TASK | いいえ | 無効 |
UNIFICALLY_BLOCKED_MODELS | いいえ | なし |
UNIFICALLY_ALLOWED_MODELS | いいえ | なし |
UNIFICALLY_DISABLE_GENERATION | いいえ | false |
MCP_TRANSPORT | いいえ | stdio(または http) |
UNIFICALLY_HTTP_WAIT_BUDGET_MS | いいえ | 85000。HTTP 呼び出しが task_id を返すまでブロックする最長時間 |
PORT | いいえ | ホスティングプラットフォームによって設定 |
UNIFICALLY_CORS_ORIGIN | いいえ | * |
UNIFICALLY_TRUSTED_PROXIES | いいえ | loopback。X-Forwarded-For の送信を許可する private、特定の IP アドレス、CIDR も指定できます。 |
UNIFICALLY_TRUST_CF_CONNECTING_IP | いいえ | false |
UNIFICALLY_RATE_PER_MIN | いいえ | キーごと、アカウントごとに毎分 120 リクエスト |
UNIFICALLY_RATE_BURST | いいえ | 40 |
UNIFICALLY_PUBLIC_DISCOVERY | いいえ | true。キーなしの呼び出し元が initialize、tools/list、resources/list、ping を実行できるようにします。すべての操作でキーを必須にするには、0 を設定します。 |
UNIFICALLY_ANON_RATE_PER_MIN | いいえ | IP ごとにキーなしで毎分 30 リクエスト |
UNIFICALLY_ANON_RATE_BURST | いいえ | 12 |
リモートサーバー
MCP_TRANSPORT=http では、/mcp で Streamable HTTP を、GET /sse と POST /messages で従来の SSE を提供します。ホスト版は https://mcp.unifically.com/mcp で動作します。
呼び出し元は各自のキーを送信するため、1 つのデプロイで多くのユーザーにサービスを提供し、各ユーザー自身の残高に請求できます。
Authorization: Bearer <key>(推奨)X-API-Key: <key>- URL のみを受け付けるクライアントでは
?api_key=<key>。クエリ文字列がプロキシのログに記録されることがあるため、可能な場合はヘッダーを使用してください。
{
"mcpServers": {
"unifically": {
"url": "https://mcp.unifically.com/mcp",
"headers": { "Authorization": "Bearer sk-..." }
}
}
}
claude.ai の場合は、Settings、Connectors、Add custom connector を開き、キーを URL に含めます:https://mcp.unifically.com/mcp?api_key=sk-...。stdio 専用クライアントでは、mcp-remote を使ってブリッジします。
{
"mcpServers": {
"unifically": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.unifically.com/mcp", "--header", "Authorization: Bearer sk-..."]
}
}
}
HTTP モードの詳細:
- Streamable HTTP はステートレスなので、スティッキーセッションなしで任意のリバースプロキシの背後にスケールできます。
- キーのない呼び出し元は
initialize、tools/list、resources/list、prompts/list、pingを実行できるため、レジストリからツール一覧を取得できます。それ以外の操作はすべて 401 を返します。キーなしのトラフィックには IP ごとのレート制限が適用され、同時メッセージ数は 16 件までです。GET /.well-known/mcp-configは、必須設定(api_key)の JSON Schema を返し、GET /.well-known/mcp/server-card.jsonはツール一覧を返します。 - キーは API で検証され、結果はキャッシュされます。また、IP ごとの予算によって検証失敗が制限されます。レート制限はキーごと、アカウントごとに適用されるため、キーを追加しても 1 つのアカウントの上限は増えません。バッチは 16 メッセージまで、リクエスト本文は 512 KB までです。
- ブラウザーの
Originヘッダーは DNS リバインディング対策の検証を受けます。MCP クライアントはこのヘッダーを送信しないため、影響を受けません。 X-Forwarded-Forが信頼されるのは、UNIFICALLY_TRUSTED_PROXIESで指定された送信元からの場合のみです。付属の Compose ファイルでは、分離されたネットワーク向けにprivateが設定されています。共有 LAN では使用しないでください。- 残高がゼロのキーでも、残高の確認、タスクの一覧表示と取得、ジョブの料金確認はできます。ジョブの開始はできません(402)。
GET /は接続手順を返し、GET /healthは認証不要のヘルスチェックです。
セルフホスト
このリポジトリには、リクエストごとにキーを使用する HTTP トランスポートを実行する Dockerfile と docker-compose.yml が含まれています。コンテナを HTTPS リバースプロキシの背後に配置し、ドメインを割り当てて、ヘルスチェックに /health を使用してください。環境変数の設定は不要です。共有環境へのデプロイでは、UNIFICALLY_CONFIRM_COST_ABOVE=1.00 をデフォルトにするのが適切です。
開発
git clone https://github.com/unifically-dev/unifically-mcp.git
cd unifically-mcp
npm install
cp .env.example .env # add your UNIFICALLY_API_KEY
npm run dev
ツールを対話形式で確認します。
npx @modelcontextprotocol/inspector npx -y tsx src/index.ts
テスト:
npm test # build + smoke test
npm run test:vitest # full suite
トラブルシューティング
| 症状 | 対処方法 |
|---|---|
spawn npx ENOENT | Node が PATH にありません。クライアントの設定では、node と dist/index.js の絶対パスを使用してください。 |
401 Unauthorized | クライアントの env ブロックに UNIFICALLY_API_KEY がありません。編集後、クライアントを再起動してください。 |
402 Payment Required | https://unifically.com/payments でチャージしてください。 |
| ツール呼び出しがハングする | 長い動画やフル尺の曲の場合は、wait: false または callback_url を渡してください。 |
| クライアントにツールが表示されない | npx @modelcontextprotocol/inspector npx -y @unifically/mcp-server を実行してください。ツールが表示される場合は、クライアント設定の JSON の形式が正しくありません。 |
リンク
- API ドキュメント:https://docs.unifically.com
- API キー:https://unifically.com/api-keys
- モデル:https://unifically.com/models
- MCP ページ:https://unifically.com/mcp
- サポート:[email protected]、Discord
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。