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

打开 ChatGPT 中的 sync. 并连接你的账户。在 ChatGPT 中,sync. Studio 也会在聊天中打开。

Claude (claude.ai 和 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" }
  }
}

其他客户端

任何支持通过 Streamable HTTP 和 OAuth 连接远程 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 注册表查询最新版本,每天最多一次(查询结果会缓存到 ~/.config/sync/mcp-update-check.json)。检查在后台运行,限时两秒,不会延迟启动或工具调用;如果检查失败,则不会显示任何内容。如果有更新版本,服务器的说明和会话中的第一个工具结果会告知智能体,请求你使用 npx -y @sync.so/mcp-server@latest 重启,或切换到托管服务器。

若要关闭此功能,请设置 SYNC_MCP_UPDATE_CHECK=off 或传入 --no-update-check。设置 CI 时也会跳过检查,托管服务器则始终不会检查。

可以提出的请求

将类似以下的提示词粘贴到智能体中。素材 ID 来自你的 sync. 媒体库。链接可以是公开媒体 URL,也可以是 YouTube、TikTok、Instagram 和 Facebook 视频。

请求智能体的操作
"Lipsync video asset <video-asset-id> with audio asset <audio-asset-id>."使用已保存的素材运行 lipsync_create,然后等待结果
"Lipsync https://example.com/talk.mp4 to https://example.com/voiceover.wav."使用公开 URL 运行 lipsync_create
"Translate https://www.youtube.com/watch?v=… to Spanish."使用 assets_create 导入链接,报出费用,并在你确认后运行 dubbing_create
"Make video asset <video-asset-id> say “thanks for watching” in a calm narrator voice."使用 voices_list 选择声音,报出脚本,然后使用 script 运行 lipsync_create
"How many credits do I have left?"account_get-usage
"What did my last generation cost?"在历史记录中找到该记录并读取 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

¹ 不提供给 ChatGPT 应用,因为其内嵌的 Studio 没有时间线。

² 尚未列入 ChatGPT 应用。jobs_create-many 可一次启动最多 50 个相互独立的任务,例如将一个视频配成多种语言;它会针对每个项目分别运行一次创建工具(lipsync_create、dubbing_create、dialogue-videos_create 等),使用与单次调用相同的 API、限制和计费规则,适用于任何套餐;jobs_get-many 会跟踪这组任务。请参阅 Jobs。批处理是 API 中独立的排队流程,适用于 Scale 及更高套餐,可处理 20 到 500 次生成,等待时间可能长达数小时。如果账户套餐不包含批处理,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 和 transcriptions_* 工具集;这些工具集中的说话人面部轨迹会用于 lipsync_create-timeline 片段。

若要列出更多工具,请设置 SYNC_MCP_TOOLSETS,或传入以逗号分隔的列表 --toolsets:

工具集添加的工具
default上述默认工具集,因此 default,admin 会在此基础上添加管理工具
lipsync对口型、时间线、Edit Dialogue、音频裁剪和批处理工具,以及原始的 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)在弃用期内仍然有效:通过这些名称调用时会运行相同的工具,并附带一行通知,指出新名称。工具名称列出了完整的新旧名称对照表。

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,可在服务器端等待(每次调用最长约 50 秒;客户端发送 progressToken 时会收到进度通知):generations_get、translation-previews_get、transcriptions_get,以及通过 assets_create 导入社交媒体内容。在本地服务器上,jobs_wait 和 jobs_get 可对所有类型的任务执行相同操作(生成、转录、说话人分析、翻译预览、导入),使用一个输入、{kind, id, projectId?},以及统一的结果格式和状态集合;请参阅 Jobs。jobs_get-many 可在两种服务器上同时以这种方式读取最多 50 个任务。

如果 API 提供此功能,feedback_send 可让智能体向 Sync 团队报告令人困惑的错误、错误结果和缺失的功能。

环境变量以及 HTTP 服务器的会话、内存、上传和诊断限制,请参阅 HTTP 服务器配置。

工作原理

  1. 启动时,服务器从 {baseUrl}/api-json 获取公开的 OpenAPI 规范,并将每个操作转换为带有 Zod 输入架构的 MCP 工具。
  2. 手写工具会在同一 API 上添加多步骤工作流,例如翻译和配音、Edit Dialogue、语音预览和费用查询。
  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 命令创建有效期为一天的自签名测试身份。测试运行前会删除临时证书和密钥文件。

# 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 个 token(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