sync. labs

oficial

Servidor MCP oficial de sync. labs: sincroniza los labios de videos con audio nuevo o un guion, dobla videos a otros idiomas con sincronización labial y hace hablar a las fotos y clona voces. Inicio de sesión con OAuth, sin clave de API.

¿Qué puedes hacer con Sync Labs MCP?

  • Videos con sincronización labial — Pide al agente que sincronice los labios de un recurso de video guardado con un recurso de audio o con URL de medios públicos, y espera el resultado.
  • Traducir y doblar — Pide que se traduzca y se doble un enlace de YouTube, TikTok, Instagram o Facebook a otro idioma, con el costo indicado antes de iniciar el proceso.
  • Voz con guion — Haz que un video diga una frase con una voz elegida, usando voices_list para seleccionar la voz y un guion entre comillas.
  • Clonación de voz — Clona una voz de tu cuenta de sync. para usarla más adelante en trabajos de voz y sincronización labial.
  • Administrar recursos y proyectos — Crea, enumera, actualiza, descarga o elimina recursos, y crea, cambia el nombre o enumera proyectos y sus generaciones.
  • Consultar el uso y los costos — Pregunta cuántos créditos quedan o cuánto costó una generación anterior.

Servidor MCP alojado

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

Se instala en Claude Code, Codex, Cursor y más

Documentación

Servidor MCP de sync. labs

Conecta tu agente de IA a sync. para sincronizar los labios de los videos, traducirlos y doblarlos a otros idiomas, clonar voces y gestionar recursos y proyectos desde un chat o una sesión de programación.

sync. aloja este servidor en https://mcp.sync.so/mcp. Inicia sesión con tu cuenta de sync., así que no tienes que instalar nada ni copiar ninguna clave de API. Cada merge a main de este repositorio se implementa allí.

Conecta tu agente

ChatGPT

Abre sync. en ChatGPT y conecta tu cuenta. En ChatGPT, sync. Studio también se abre dentro del chat.

Claude (claude.ai y Claude Desktop)

  1. Abre Settings → Connectors y elige Add custom connector.
  2. Asígnale el nombre sync. y establece la URL en https://mcp.sync.so/mcp.
  3. Haz clic en Connect e inicia sesión en sync.

Claude Code

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

Luego ejecuta /mcp en Claude Code, selecciona sync e inicia sesión. Añade --scope user para usarlo en todos los proyectos.

Codex

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

Cursor

Añádelo a .cursor/mcp.json en un proyecto, o a ~/.cursor/mcp.json para todos los proyectos:

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

Cursor te pedirá que inicies sesión en sync. la primera vez que se conecte.

VS Code

Añádelo a .vscode/mcp.json:

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

Otros clientes

Cualquier cliente compatible con servidores MCP remotos mediante Streamable HTTP con OAuth puede usar https://mcp.sync.so/mcp. El cliente se registra y tú inicias sesión en sync. desde el navegador.

El servidor aparece en el Registro oficial de MCP como io.github.synchronicity-labs/mcp-server, así que los clientes y directorios que consultan el registro pueden encontrarlo y añadirlo. server.json es esa entrada.

Servidor local con una clave de API

Para clientes sin compatibilidad con MCP remoto, y para scripts y CI, ejecuta el servidor localmente mediante stdio con una clave de API de sync.:

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

O en la configuración JSON de un cliente:

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

Sin SYNC_API_KEY, el servidor inicia un inicio de sesión mediante dispositivo en la primera ejecución: visita la URL que muestra e introduce el código. El token se guarda en caché en ~/.config/sync/mcp-credentials.json.

Las versiones de npm se publican por separado de la implementación alojada y pueden ir con retraso, así que es preferible usar el servidor alojado cuando el cliente lo admita. @latest hace que npx obtenga la versión más reciente cuando el cliente reinicia el servidor; sin esta opción, npx puede seguir ejecutando una copia antigua almacenada en caché.

Aviso de actualización

Al iniciarse, un servidor local consulta el registro de npm para comprobar cuál es la versión más reciente, como máximo una vez al día (la respuesta se guarda en caché en ~/.config/sync/mcp-update-check.json). La comprobación se ejecuta en segundo plano con un límite de dos segundos y nunca retrasa el inicio ni una llamada a una herramienta; si falla, no se muestra nada. Cuando hay una versión más reciente, las instrucciones del servidor y el primer resultado de herramienta de la sesión indican al agente que te pida reiniciar con npx -y @sync.so/mcp-server@latest o cambiar al servidor alojado.

Para desactivarlo, establece SYNC_MCP_UPDATE_CHECK=off o pasa --no-update-check. También se omite cuando se establece CI, y el servidor alojado nunca realiza esta comprobación.

Qué pedir

Pega en tu agente indicaciones como estas. Los ID de recursos se obtienen de tu biblioteca de sync. Los enlaces pueden ser URL públicas de contenido multimedia o videos de YouTube, TikTok, Instagram y Facebook.

SolicitudQué hace el agente
"Sincroniza los labios del recurso de video <video-asset-id> con el recurso de audio <audio-asset-id>."lipsync_create con los recursos guardados y luego espera el resultado
"Sincroniza los labios de https://example.com/talk.mp4 con https://example.com/voiceover.wav."lipsync_create con URL públicas
"Traduce https://www.youtube.com/watch?v=… al español."Importa el enlace con assets_create, indica el costo y, cuando lo confirmes, ejecuta dubbing_create
"Haz que el recurso de video <video-asset-id> diga «gracias por ver» con voz de narrador serena."Elige una voz con voices_list, indica el costo del guion y luego lipsync_create con script
"¿Cuántos créditos me quedan?"account_get-usage
"¿Cuánto costó mi última generación?"La busca en el historial y consulta generations_get-costs

Antes de empezar, se te indican los costos de las traducciones, los doblajes, las muestras de voz y los clones de voz, y se te pide que los confirmes.

Habilidades de agente

Los flujos de trabajo paso a paso para estas herramientas (sincronización de labios, fotos parlantes, doblaje, Edit Dialogue, campañas, lotes, solución de problemas y la API) son habilidades de agente disponibles en synchronicity-labs/skills. Instálalas en cualquier agente con npx skills add synchronicity-labs/skills. El complemento de ChatGPT y Codex las incluye desde un commit fijado de ese repositorio; consulta docs/chatgpt-plugin.md.

Herramientas

El servidor alojado ofrece a todos los clientes un conjunto seleccionado de herramientas:

ÁreaHerramientas
Sincronización de labioslipsync_create, lipsync_create-timeline¹, generations_estimate-cost, generations_get, generations_list, generations_get-continuation, generations_get-costs, models_list
Traducción y doblajedubbing_create, dubbing_get-options, translation-previews_estimate, translation-previews_create, translation-previews_get
Voz y vocesspeech-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
Recursosassets_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
Proyectosprojects_create, projects_get, projects_list, projects_list-generations, projects_rename
Muchos trabajosjobs_create-many², jobs_get-many²
Lotesbatches_create², batches_get², batches_list²
Cuentaaccount_get-context, account_get-usage, organizations_list, organizations_select

¹ No se ofrece en la aplicación de ChatGPT, cuyo Studio integrado no tiene una línea de tiempo.

² Aún no aparece en el listado de la aplicación de ChatGPT. jobs_create-many inicia hasta 50 trabajos independientes a la vez, por ejemplo, un video doblado a varios idiomas, ejecutando una herramienta de creación (lipsync_create, dubbing_create, dialogue-videos_create y otras) una vez por elemento, con la misma API, los mismos límites y la misma facturación que las llamadas individuales en cualquier plan; jobs_get-many supervisa el conjunto. Consulta Trabajos. Un lote es una canalización en cola independiente de la API para ejecuciones grandes (de 20 a 500 generaciones) en los planes Scale y superiores, que pueden tardar horas en completarse. Si el plan de la cuenta no incluye lotes, la API responde con el código 402 y requiredPlan y billingUrl, que las herramientas transmiten.

Las organizaciones que tengan habilitada la función correspondiente también disponen de scenes_detect (cortes de cámara en un video) y stems_separate (voces y audio de fondo), fuera de la aplicación de ChatGPT. Están en los conjuntos de herramientas lipsync y assets en el servidor local.

Los clientes compatibles con aplicaciones también disponen de las herramientas de la aplicación Studio integrada: vistas y borradores de Studio, el widget de carga y las funciones auxiliares de la aplicación. Son clientes cuyo nombre de protocolo de enlace MCP selecciona el perfil de aplicación de ChatGPT o Codex (openai-mcp, openai-mcp (Codex); consulta src/client-profile.ts). Los demás clientes no ven estas herramientas y sus llamadas a ellas se rechazan.

Conjuntos de herramientas locales

El servidor local mediante stdio también puede ofrecer una herramienta por cada otra operación pública de la API en la especificación OpenAPI, más de 65 en total. De forma predeterminada, muestra el conjunto alojado anterior, sin sus herramientas de administración (assets_delete y voices_clone), además de jobs_get, jobs_wait y las herramientas transcriptions_*, cuyas pistas faciales de los hablantes alimentan los clips de lipsync_create-timeline.

Para mostrar más herramientas, establece SYNC_MCP_TOOLSETS o pasa --toolsets con una lista separada por comas:

Conjunto de herramientasAñade
defaultEl conjunto predeterminado anterior; por tanto, default,admin añade las herramientas de administración
lipsyncHerramientas de sincronización de labios, línea de tiempo, Edit Dialogue, recorte de audio y lotes, además de generate_*, generations_* y dialogue-edits_* sin procesar
dubbingHerramientas de traducción y doblaje, y las herramientas de lotes
assetsassets_* (excepto las eliminaciones) y las herramientas de carga
projectsprojects_* (excepto las eliminaciones) y projects_rename
transcriptiontranscriptions_*
voicesvoices_* (excepto la clonación y las eliminaciones), muestras de voz y tts_*
adminTodas las eliminaciones (assets_delete, projects_delete, generations_delete, voices_delete) y voices_clone
allTodas las herramientas, como antes de que existiera esta opción

Las consultas de trabajos, cuenta y generaciones (jobs_get, jobs_wait, jobs_get-many, generations_get, account_get-context, organizations_list, organizations_select y otras similares) se incluyen con cada selección, al igual que jobs_create-many siempre que se incluya una herramienta de creación que esta ejecute. Especificar conjuntos de herramientas reemplaza el conjunto predeterminado en lugar de añadirle elementos. Para recuperar todas las herramientas:

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

A menos que incluya todas las herramientas, las instrucciones del servidor indican al agente qué conjuntos están disponibles y cómo obtener los demás, para que pueda pedirte que reinicies el servidor con un conjunto más amplio. El servidor alojado ignora esta configuración.

Flujos de trabajo de las herramientas describe el funcionamiento de las herramientas de varios pasos y de pago.

Los nombres de las herramientas siguen un esquema <noun>_<verb> (lipsync_create, generations_get). Los nombres anteriores a ese esquema (create-lipsync, generate_get-generation) siguen funcionando durante un período de obsolescencia: las llamadas que los usan ejecutan la misma herramienta y muestran un aviso de una línea con el nombre nuevo. Nombres de las herramientas contiene la tabla completa de nombres antiguos → nuevos.

Opciones de 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

Automatización sin supervisión

De forma predeterminada, las herramientas indican al agente que informe el costo de una acción de pago y espere la aprobación del usuario. Cuando el servidor ejecuta una canalización o un agente programado cuyo operador ya ha aprobado los gastos, inícialo con --no-spend-confirmation (o SYNC_MCP_SPEND_CONFIRMATION=off). El agente creará trabajos sin indicar el costo ni pedir aprobación, y las herramientas de estimación seguirán disponibles. Los agentes no pueden cambiar esta configuración.

Las herramientas de trabajos aceptan wait: true para esperar en el servidor (hasta unos 50 segundos por llamada, con notificaciones de progreso cuando el cliente envía un progressToken): generations_get, translation-previews_get, transcriptions_get y las importaciones de redes sociales mediante assets_create. En el servidor local, jobs_wait y jobs_get hacen lo mismo con cualquier tipo de trabajo (generación, transcripción, análisis de hablantes, vista previa de traducción e importación) con una sola entrada, {kind, id, projectId?}, y un único formato de resultado y conjunto de estados; consulta Trabajos. jobs_get-many consulta hasta 50 trabajos de esa manera a la vez, en ambos servidores.

Cuando la API lo permite, feedback_send permite a los agentes informar al equipo de Sync sobre errores confusos, resultados incorrectos y funciones que faltan.

Las variables de entorno y los límites de sesión, memoria, carga y diagnóstico del servidor HTTP se describen en Configuración del servidor HTTP.

Cómo funciona

  1. Al iniciarse, el servidor obtiene la especificación OpenAPI pública de {baseUrl}/api-json y convierte cada operación en una herramienta MCP con un esquema de entrada Zod.
  2. Las herramientas escritas manualmente añaden flujos de trabajo de varios pasos sobre la misma API, como traducir y doblar, Edit Dialogue, las muestras de voz y las consultas de costos.
  3. Cada llamada a una herramienta es una solicitud autenticada a la API de sync., con tu token OAuth (servidor alojado) o clave de API (servidor local).

Mediante stdio, una nueva operación de la API pública se convierte en una herramienta en el siguiente reinicio. El servidor alojado solo expone las herramientas de su lista de permitidas, así que una nueva herramienta alojada se publica con una versión de este repositorio.

Uso programático

También puedes usar el servidor como biblioteca:

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

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

Desarrollo

Las pruebas de origen HTTPS usan el comando local openssl para crear una identidad de prueba autofirmada válida por un día. Los archivos temporales del certificado y la clave se eliminan antes de ejecutar las pruebas.

# 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

El desarrollo requiere Node 26 o posterior (.nvmrc); devEngines en package.json lo exige durante la instalación. pnpm install instala un hook de precommit. Ejecuta Oxlint y Oxfmt en los archivos preparados y bloquea cualquier archivo de código fuente preparado que supere los 5.000 tokens (20.000 bytes). Los archivos que ya superan ese tamaño quedan exentos hasta que alguien los divida.

Pruebas del transporte HTTP local

Para probar el transporte HTTP (flujo OAuth) localmente:

  1. Copia .env.example en .env y completa los valores
  2. Inicia un túnel para exponer localhost:
    ngrok http 3002
    
  3. Actualiza MCP_ISSUER_URL en .env con la URL de ngrok
  4. Inicia el servidor:
    source .env
    node dist/cli.js --transport http --base-url $SYNC_BASE_URL --port 3002
    
  5. Verifica que funcione:
    curl https://<ngrok-url>/health
    curl https://<ngrok-url>/.well-known/oauth-authorization-server
    

Cuando un inicio de sesión aislado de Studio requiera el proxy web del mismo origen, establece SYNC_OAUTH_AUTHORIZATION_URL en su URL de /api-proxy/v2/oauth/authorize, mientras mantienes SYNC_BASE_URL en el listener de API aislado directo. Solo la navegación del navegador usa el proxy web. El registro, el intercambio de códigos, la renovación, la revocación, userinfo y las llamadas a herramientas usan la API directa y conservan los plazos límite, PKCE y las comprobaciones de cliente confidencial existentes. La URL opcional debe usar HTTP(S), sin credenciales, consulta ni fragmento. Las implementaciones existentes no necesitan una nueva configuración.

  1. Añade https://<ngrok-url>/mcp como conector personalizado en Claude Web

Más información

Licencia

MIT