sync. labs

公式

公式 sync. labs MCP サーバー:動画を新しい音声やスクリプトに合わせてリップシンクさせたり、唇の動きを合わせて動画を他の言語に吹き替えたり、写真をしゃべらせたり、声をクローンしたりできます。OAuth サインイン対応、API キー不要。

Sync Labs MCPで何ができますか?

  • リップシンク動画 — 保存済みの動画アセットと音声アセット、または公開メディアのURLを使ってリップシンクするようエージェントに依頼し、結果を待ちます。
  • 翻訳と吹き替え — YouTube、TikTok、Instagram、Facebookのリンクを別の言語に翻訳して吹き替えるよう依頼します。実行前に費用が提示されます。
  • 台本付き音声 — voices_listで声を選び、台本を指定して、動画に選んだ声でセリフを話させます。
  • 音声クローン — sync.アカウントから声をクローンし、後の音声生成やリップシンクに使用します。
  • アセットとプロジェクトの管理 — アセットの作成、一覧表示、更新、ダウンロード、削除のほか、プロジェクトやその生成物の作成、名前変更、一覧表示を行います。
  • 使用量と費用の確認 — 残りのクレジット数や、過去の生成にかかった費用を確認します。

ホスト型 MCP サーバー

npx add-mcp 'https://mcp.sync.so/mcp'

Claude Code、Codex、Cursor などにインストールできます

ドキュメント

sync. MCP サーバー

AI エージェントを sync. に接続して、動画のリップシンク、他言語への翻訳と吹き替え、音声のクローン作成、チャットやコーディングセッションからのアセットやプロジェクトの管理を行えます。

sync. はこのサーバーを https://mcp.sync.so/mcp でホストしています。sync. アカウントでサインインするため、インストールも API キーのコピーも不要です。このリポジトリへのマージはすべて main にデプロイされます。

エージェントを接続する

ChatGPT

sync. in ChatGPT を開き、 アカウントを接続します。ChatGPT では、sync. Studio もチャット内で開きます。

Claude (claude.ai and Claude Desktop)

  1. Settings → Connectors を開き、Add custom connector を選択します。
  2. 名前に sync. を設定し、URL に https://mcp.sync.so/mcp を設定します。
  3. Connect をクリックし、sync にサインインします。

Claude Code

claude mcp add --transport http sync https://mcp.sync.so/mcp

次に、Claude Code で /mcp を実行し、sync を選択してサインインします。すべてのプロジェクトで使うには、--scope user を追加します。

Codex

codex mcp add sync --url https://mcp.sync.so/mcp
codex mcp login sync

Cursor

プロジェクト内の .cursor/mcp.json に追加するか、すべてのプロジェクトで使う場合は ~/.cursor/mcp.json に追加します。

{
  "mcpServers": {
    "sync": { "url": "https://mcp.sync.so/mcp" }
  }
}

Cursor は初回接続時に sync. へのサインインを求めます。

VS Code

.vscode/mcp.json に追加します。

{
  "servers": {
    "sync": { "type": "http", "url": "https://mcp.sync.so/mcp" }
  }
}

その他のクライアント

OAuth を使った Streamable HTTP 経由のリモート MCP サーバーに対応するクライアントであれば、https://mcp.sync.so/mcp を利用できます。クライアントが自身を登録し、ブラウザーで sync. にサインインします。

このサーバーは公式 MCP Registry に io.github.synchronicity-labs/mcp-server として掲載されているため、レジストリを参照するクライアントやディレクトリから見つけて追加できます。server.json がその掲載情報です。

API キーを使ったローカルサーバー

リモート MCP に対応していないクライアントや、スクリプト、CI では、sync. の API キー を使って stdio 経由でサーバーをローカル実行します。

claude mcp add sync -e SYNC_API_KEY=your-api-key -- npx -y @sync.so/mcp-server@latest

または、クライアントの JSON 設定に追加します。

{
  "mcpServers": {
    "sync": {
      "command": "npx",
      "args": ["-y", "@sync.so/mcp-server@latest"],
      "env": { "SYNC_API_KEY": "your-api-key" }
    }
  }
}

SYNC_API_KEY がない場合、初回起動時にサーバーがデバイスログインを開始します。表示された URL にアクセスしてコードを入力してください。トークンは ~/.config/sync/mcp-credentials.json にキャッシュされます。

npm リリースはホスト型デプロイとは別に公開され、遅れることがあるため、クライアントが対応している場合はホスト型サーバーを優先してください。@latest を指定すると、クライアントがサーバーを再起動するたびに npx が最新リリースを取得します。指定しない場合、npx は古いキャッシュ済みコピーを実行し続けることがあります。

更新通知

起動時に、ローカルサーバーは npm レジストリに最新バージョンを問い合わせます。頻度は最大で1日1回で、結果は ~/.config/sync/mcp-update-check.json にキャッシュされます。この確認はバックグラウンドで2秒の制限時間内に実行され、起動やツール呼び出しを遅らせることはありません。失敗しても何も表示されません。新しいバージョンがある場合、サーバーの指示とセッションの最初のツール結果で、npx -y @sync.so/mcp-server@latest を使って再起動するか、ホスト型サーバーに切り替えるようエージェントから案内されます。

無効にするには、SYNC_MCP_UPDATE_CHECK=off を設定するか、--no-update-check を渡します。CI が設定されている場合も確認はスキップされ、ホスト型サーバーでは確認されません。

依頼できること

次のようなプロンプトをエージェントに入力してください。アセット ID は sync. ライブラリから取得できます。リンクには、公開メディア URL のほか、YouTube、TikTok、Instagram、Facebook の動画を指定できます。

依頼エージェントの動作
「動画アセット <video-asset-id> を音声アセット <audio-asset-id> とリップシンクして。」保存済みアセットを使って lipsync_create を実行し、結果を待ちます
「https://example.com/talk.mp4 を https://example.com/voiceover.wav. にリップシンクして」公開 URL を使って lipsync_create を実行します
「https://www.youtube.com/watch?v=… をスペイン語に翻訳して。」assets_create でリンクをインポートし、費用を提示します。確認後、dubbing_create を実行します
「動画アセット <video-asset-id> に、落ち着いたナレーターの声で『ご視聴ありがとうございました』と言わせて。」voices_list で音声を選び、スクリプトを提示してから、script を使って lipsync_create を実行します
「残りのクレジットはいくつ?」account_get-usage
「直近の生成にかかった費用は?」履歴から該当項目を見つけ、generations_get-costs を読み取ります

翻訳、吹き替え、音声プレビュー、音声クローンは、開始前に費用を提示し、確認を求めます。

エージェントスキル

リップシンク、トーキングフォト、吹き替え、Edit Dialogue、キャンペーン、一括処理、トラブルシューティング、API などのツールを使う手順は、synchronicity-labs/skills にあるエージェントスキルです。npx skills add synchronicity-labs/skills を使えば、どのエージェントにもインストールできます。ChatGPT と Codex のプラグインには、このリポジトリの固定コミットからスキルが含まれています。詳しくは docs/chatgpt-plugin.md を参照してください。

ツール

ホスト型サーバーは、すべてのクライアントに厳選されたツールを公開します。

分野ツール
リップシンクlipsync_create, lipsync_create-timeline¹, generations_estimate-cost, generations_get, generations_list, generations_get-continuation, generations_get-costs, models_list
翻訳と吹き替えdubbing_create, dubbing_get-options, translation-previews_estimate, translation-previews_create, translation-previews_get
音声とボイスspeech-previews_create, speech-previews_get-options, speech-previews_get, voices_list, voices_clone
Edit Dialoguedialogue_get-options, dialogue_upload-source, dialogue-transcriptions_create, dialogue-transcriptions_get, dialogue-previews_create, dialogue-previews_get, dialogue-videos_estimate, dialogue-videos_create
アセットassets_create, assets_create-upload-url, assets_get, assets_list, assets_count, assets_get-download-url, assets_update, assets_delete, assets_get-playback-metadata, audio-trims_get, audio-trims_create
プロジェクトprojects_create, projects_get, projects_list, projects_list-generations, projects_rename
複数ジョブjobs_create-many², jobs_get-many²
バッチbatches_create², batches_get², batches_list²
アカウントaccount_get-context, account_get-usage, organizations_list, organizations_select

¹ タイムラインのない Studio がチャット内に埋め込まれている ChatGPT アプリでは提供されません。

² 現時点では ChatGPT アプリの一覧にはありません。jobs_create-many は、1つの動画を複数言語に吹き替える場合などに、1つの作成ツール(lipsync_create、dubbing_create、dialogue-videos_create など)を項目ごとに1回ずつ実行して、最大50件の独立したジョブを同時に開始します。どのプランでも、単一の呼び出しと同じ API、制限、課金が適用されます。jobs_get-many は一連のジョブの完了を待ちます。ジョブ を参照してください。バッチは、大規模な実行(20~500件の生成)向けの、API の別個のキュー型パイプラインです。Scale プラン以上で利用でき、完了まで数時間かかる場合があります。アカウントのプランにバッチが含まれていない場合、API は 402 と requiredPlan、billingUrl を返し、ツールはその内容をそのまま伝えます。

該当する機能を利用できる組織には、scenes_detect(動画内のカメラカット)と stems_separate(ボーカルと背景音声)も提供されますが、ChatGPT アプリでは利用できません。ローカルでは、これらは lipsync と assets のツールセットに含まれます。

アプリに対応するクライアントでは、埋め込み Studio アプリの背後にあるツールも利用できます。Studio のビューと下書き、アップロードウィジェット、アプリヘルパーなどです。MCP ハンドシェイク名によって ChatGPT または Codex アプリのプロファイルが選択されるクライアントが対象です(openai-mcp、openai-mcp (Codex)。src/client-profile.ts を参照)。その他のクライアントにはこれらのツールは表示されず、呼び出しも拒否されます。

ローカルのツールセット

ローカルの stdio サーバーでは、OpenAPI 仕様 にあるその他すべての公開 API 操作(合計65以上)についても、それぞれツールを提供できます。デフォルトでは、上記のホスト型ツールセットから管理ツール(assets_delete と voices_clone)を除いたものに加え、jobs_get、jobs_wait、および話者の顔トラックを lipsync_create-timeline クリップに使う transcriptions_* ツールが一覧表示されます。

さらにツールを一覧表示するには、SYNC_MCP_TOOLSETS を設定するか、カンマ区切りのリストを指定して --toolsets を渡します。

ツールセット追加されるもの
default上記のデフォルト。したがって、default,admin は管理ツールを追加します
lipsyncリップシンク、タイムライン、Edit Dialogue、音声トリミング、バッチツールに加え、raw の generate_*、generations_*、dialogue-edits_*
dubbing翻訳と吹き替えのツール、およびバッチツール
assetsassets_*(削除を除く)とアップロードツール
projectsprojects_*(削除を除く)と projects_rename
transcriptiontranscriptions_*
voicesvoices_*(クローン作成と削除を除く)、音声プレビュー、tts_*
adminすべての削除操作(assets_delete、projects_delete、generations_delete、voices_delete)と voices_clone
allこのオプションが存在する前と同様に、すべてのツール

ジョブ、アカウント、生成結果の読み取り(jobs_get、jobs_wait、jobs_get-many、generations_get、account_get-context、organizations_list、organizations_select など)は、どの選択にも含まれます。また、実行対象の作成ツールが一覧にある場合は、jobs_create-many も含まれます。ツールセットを指定すると、デフォルトに追加されるのではなく、デフォルトが置き換えられます。すべてのツールを再び利用するには、次のようにします。

claude mcp add sync -e SYNC_API_KEY=your-api-key -e SYNC_MCP_TOOLSETS=all -- npx -y @sync.so/mcp-server@latest

すべてのツールが一覧に含まれていない場合、サーバーの指示には、一覧に含まれるツールセットと、残りを利用する方法が記載されます。そのため、より広いセットでサーバーを再起動するようエージェントから求められることがあります。ホスト型サーバーはこの設定を無視します。

ツールのワークフロー では、複数ステップのツールや有料ツールの動作について説明しています。

ツール名は単一の <noun>_<verb> 方式(lipsync_create、generations_get)に従います。それ以前に使われていた名前(create-lipsync、generate_get-generation)も、非推奨期間中は引き続き使えます。これらの名前で呼び出すと同じツールが実行され、新しい名前を示す1行の通知が追加されます。ツール名 に旧名 → 新名の一覧があります。

CLI オプション

Usage: sync-mcp [options]

Options:
  --api-key <key>     API key (or set SYNC_API_KEY env var)
  --base-url <url>    API base URL (default: https://api.sync.so)
  --transport <type>  stdio (default) or http
  --port <port>       HTTP port (default: 3002, only with --transport http)
  --no-spend-confirmation
                      Unattended automation: drop the cost-quote and confirm-before-paying
                      instructions (or set SYNC_MCP_SPEND_CONFIRMATION=off)
  --no-update-check   Skip the daily npm check for a newer version (or set
                      SYNC_MCP_UPDATE_CHECK=off; skipped when CI is set)
  --toolsets <list>   stdio only: comma-separated tools to list (or set SYNC_MCP_TOOLSETS):
                      default, lipsync, dubbing, assets, projects, transcription,
                      voices, admin or all (default: the hosted set without admin)
  -h, --help          Show this help message

無人自動化

デフォルトでは、ツールは有料アクションの費用を提示し、ユーザーの承認を待つようエージェントに指示します。運用担当者がすでに支出を承認しているパイプラインやスケジュール済みエージェントでサーバーを実行する場合は、--no-spend-confirmation(または SYNC_MCP_SPEND_CONFIRMATION=off)を指定して起動します。すると、エージェントは費用の提示や確認を行わずにジョブを作成し、見積もりツールは引き続き利用できます。エージェントがこの設定を変更することはできません。

ジョブツールでは、サーバー側で待機するために wait: true を指定できます(1回の呼び出しにつき約50秒まで。クライアントが progressToken を送信すると進捗通知が届きます)。対象は generations_get、translation-previews_get、transcriptions_get、および assets_create 経由のソーシャルメディアからのインポートです。ローカルサーバーでは、jobs_wait と jobs_get を使うと、1つの入力 {kind, id, projectId?} と共通の結果形式・ステータスセットで、あらゆる種類のジョブ(生成、文字起こし、話者分析、翻訳プレビュー、インポート)を同様に処理できます。ジョブ を参照してください。jobs_get-many は、どちらのサーバーでも最大50件のジョブを一度に同様に読み取ります。

API が対応している場合、feedback_send を使って、わかりにくいエラー、誤った結果、不足している機能を Sync チームに報告できます。

環境変数、および HTTP サーバーのセッション、メモリ、アップロード、診断に関する制限については、HTTP サーバーの設定 を参照してください。

仕組み

  1. 起動時に、サーバーは {baseUrl}/api-json から公開 OpenAPI 仕様を取得し、各操作を Zod 入力スキーマ付きの MCP ツールに変換します。
  2. 手書きのツールが、翻訳と吹き替え、Edit Dialogue、音声プレビュー、費用の照会など、同じ API を使った複数ステップのワークフローを追加します。
  3. 各ツール呼び出しは、認証済みの sync. API リクエストです。OAuth トークン(ホスト型)または API キー(ローカル)が使われます。

stdio 経由では、公開 API に新しい操作が追加されると、次回の再起動時にツールとして利用できるようになります。ホスト型サーバーが公開するのは許可リストにあるツールのみであるため、新しいホスト型ツールはこのリポジトリのリリースに合わせて提供されます。

プログラムからの利用

サーバーはライブラリとしても利用できます。

import { createSyncMcpServer, resolveConfig } from '@sync.so/mcp-server';

const config = resolveConfig({ apiKey: 'your-key' });
const server = await createSyncMcpServer(config);

開発

HTTPS ソースのテストでは、ローカルの openssl コマンドを使って、有効期間1日の自己署名テスト ID を作成します。一時的な証明書とキーのファイルは、テスト実行前に削除されます。

# Install dependencies
pnpm install

# Build
pnpm run build

# Run tests
pnpm test

# Lint
pnpm run lint

# Type check
pnpm run typecheck

# Script tests (monitor, smoke check, pre-commit size check)
pnpm run test:scripts

開発には Node 26 以降(.nvmrc)が必要です。インストール時には devEngines が package.json でこれを強制します。pnpm install は pre-commit フックをインストールします。このフックは、ステージされたファイルに対して Oxlint と Oxfmt を実行し、ステージされたソースファイルが5,000トークン(20,000バイト)を超えると処理をブロックします。すでにこのサイズを超えているファイルは、分割されるまで対象外です。

ローカル HTTP トランスポートのテスト

HTTP トランスポート(OAuth フロー)をローカルでテストするには、次の手順を実行します。

  1. .env.example を .env にコピーし、値を入力します
  2. localhost を公開するトンネルを開始します:
    ngrok http 3002
    
  3. .env 内の MCP_ISSUER_URL を ngrok URL に更新します
  4. サーバーを起動します:
    source .env
    node dist/cli.js --transport http --base-url $SYNC_BASE_URL --port 3002
    
  5. 動作を確認します:
    curl https://<ngrok-url>/health
    curl https://<ngrok-url>/.well-known/oauth-authorization-server
    

分離された Studio へのログインで同一オリジンの Web プロキシが必要な場合は、 SYNC_OAUTH_AUTHORIZATION_URL にその /api-proxy/v2/oauth/authorize URL を設定し、 SYNC_BASE_URL は分離された API リスナーへの直接接続のままにします。ブラウザー によるナビゲーションのみが Web プロキシを使用します。登録、コード交換、トークン更新、失効、 userinfo、ツール呼び出しには直接 API を使用し、既存のタイムアウト、 PKCE、機密クライアントのチェックを維持します。この URL は任意ですが、HTTP(S) を使用し、 認証情報、クエリ、フラグメントを含めることはできません。既存のデプロイでは新しい設定は不要です。

  1. Claude Web に https://<ngrok-url>/mcp をカスタムコネクタとして追加します

詳細情報

ライセンス

MIT