Extentos MCP

officiel

Extentos est une plateforme de développement multi-fournisseurs pour ajouter des capacités de lunettes intelligentes aux applications iOS et Android existantes. L'analogie la plus simple est Stripe pour les lunettes intelligentes.

Que pouvez-vous faire avec Extentos MCP ?

  • Générer une application pour lunettes intelligentes — Demandez à votre agent d'exécuter generateConnectionModule pour amorcer le module iOS/Android avec la configuration Gradle/SPM, les permissions et le manifeste en une seule fois.

  • Obtenir des modèles de code canoniques — Utilisez getCodeExample pour récupérer des implémentations complètes en Kotlin/Swift pour les assistants vocaux, la transcription en direct, la description de photos et d'autres capacités du SDK.

  • Valider la correction de l'intégration — Exécutez validateIntegration pour vérifier les manifestes, les permissions, les dépendances et les appels d'amorçage avant les tests, afin de détecter les problèmes à un stade précoce.

  • Piloter des sessions de simulateur — Créez et utilisez des sessions basées sur navigateur avec createSimulatorSession, injectez des transcriptions ou des boutons matériels, et vérifiez les appels d'outils pour les tests E2E pilotés par agent.

  • Déboguer avec des traces d'événements — Récupérez des journaux structurés via getEventLog filtrés par erreurs, voix, caméra, affichage ou IA pour diagnostiquer les problèmes dans les sessions en direct.

  • Vérifier la préparation à la production — Exécutez getProductionChecklist pour un audit personnalisé avant publication couvrant les identifiants, les permissions et les exigences de fiche de boutique.

Documentation

MCP server

Le serveur MCP Extentos (@extentos/mcp-server\) est un package npm qu'un agent IA (Claude Code, Cursor, Windsurf, Cline) installe une fois, puis utilise pour ajouter des capacités de lunettes intelligentes Meta Ray-Ban à une application native iOS ou Android. Il expose un ensemble restreint d'outils déterministes répartis dans 10 catégories — découverte, génération, configuration d'agent, identifiants, analytique, conseils, validation, simulation, préparation à la production et documentation — ainsi qu'un CLI pour la liaison de compte, le consentement à la télémétrie et les vérifications de mise à jour. Ceci est le manuel d'utilisation de l'agent.

Le serveur MCP est le moyen par lequel un agent IA — Claude Code, Cursor, Windsurf, Cline ou tout hôte compatible Model Context Protocol — opère Extentos. L'agent invoque des outils déterministes ; le serveur prépare l'agent sur les capacités exposées par les lunettes, renvoie des modèles de code SDK canoniques en Kotlin et Swift, génère la structure du projet, orchestre les sessions de simulateur et interroge les traces de débogage. Le serveur lui-même n'a aucun outil de planification — les agents sont de meilleurs planificateurs que des ensembles de regex. Les outils sont des primitives typées que l'agent compose en séquence.

Cette page est la section d'accueil — ce qu'est le serveur, les outils en un coup d'œil, le flux canonique piloté par l'agent, les paramètres de configuration, le CLI et le fonctionnement du modèle d'authentification. Les sous-pages couvrent chaque sujet en profondeur.

Installation

claude mcp add extentos -- npx -y @extentos/mcp-server@latest

Pour les hôtes autres que Claude Code, consultez les chemins d'installation invite d'agent ou JSON manuel. Référence d'installation complète sur /docs/mcp-server/install.

Les outils, par catégorie

Le serveur expose une surface d'outils déterministe (vérifiée dans mcp-server/src/tools/definitions.ts), organisée en 10 catégories. Les catégories sont la carte mentale de l'agent ; un agent qui comprend dans quelle catégorie se trouve un outil peut décider quand l'appeler. Le catalogue complet toujours à jour est la référence des outils générée.

1. Découverte et référence SDK (4 outils)

Les premiers appels dans toute nouvelle tâche. Peu coûteux, entièrement locaux, sans effets secondaires.

OutilCe qu'il fait
getPlatformInfoRenvoie le catalogue statique de la plateforme — version de la bibliothèque, liste des capacités SDK exposées par les lunettes, niveaux par fournisseur. Toujours le bon premier appel.
getCapabilityGuideUtilisation minimale par fonctionnalité en Kotlin + Swift — forme d'appel, arguments de configuration, pièges. S'associe à getPlatformInfo (qui nomme les fonctionnalités) pour indiquer à l'agent comment invoquer chacune.
getCodeExampleCompositions canoniques complètes dans les deux langages. Commencez par assistant_agent_loop (le flux canonique d'assistant vocal de phase 4) et agent_driven_e2e_full_loop (le test E2E piloté par l'agent). Couvre également voice_qa_assistant, barge_in_speak, photo_describe_voice, live_transcription_ui, voice_notes, connection_page_setup, byok_anthropic, display_browse_detail, display_media_gallery et video_frames_ml. Inspirez-vous-en lors de l'écriture du code des gestionnaires. La liste complète énumérée est générée sur /docs/reference/mcp-tools.
getMigrationGuidePour les applications déjà construites sur Meta DAT brut — renvoie une carte indexée par vos symboles DAT existants vers les primitives Extentos qui les remplacent, plus un plan de migration ordonné.

2. Configuration et génération

OutilCe qu'il fait
generateConnectionModuleGénération en une fois — module d'amorçage, câblage Gradle/SPM, dépendances, autorisations, manifeste. Flux en deux appels : le premier appel sans placement renvoie une question demandant où ExtentosConnectionPage doit se trouver ; le deuxième appel avec l'emplacement choisi renvoie l'ensemble complet des fichiers.
getConnectionPageConfig / setConnectionPageConfigLecture / écriture de la configuration de la page de connexion par projet (jetons de thème + visibilité des sections) que le tableau de bord/serveur détient.
regenerateConnectionPageFile / adoptConnectionPageFileSynchronise le extentos.connection-page.json validé avec la configuration du serveur — régénère (serveur→fichier) ou adopte (fichier→serveur).

Après la génération, l'agent écrit ses propres classes de gestionnaires contre les primitives SDK exposées par getCapabilityGuide / getCodeExample. Le code des gestionnaires est la surface de création du client — il n'y a pas d'étape initSpec ou de population DSL.

3. Configuration et utilisation de l'agent (5 outils)

Limitée au compte — nécessite un compte lié et est restreinte par projet via la subvention d'accès MCP (par défaut Lecture+Écriture).

OutilCe qu'il fait
getAssistantConfig / setAssistantConfigLit ou modifie les paramètres d'assistant gérés par le tableau de bord d'un projet — le modèle OpenAI Realtime, la voix, le modèle de mémoire (compaction) et le mode de mémoire intra-session. set est une mise à jour partielle, valide chaque valeur par rapport au catalogue et renvoie l'impact sur les coûts d'un changement de modèle.
getGatewayUsageLit l'utilisation de la passerelle gérée du projet + le coût exact sur une fenêtre récente — nombres de jetons et prix catalogue en USD du registre de facturation, ventilés par modèle. Métadonnées uniquement, jamais de transcriptions ni de contenu.

4. Identifiants (2 outils)

Limitée au compte + restreinte par projet. Écriture sans connaissance — le secret ne passe jamais par l'agent.

OutilCe qu'il fait
getCredentialStatusLit si l'identité de construction Meta DAT d'un projet est définie — un indice masqué + date de mise à jour uniquement, jamais la valeur.
setCredentialDémarre la saisie d'un identifiant en écriture sans connaissance — renvoie un lien de tableau de bord où le propriétaire connecté colle le secret directement dans le coffre-fort chiffré. Ne prend aucun argument secret par conception.

5. Analytique (1 outil)

OutilCe qu'il fait
getProjectAnalyticsLit l'analytique de production d'un projet — télémétrie agrégée des installations App Store / Play Store publiées (événements, installations actives, par événement / jour / fournisseur / plateforme). Métadonnées uniquement, limitée au compte, vérification de propriété, restreinte par la subvention Analytique. Vide jusqu'à ce que l'application soit publiée et envoie des événements attestés en production (utilisez getEventLog pour le flux de développement/simulation en direct).

6. Conseils d'implémentation (2 outils)

Outils de quête secondaire que l'agent appelle pendant la composition.

OutilCe qu'il fait
getVoiceCommandGuidanceAnalyse les phrases de réveil / commande proposées pour les problèmes d'UX (collisions, ambiguïté, mots difficiles à reconnaître, conflits avec les mots de réveil Meta) avant de les câbler dans un consommateur glasses.audio.transcriptions().
getPermissionsDéduit les autorisations de plateforme exactes, les exigences Meta DAT et les besoins en service de premier plan à partir de la liste des capacités. À exécuter lors de l'ajout ou du retrait d'une primitive de votre gestionnaire.

7. Validation (2 outils)

Portes de correction. À exécuter après des modifications structurelles (nouvelle capacité déclarée, dépendance mise à jour, manifeste modifié).

OutilCe qu'il fait
inspectIntegrationInstantané du projet en lecture seule — manifeste, hachages des fichiers générés, liste des dépendances, configuration de la page de connexion. À exécuter avant les modifications manuelles pour comprendre l'état actuel.
validateIntegrationVérification de correction de l'ensemble du projet — manifeste, fichiers générés, dépendance déclarée, autorisations couvrant les capacités déclarées, amorçage appelant ExtentosGlasses.create(...), versions des chaînes d'outils, indications de service de premier plan pour les flux de capture continue. La porte de pré-test.

8. Simulation

Fournit et exploite des sessions de simulateur basées sur navigateur, plus les outils de test pilotés par l'agent qui bouclent la boucle de bout en bout sans humain.

OutilCe qu'il fait
createSimulatorSessionObtient ou crée une session en mode navigateur sur extentos.com/s. Renvoie la simulation enregistrée pour ce projet si elle existe (status: "resumed"), ou en crée une nouvelle (status: "active"). Attache automatiquement l'application en cours d'exécution via le pont local lorsqu'elle est accessible ; sinon émet un extrait BuildConfig.EXTENTOS_SESSION_URL (Android) ou une charge utile extentos.session.plist (iOS). La rotation du sessionId se fait par deleteSimulatorSession puis création — il n'y a pas de drapeau de force-nouveau.
ensureSimulatorBrowserOuvre + confirme un onglet de navigateur simulateur connecté — la condition préalable pour les flux de caméra et d'injection.
completeAuthLinkAprès que createSimulatorSession renvoie status: "auth_required" (l'installation anonyme doit être liée aux sessions créées), interroge le backend jusqu'à ce que l'utilisateur termine l'inscription, puis persiste le jeton porteur vers ~/.extentos/auth.json.
getEventLogRécupère les traces d'événements structurées d'une session. Valeurs de filtre : all (aucun filtre) plus les sept puces errors, voice, camera, display, ai, lifecycle, custom — une puce par événement, avec errors absorbant sévérité≥avertissement quel que soit le mode. Plus cursor, follow, limit pour la portée au niveau de la trace. L'outil de débogage principal.
getSimulatorStatusLit l'état actuel d'une session en direct — phase, matériel prêt, rôles attachés, flux de capacités actifs, valeurs de bascule actuelles.
injectTranscript / injectAssistantUtterance / assertToolCalledPilote une phrase de réveil ou un tour d'assistant, puis vérifie quel outil le modèle a appelé — la boucle E2E pilotée par l'agent, sans besoin d'humain.
injectHardwareButtonAppuie sur le bouton de capture matériel des lunettes simulées — une pression suspend/reprend un flux caméra en direct, un maintien l'arrête — afin que l'agent puisse exercer les gestes de confidentialité du porteur (et tester le CaptureError.StreamPaused résultant) sans humain.
setSimVideo / setSimDeviceAchemine une vidéo de test dans la caméra simulée ; change le modèle d'appareil simulé (par ex. rayban_display pour exercer le chemin d'affichage).
getDisplayState / injectInputLit l'arbre d'affichage actuellement rendu + pilote l'entrée d'affichage (select / navigate / back).

9. Production (2 outils)

Vérifications avant publication.

OutilCe qu'il fait
getProductionChecklistListe de contrôle personnalisée de préparation à la production basée sur les capacités déclarées + noms des gestionnaires — câblage des identifiants, audit des autorisations, exigences de service de premier plan (lorsque la capture continue est utilisée), suppression de l'URL du simulateur des versions de publication, préparation de la fiche de magasin.
getCredentialGuideConfiguration pas à pas des identifiants pour les fournisseurs IA de production — anthropic, openai, google_cloud_vision, google_translate, google_gemini, deepl, azure_cognitive, aws_bedrock, huggingface ou custom — plus l'enregistrement Meta DAT.

10. Documentation et recherche (1 outil)

OutilCe qu'il fait
searchDocsRecherche la documentation Extentos par sujet ou mot-clé. Pour les assistants vocaux, lisez assistant_runtime en premier. Autres sujets alignés : voice_integration, agent_e2e_testing, managed_gateway, conversation_memory, display, plus l'ensemble conceptuel stable — getting_started, custom_handlers (le document canonique de composition SDK), simulator_browser_mode, simulator_session_lifecycle, event_log_schema, toggles, library_api, permissions, multi_platform_projects. Les identifiants de sujet sont stables ; l'entrée d'outil en direct fait autorité.

Référence complète par outil avec schémas d'entrée, formes de réponse et exemples travaillés : /docs/mcp-server/tools.

Le flux canonique piloté par l'agent

Dans un nouveau projet, l'agent invoque les outils dans cet ordre :

1. getPlatformInfo({ sections: ["version", "capabilities"], glasses: "meta_rayban" })
2. getCodeExample({ pattern: "assistant_agent_loop" })  // Phase-4 voice assistant; or whatever pattern fits
3. getCapabilityGuide({ feature: "<each primitive the handler will use>" })
4. generateConnectionModule({ platform, glasses, appPackage })
   → returns "needs_placement" question
5. generateConnectionModule({ ... placement: "<chosen>" })
   → writes scaffold files (ExtentosBootstrap, manifest, etc.)
6. <agent writes handler class(es)> against the SDK primitives
   <agent updates extentos.manifest.json's \`capabilities\` array>
7. validateIntegration()
   → ✓ all good (or returns structured errors to fix)
8. createSimulatorSession({ glasses })
   → returns sessionId; auto-opens browser at extentos.com/s/<id>
   → if running app is reachable via local bridge, it auto-attaches
9. <developer interacts with the simulator; capability events flow into the backend>
10. getEventLog({ sessionId, filter: "errors" })  → debug
    getSimulatorStatus({ sessionId })             → status

Pour l'itération : modifier le code du gestionnaire → reconstruire + réinstaller → l'application se rattache automatiquement à la même session de simulateur (pas de nouvelle création, l'URL est stable). Avant la publication : getProductionChecklist et getCredentialGuide.

Configuration

Le serveur MCP lit ces variables d'environnement (vérifiées dans mcp-server/src/) :

VariableDéfautCe qu'elle fait
EXTENTOS_BACKEND_URLBackend de productionRemplace l'URL du backend (tools/util/backendClient.ts). Pour le développement local d'Extentos lui-même.
EXTENTOS_CONFIG_DIR~/.extentosRemplace le répertoire de configuration/auth (telemetry/consent.ts).
EXTENTOS_TELEMETRYnon défini (consentement par défaut)Définir sur 0 pour refuser la télémétrie sans exécuter la commande de consentement du CLI.
EXTENTOS_NO_AUTO_OPENnon définiDéfinir sur 1 pour désactiver l'ouverture automatique du navigateur lors de la création de session de simulateur (utile dans les environnements sans tête).

Référence de configuration complète : /docs/mcp-server/configuration.

Sous-commandes CLI

Lancer npx @extentos/mcp-server@latest sans argument démarre le serveur MCP via stdio (le chemin utilisé par l'agent). Avec une sous-commande, il agit comme une CLI de développement :

Sous-commandeCe qu'elle fait
loginLie cette installation à un compte Extentos via le flux device-code (proactif — utile avant la première session simulateur, ou après logout pour relier à nouveau).
logoutEfface ~/.extentos/auth.json. L'installation revient au niveau anonyme ; le prochain appel de session simulateur redéclenchera le flux device-code.
whoamiPas encore implémenté (stub Phase-0). Affichera installId, accountId (si lié), le niveau, l'expiration de l'authentification.
setupPré-vérifie l'environnement de build local — vérifie le PAT GitHub Packages (read:packages) dont les artefacts Meta DAT ont besoin, pour les applications qui dépendent de com.extentos:glasses-meta, ainsi que les autres prérequis de dépendances.
accept-privacyEnregistre le consentement à la confidentialité (active le téléchargement de télémétrie).
decline-privacyEnregistre le refus de confidentialité (désactive le téléchargement de télémétrie).
statusAffiche l'état du consentement, l'ID d'installation, le compte lié, les versions MCP/bibliothèque.
updateVérifie les mises à jour du serveur MCP (sans effet sur les installations npx @latest).

Référence CLI complète : /docs/mcp-server/auth.

Modèle d'authentification

Le serveur MCP est anonyme en premier. La découverte, les guides de capacités, les exemples de code, la validation, la recherche de documentation, la simulation sur appareil et les tests sur matériel réel fonctionnent tous sans connexion. Trois éléments lient un compte gratuit : la création de sessions simulateur navigateur (createSimulatorSession, HTTP 402), l'étape de génération de structure generateConnectionModule (elle crée votre clé de projet liée au compte — même flux device-code 402 ; le premier appel informatif est anonyme), et les outils de projet liés au compte (configuration de l'assistant, identifiants, écritures de page de connexion, analytique — HTTP 401).

Le flux device-code : le premier appel restreint renvoie status: "auth_required" avec une URL de vérification. L'agent appelle completeAuthLink pour interroger le backend ; le développeur s'inscrit avec un compte gratuit email uniquement à l'URL (Google ou email + mot de passe, sans paiement) ; le backend émet un jeton ; l'appel d'outil d'origine réessaie automatiquement. Après la liaison, les sessions simulateur sont illimitées.

Les outils d'Extentos, la génération de code, la validation, le SDK et le simulateur navigateur sont gratuits — il n'y a pas de frais par siège ou d'abonnement pour construire et livrer. La seule surface qui mesure l'utilisation est la passerelle IA gérée derrière l'assistant vocal Phase-4. Modèle d'authentification complet : /docs/mcp-server/auth ; tarification : /docs/resources/pricing.

Confidentialité et télémétrie

Au premier lancement, le serveur MCP injecte un avis de confidentialité unique dans la réponse. La télémétrie est anonyme (balisée avec installId, sans code source ni données personnelles) et est ignorée par défaut en continuant — même modèle que Vercel CLI, Astro, Vite. Refusez à tout moment :

npx @extentos/mcp-server@latest decline-privacy
# or
EXTENTOS_TELEMETRY=0 (env var, persistent for the shell)

Le contenu de l'avis de confidentialité se trouve dans mcp-server/src/index.ts (constante PRIVACY_NOTICE). L'avis est affiché une fois par installation via claimFirstPrivacyNotice — ne se répète jamais.

Hôtes MCP compatibles

Vérifié pour fonctionner avec :

  • Claude Code — cible principale. Installation en une ligne via claude mcp add.
  • Cursor — configuration JSON dans ~/.cursor/mcp.json.
  • Windsurf — configuration JSON dans ~/.codeium/windsurf/mcp_config.json.
  • Cline — configuration JSON dans les paramètres MCP de Cline.
  • Tout hôte compatible MCP — déposez le bloc JSON standard mcpServers.extentos.

Le serveur MCP parle le protocole MCP standard via stdio (@modelcontextprotocol/sdk) ; aucun chemin de code spécifique à un hôte n'existe côté serveur. Étapes d'installation par hôte : /docs/mcp-server/agents.

La passerelle locale — boucle de développement à liaison automatique

Lorsque le serveur démarre, il ouvre un écouteur HTTP 127.0.0.1:31337/whoami (mcp-server/src/localBridge.ts). La bibliothèque Extentos sur l'application du développeur sonde ce point de terminaison au moment de l'exécution pour apprendre le installId de son MCP hôte. Le résultat : chaque appel createSimulatorSession de l'agent attache automatiquement l'application en cours d'exécution à la nouvelle session — sans reconstruction, sans collage d'URL.

Chemins d'accès :

  • Émulateur Android : http://10.0.2.2:31337/whoami (alias NAT de bouclage hôte)
  • Simulateur iOS : http://localhost:31337/whoami (partage l'espace de noms réseau de l'hôte)
  • Téléphone Android physique via USB : adb reverse tcp:31337 tcp:31337 une fois, puis localhost:31337 depuis l'appareil
  • Téléphone cellulaire ou agent hébergé dans le cloud : le sondage expire. L'agent utilise plutôt le chemin d'intégration d'URL — createSimulatorSession renvoie un extrait BuildConfig.EXTENTOS_SESSION_URL (Android) ou une charge utile extentos.session.plist (iOS) que le développeur colle, puis reconstruit l'application une fois. Moins élégant que la liaison automatique mais fonctionne sur toute topologie.

Lié à 127.0.0.1 uniquement. Le installId n'est pas un secret — c'est la même valeur que le MCP envoie à api.extentos.com à chaque appel d'outil. Aucune authentification nécessaire à cette couche.

Si le port 31337 est utilisé (rare ; une autre instance MCP est déjà en cours d'exécution), le démarrage enregistre un avertissement et continue. La liaison automatique échoue silencieusement pour cette session ; le développeur utilise le chemin d'intégration d'URL jusqu'à ce que le port se libère.

Statut

  • Paquet : @extentos/mcp-server sur npm (licence MIT)
  • Moteurs : Node.js 20+
  • Pré-1.0 — les API peuvent changer entre les versions mineures jusqu'à ce que la boucle de test matériel soit fermée. Épinglez une version exacte si vous avez besoin de reproductibilité entre sessions.

Liens connexes

[

Lunettes IA Alibaba Qianwen

Lunettes IA Alibaba Qianwen pour développeurs tiers — la plateforme Skill 千问AI硬件开放平台, l'intégration d'outils MCP, le modèle d'application, la distribution, les capacités et l'IA, et sa place dans le paysage des lunettes intelligentes 2026.

](https://extentos.com/docs/ecosystem/platforms/alibaba-qianwen)[

Installer le serveur MCP

Comment installer le serveur MCP Extentos (@extentos/mcp-server) dans n'importe quel agent de codage IA compatible MCP — Claude Code, Cursor, Windsurf, Cline et autres. Commandes d'installation par hôte, emplacements des fichiers de configuration, extraits JSON copiables, étapes de redémarrage et de vérification, épinglage de version, mise à jour, dépannage des erreurs courantes et instructions de désinstallation. Chemins d'installation vérifiés pour chaque hôte pris en charge.

](https://extentos.com/docs/mcp-server/install)