sync. labs
официальныйОфициальный MCP-сервер sync. labs: синхронизируйте движения губ в видео с новой аудиодорожкой или сценарием, дублируйте видео на другие языки с синхронизацией губ, заставляйте фотографии говорить и клонируйте голоса. Вход через 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 и другие
Документация
MCP-сервер sync. labs
Подключите своего ИИ-агента к sync., чтобы синхронизировать движения губ в видео, переводить и дублировать их на другие языки, клонировать голоса, а также управлять ресурсами и проектами в чате или во время сеанса программирования.
sync. размещает этот сервер по адресу https://mcp.sync.so/mcp. Вход выполняется через вашу учетную запись sync., поэтому ничего устанавливать и копировать API-ключ не нужно. Каждое слияние в main этого репозитория приводит к развертыванию на этом сервере.
Подключение агента
ChatGPT
Откройте sync. в ChatGPT и подключите свою учетную запись. В ChatGPT sync. Studio также открывается прямо в чате.
Claude (claude.ai и Claude Desktop)
- Откройте Settings → Connectors и выберите Add custom connector.
- Назовите его
sync.и укажите URLhttps://mcp.sync.so/mcp. - Нажмите Connect и войдите в sync.
Claude Code
claude mcp add --transport http sync https://mcp.sync.so/mcp
Затем выполните /mcp в Claude Code, выберите 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" }
}
}
Другие клиенты
Любой клиент, поддерживающий удаленные MCP-серверы через Streamable HTTP с OAuth, может использовать https://mcp.sync.so/mcp. Клиент регистрируется самостоятельно, а вы входите в sync. в браузере.
Сервер указан в официальном реестре MCP
как io.github.synchronicity-labs/mcp-server, поэтому клиенты и каталоги, которые читают реестр, могут найти и добавить его. server.json — это запись в реестре.
Локальный сервер с API-ключом
Для клиентов без поддержки удаленных MCP-серверов, а также для скриптов и CI запускайте сервер локально через stdio с API-ключом sync.:
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, а размещенный сервер никогда не выполняет эту проверку.
Что можно попросить
Вставьте в агент запросы, подобные приведенным ниже. Идентификаторы ресурсов можно найти в библиотеке sync. Ссылки могут вести на общедоступные медиафайлы или видео на YouTube, TikTok, Instagram и Facebook.
| Запрос | Действия агента |
|---|---|
"Синхронизируй движения губ в видео <video-asset-id> с аудио <audio-asset-id>." | lipsync_create с сохраненными ресурсами, затем ожидает результат |
| "Синхронизируй движения губ в https://example.com/talk.mp4 с https://example.com/voiceover.wav." | lipsync_create с общедоступными URL |
| "Переведи https://www.youtube.com/watch?v=… на испанский." | Импортирует ссылку с помощью assets_create, сообщает стоимость и после вашего подтверждения запускает dubbing_create |
"Пусть видео <video-asset-id> произнесет «спасибо за просмотр» спокойным голосом диктора." | Выбирает голос с помощью voices_list, сообщает стоимость сценария, затем запускает lipsync_create с script |
| "Сколько у меня осталось кредитов?" | 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 Dialogue | dialogue_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 отслеживает выполнение набора. См. раздел Задания. Пакетная обработка — это отдельный конвейер API с очередью для крупных запусков (от 20 до 500 генераций) на тарифных планах Scale и выше; выполнение может ожидать несколько часов. Если тарифный план учетной записи не включает пакетную обработку, API возвращает код 402 с requiredPlan и billingUrl, которые инструменты передают дальше.
Организациям, у которых подключена соответствующая функция, также доступны scenes_detect (монтажные склейки в видео) и stems_separate (вокал и фоновое аудио); они недоступны в приложении ChatGPT. Локально они входят в наборы инструментов lipsync и assets.
Клиенты с поддержкой приложений также получают инструменты встроенного приложения Studio: представления и черновики Studio, виджет загрузки и вспомогательные функции приложения. Это клиенты, имя MCP-handshake которых выбирает профиль приложения ChatGPT или Codex (openai-mcp, openai-mcp (Codex); см. src/client-profile.ts). Другие клиенты не видят эти инструменты, а вызовы таких инструментов отклоняются.
Локальные наборы инструментов
Локальный сервер stdio также может предоставлять инструмент для каждой другой общедоступной операции API из спецификации OpenAPI — всего более 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 | Инструменты перевода и дубляжа, а также инструменты пакетной обработки |
assets | assets_* (кроме удаления) и инструменты загрузки |
projects | projects_* (кроме удаления) и projects_rename |
transcription | transcriptions_* |
voices | voices_* (кроме клонирования и удаления), предварительное прослушивание речи и 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_get-many таким же образом считывает до 50 заданий одновременно на обоих серверах.
Если API поддерживает эту функцию, feedback_send позволяет агентам сообщать команде Sync о непонятных ошибках, неверных результатах и недостающих возможностях.
Переменные среды, а также ограничения HTTP-сервера для сеансов, памяти, загрузок и диагностики описаны в разделе Настройка HTTP-сервера.
Как это работает
- При запуске сервер загружает общедоступную спецификацию OpenAPI с
{baseUrl}/api-jsonи преобразует каждую операцию в инструмент MCP со схемой входных данных Zod. - Инструменты, написанные вручную, добавляют многоэтапные сценарии работы с тем же API, например перевод и дубляж, Edit Dialogue, предварительное прослушивание речи и просмотр стоимости.
- Каждый вызов инструмента — это аутентифицированный запрос к API sync. с вашим токеном 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 hook. Он запускает Oxlint и Oxfmt для подготовленных к коммиту файлов и блокирует подготовленный исходный файл, если его размер превышает 5 000 токенов (20 000 байт). Файлы, уже превышающие этот размер, не блокируются, пока кто-нибудь не разделит их на части.
Локальное тестирование HTTP-транспорта
Чтобы локально протестировать HTTP-транспорт (поток OAuth):
- Скопируйте
.env.exampleв.envи заполните значения - Запустите туннель, чтобы открыть доступ к localhost:
ngrok http 3002 - Укажите URL ngrok в
MCP_ISSUER_URLв файле.env - Запустите сервер:
source .env node dist/cli.js --transport http --base-url $SYNC_BASE_URL --port 3002 - Проверьте, что всё работает:
curl https://<ngrok-url>/health curl https://<ngrok-url>/.well-known/oauth-authorization-server
Если для входа в изолированный Studio требуется веб-прокси с тем же источником, задайте
SYNC_OAUTH_AUTHORIZATION_URL равным его URL /api-proxy/v2/oauth/authorize, а
SYNC_BASE_URL оставьте указывающим на прямой изолированный API-обработчик. Только переходы в браузере используют веб-прокси. Регистрация, обмен кода, обновление токена, отзыв токена, получение данных пользователя и вызовы инструментов используют прямой API и сохраняют существующие ограничения по времени, проверки PKCE и конфиденциального клиента. Необязательный URL должен использовать HTTP(S) и не содержать учётных данных, строки запроса или фрагмента. Для существующих развёртываний новые настройки не нужны.
- Добавьте
https://<ngrok-url>/mcpкак пользовательский коннектор в Claude Web
Подробнее
- Рабочие процессы инструментов — Как работают многоэтапные и платные инструменты
- Настройка HTTP-сервера — Переменные среды и ограничения времени выполнения
- Примечания для сопровождающих — Совместимость с хостингом, отмена, прокси OAuth, загрузки и мониторинг
- Готовность к каталогу Claude — Контрольный список и оставшиеся задачи для отправки
- Документация Sync — Полный справочник по API и руководства
- Справочник Sync API — Документация конечных точек
- Протокол MCP — Узнайте о Model Context Protocol
- Сайт Sync — Зарегистрируйтесь и начните работу
Лицензия
MIT