sync. labs

officiel

Serveur MCP officiel de sync. labs : synchronisez les lèvres des vidéos avec un nouvel audio ou un script, doublez des vidéos dans d’autres langues avec une synchronisation labiale correspondante, faites parler des photos et clonez des voix. Connexion OAuth, sans clé API.

Que pouvez-vous faire avec Sync Labs MCP ?

  • Vidéos avec synchronisation labiale — Demandez à l’agent de synchroniser les lèvres d’une vidéo enregistrée avec un fichier audio ou des URL de médias publics, puis attendez le résultat.
  • Traduction et doublage — Faites traduire et doubler une vidéo YouTube, TikTok, Instagram ou Facebook dans une autre langue, avec le coût indiqué avant le lancement.
  • Discours scénarisé — Faites prononcer une réplique à une vidéo avec la voix de votre choix, en utilisant voices_list pour choisir la voix et un script entre guillemets.
  • Clonage vocal — Clonez une voix à partir de votre compte sync. pour vos futurs travaux de synthèse vocale et de synchronisation labiale.
  • Gérer les ressources et les projets — Créez, répertoriez, mettez à jour, téléchargez ou supprimez des ressources, et créez, renommez ou répertoriez des projets et leurs générations.
  • Consulter l’utilisation et les coûts — Demandez combien de crédits il vous reste ou combien a coûté une génération précédente.

Serveur MCP hébergé

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

S’installe dans Claude Code, Codex, Cursor et plus

Documentation

Serveur MCP sync.

Connectez votre agent IA à sync. pour synchroniser les lèvres des vidéos, les traduire et les doubler dans d’autres langues, cloner des voix et gérer des ressources et des projets depuis une conversation ou une session de programmation.

sync. héberge ce serveur à l’adresse https://mcp.sync.so/mcp. Vous vous connectez avec votre compte sync. : rien à installer ni aucune clé API à copier. Chaque fusion dans main de ce dépôt y est déployée.

Connecter votre agent

ChatGPT

Ouvrez sync. dans ChatGPT et connectez votre compte. Dans ChatGPT, sync. Studio s’ouvre également dans la conversation.

Claude (claude.ai et Claude Desktop)

  1. Ouvrez Settings → Connectors et choisissez Add custom connector.
  2. Nommez-le sync. et définissez l’URL sur https://mcp.sync.so/mcp.
  3. Cliquez sur Connect et connectez-vous à sync.

Claude Code

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

Exécutez ensuite /mcp dans Claude Code, sélectionnez sync et connectez-vous. Ajoutez --scope user pour l’utiliser dans tous les projets.

Codex

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

Cursor

Ajoutez-le à .cursor/mcp.json dans un projet, ou à ~/.cursor/mcp.json pour tous les projets :

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

Cursor vous demande de vous connecter à sync. lors de la première connexion.

VS Code

Ajoutez-le à .vscode/mcp.json :

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

Autres clients

Tout client prenant en charge les serveurs MCP distants via Streamable HTTP avec OAuth peut utiliser https://mcp.sync.so/mcp. Le client s’enregistre lui-même, puis vous vous connectez à sync. dans le navigateur.

Le serveur figure dans le registre MCP officiel sous le nom io.github.synchronicity-labs/mcp-server ; les clients et répertoires qui consultent le registre peuvent donc le trouver et l’ajouter. server.json correspond à cette entrée.

Serveur local avec une clé API

Pour les clients qui ne prennent pas en charge MCP distant, ainsi que pour les scripts et l’intégration continue, exécutez le serveur localement via stdio avec une clé API sync. :

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

Ou dans la configuration JSON d’un client :

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

Sans SYNC_API_KEY, le serveur lance une connexion par appareil lors de la première exécution : accédez à l’URL affichée et saisissez le code. Le jeton est mis en cache dans ~/.config/sync/mcp-credentials.json.

Les versions npm sont publiées séparément du déploiement hébergé et peuvent être en retard ; privilégiez donc le serveur hébergé si votre client le prend en charge. @latest fait en sorte que npx récupère la version la plus récente lorsque le client redémarre le serveur ; sans cette option, npx peut continuer à exécuter une ancienne copie mise en cache.

Avis de mise à jour

Au démarrage, un serveur local interroge le registre npm pour connaître la dernière version, au maximum une fois par jour (la réponse est mise en cache dans ~/.config/sync/mcp-update-check.json). La vérification s’exécute en arrière-plan avec une limite de deux secondes et ne retarde jamais le démarrage ni un appel d’outil ; en cas d’échec, aucun message ne s’affiche. Lorsqu’une version plus récente est disponible, les instructions du serveur et le premier résultat d’outil de la session indiquent à l’agent de vous demander de redémarrer avec npx -y @sync.so/mcp-server@latest ou de passer au serveur hébergé.

Pour désactiver cette vérification, définissez SYNC_MCP_UPDATE_CHECK=off ou transmettez --no-update-check. Elle est également ignorée lorsque CI est défini, et le serveur hébergé ne vérifie jamais les mises à jour.

Que demander

Collez des invites comme celles-ci dans votre agent. Les ID de ressources proviennent de votre bibliothèque sync. Les liens peuvent être des URL publiques de médias ou des vidéos YouTube, TikTok, Instagram et Facebook.

DemandeAction de l’agent
« Synchronise les lèvres de la vidéo <video-asset-id> avec l’audio <audio-asset-id>. »lipsync_create avec les ressources enregistrées, puis attend le résultat
« Synchronise les lèvres de https://example.com/talk.mp4 vers https://example.com/voiceover.wav. »lipsync_create avec des URL publiques
« Traduis https://www.youtube.com/watch?v=… en espagnol. »Importe le lien avec assets_create, indique le coût et, après votre confirmation, lance dubbing_create
« Fais dire “merci d’avoir regardé” à la vidéo <video-asset-id> avec une voix de narrateur calme. »Choisit une voix avec voices_list, indique le texte, puis lipsync_create avec script
« Combien de crédits me reste-t-il ? »account_get-usage
« Combien a coûté ma dernière génération ? »La retrouve dans l’historique et indique generations_get-costs

Les traductions, doublages, aperçus vocaux et clonages de voix font l’objet d’un devis que vous devez confirmer avant leur lancement.

Compétences d’agent

Les procédures détaillées pour ces outils (synchronisation labiale, photos parlantes, doublage, Edit Dialogue, campagnes, traitements par lots, dépannage et API) sont des compétences d’agent disponibles dans synchronicity-labs/skills. Installez-les dans n’importe quel agent avec npx skills add synchronicity-labs/skills. Le plug-in ChatGPT et Codex les fournit depuis un commit épinglé de ce dépôt ; consultez docs/chatgpt-plugin.md.

Outils

Le serveur hébergé expose à chaque client une sélection d’outils :

DomaineOutils
Synchronisation labialelipsync_create, lipsync_create-timeline¹, generations_estimate-cost, generations_get, generations_list, generations_get-continuation, generations_get-costs, models_list
Traduction et doublagedubbing_create, dubbing_get-options, translation-previews_estimate, translation-previews_create, translation-previews_get
Parole et voixspeech-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
Ressourcesassets_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
Projetsprojects_create, projects_get, projects_list, projects_list-generations, projects_rename
Tâches multiplesjobs_create-many², jobs_get-many²
Traitements par lotsbatches_create², batches_get², batches_list²
Compteaccount_get-context, account_get-usage, organizations_list, organizations_select

¹ Non proposé dans l’application ChatGPT, dont Studio intégré ne comporte pas de chronologie.

² Pas encore dans la liste de l’application ChatGPT. jobs_create-many lance jusqu’à 50 tâches indépendantes simultanément, par exemple le doublage d’une vidéo dans plusieurs langues, en exécutant un outil de création (lipsync_create, dubbing_create, dialogue-videos_create et autres) une fois par élément, avec la même API, les mêmes limites et la même facturation que les appels individuels, quel que soit le forfait ; jobs_get-many suit l’ensemble. Consultez Tâches. Un traitement par lots est un pipeline distinct de l’API, mis en file d’attente pour les exécutions volumineuses (20 à 500 générations) avec les forfaits Scale et supérieurs, qui peut attendre plusieurs heures. Si le forfait du compte ne comprend pas les traitements par lots, l’API répond avec le code 402 et requiredPlan et billingUrl, que les outils transmettent.

Les organisations disposant de la fonctionnalité correspondante ont également accès à scenes_detect (découpes caméra dans une vidéo) et stems_separate (voix et audio d’arrière-plan), en dehors de l’application ChatGPT. Ces outils se trouvent dans les ensembles lipsync et assets en local.

Les clients prenant en charge les applications ont également accès aux outils de l’application Studio intégrée : vues et brouillons Studio, widget de téléversement et assistants de l’application. Il s’agit des clients dont le nom de négociation MCP sélectionne le profil d’application ChatGPT ou Codex (openai-mcp, openai-mcp (Codex) ; consultez src/client-profile.ts). Les autres clients ne voient pas ces outils et leurs appels sont refusés.

Ensembles d’outils locaux

Le serveur local stdio peut également proposer un outil pour chacune des autres opérations publiques de l’API dans la spécification OpenAPI, soit plus de 65 au total. Par défaut, il répertorie les outils hébergés ci-dessus, sans ses outils d’administration (assets_delete et voices_clone), ainsi que jobs_get, jobs_wait et les outils transcriptions_*, dont les pistes de suivi des visages des intervenants alimentent les clips lipsync_create-timeline.

Pour en répertorier davantage, définissez SYNC_MCP_TOOLSETS ou transmettez --toolsets avec une liste séparée par des virgules :

Ensemble d’outilsAjouts
defaultLes outils par défaut ci-dessus ; default,admin y ajoute donc les outils d’administration
lipsyncOutils de synchronisation labiale, de chronologie, Edit Dialogue, de découpe audio et de traitement par lots, ainsi que generate_*, generations_* et dialogue-edits_* bruts
dubbingOutils de traduction et de doublage, ainsi que les outils de traitement par lots
assetsassets_* (sauf les suppressions) et les outils de téléversement
projectsprojects_* (sauf les suppressions) et projects_rename
transcriptiontranscriptions_*
voicesvoices_* (sauf le clonage et les suppressions), les aperçus vocaux et tts_*
adminToutes les suppressions (assets_delete, projects_delete, generations_delete, voices_delete) et voices_clone
allTous les outils, comme avant l’existence de cette option

Les lectures des tâches, du compte et des générations (jobs_get, jobs_wait, jobs_get-many, generations_get, account_get-context, organizations_list, organizations_select et autres outils similaires) sont incluses dans chaque sélection, tout comme jobs_create-many dès lors qu’un outil de création qu’il exécute est répertorié. Nommer des ensembles d’outils remplace la sélection par défaut au lieu de s’y ajouter. Pour rétablir tous les outils :

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

À moins que tous les outils soient répertoriés, les instructions du serveur indiquent à l’agent quels ensembles sont disponibles et comment obtenir les autres, afin qu’il puisse vous demander de redémarrer le serveur avec une sélection plus large. Le serveur hébergé ignore ce paramètre.

Flux de travail des outils décrit le fonctionnement des outils payants et à plusieurs étapes.

Les noms des outils suivent une convention <noun>_<verb> (lipsync_create, generations_get). Les anciens noms (create-lipsync, generate_get-generation) restent utilisables pendant une période de dépréciation : les appels effectués avec ces noms exécutent le même outil et ajoutent un avis d’une ligne indiquant le nouveau nom. Noms des outils contient le tableau complet des anciens et nouveaux noms.

Options 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

Automatisation sans supervision

Par défaut, les outils demandent à l’agent de chiffrer une action payante et d’attendre l’approbation de l’utilisateur. Lorsque le serveur exécute un pipeline ou un agent planifié dont l’opérateur a déjà approuvé les dépenses, démarrez-le avec --no-spend-confirmation (ou SYNC_MCP_SPEND_CONFIRMATION=off). L’agent crée alors des tâches sans chiffrer l’action ni demander d’approbation, et les outils d’estimation restent disponibles. Les agents ne peuvent pas modifier ce paramètre.

Les outils de tâches acceptent wait: true pour attendre côté serveur (jusqu’à environ 50 secondes par appel, avec des notifications de progression lorsque le client envoie un progressToken) : generations_get, translation-previews_get, transcriptions_get et les importations depuis les réseaux sociaux via assets_create. Sur le serveur local, jobs_wait et jobs_get font de même pour tous les types de tâches (génération, transcription, analyse des intervenants, aperçu de traduction, importation) avec une seule entrée, {kind, id, projectId?}, et un format de résultat et un ensemble d’états uniques ; consultez Tâches. jobs_get-many lit ainsi jusqu’à 50 tâches à la fois, sur les deux serveurs.

Lorsque l’API le permet, feedback_send permet aux agents de signaler à l’équipe Sync les erreurs déroutantes, les résultats incorrects et les fonctionnalités manquantes.

Les variables d’environnement et les limites de session, de mémoire, de téléversement et de diagnostic du serveur HTTP sont décrites dans Configuration du serveur HTTP.

Fonctionnement

  1. Au démarrage, le serveur récupère la spécification OpenAPI publique depuis {baseUrl}/api-json et transforme chaque opération en outil MCP doté d’un schéma d’entrée Zod.
  2. Des outils écrits à la main ajoutent des flux de travail à plusieurs étapes sur la même API, comme la traduction et le doublage, Edit Dialogue, les aperçus vocaux et les recherches de coûts.
  3. Chaque appel d’outil est une requête authentifiée à l’API sync., avec votre jeton OAuth (serveur hébergé) ou votre clé API (serveur local).

Avec stdio, toute nouvelle opération de l’API publique devient un outil au prochain redémarrage. Le serveur hébergé n’expose que les outils de sa liste d’autorisation ; un nouvel outil hébergé est donc livré avec une version de ce dépôt.

Utilisation programmatique

Vous pouvez également utiliser le serveur comme bibliothèque :

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

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

Développement

Les tests de sources HTTPS utilisent la commande locale openssl pour créer une identité de test auto-signée valable un jour. Les fichiers temporaires de certificat et de clé sont supprimés avant l’exécution des tests.

# 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

Le développement nécessite Node 26 ou une version ultérieure (.nvmrc) ; devEngines dans package.json impose cette version lors de l’installation. pnpm install installe un hook de pré-commit. Il exécute Oxlint et Oxfmt sur les fichiers indexés et bloque tout fichier source indexé qui dépasse 5 000 jetons (20 000 octets). Les fichiers qui dépassent déjà cette taille sont exemptés jusqu’à ce qu’ils soient scindés.

Tests du transport HTTP en local

Pour tester le transport HTTP (flux OAuth) en local :

  1. Copiez .env.example vers .env et renseignez les valeurs
  2. Démarrez un tunnel pour exposer localhost :
    ngrok http 3002
    
  3. Mettez à jour MCP_ISSUER_URL dans .env avec l’URL ngrok
  4. Démarrez le serveur :
    source .env
    node dist/cli.js --transport http --base-url $SYNC_BASE_URL --port 3002
    
  5. Vérifiez que tout fonctionne :
    curl https://<ngrok-url>/health
    curl https://<ngrok-url>/.well-known/oauth-authorization-server
    

Lorsqu’une connexion à Studio isolé nécessite le proxy Web de même origine, définissez SYNC_OAUTH_AUTHORIZATION_URL sur son URL /api-proxy/v2/oauth/authorize, tout en conservant SYNC_BASE_URL sur le listener API isolé direct. Seule la navigation du navigateur utilise le proxy Web. L’inscription, l’échange de code, le renouvellement, la révocation, userinfo et les appels d’outils utilisent l’API directe et conservent les délais, PKCE et les vérifications du client confidentiel existants. L’URL facultative doit utiliser HTTP(S), sans identifiants, requête ni fragment. Les déploiements existants ne nécessitent aucun nouveau paramètre.

  1. Ajoutez https://<ngrok-url>/mcp comme connecteur personnalisé dans Claude Web

En savoir plus

Licence

MIT