Extentos MCP
officielExtentos 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
generateConnectionModulepour 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
getCodeExamplepour 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
validateIntegrationpour 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
getEventLogfiltré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
getProductionChecklistpour 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.
| Outil | Ce qu'il fait |
|---|---|
getPlatformInfo | Renvoie 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. |
getCapabilityGuide | Utilisation 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. |
getCodeExample | Compositions 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. |
getMigrationGuide | Pour 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
| Outil | Ce qu'il fait |
|---|---|
generateConnectionModule | Gé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 / setConnectionPageConfig | Lecture / é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 / adoptConnectionPageFile | Synchronise 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).
| Outil | Ce qu'il fait |
|---|---|
getAssistantConfig / setAssistantConfig | Lit 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. |
getGatewayUsage | Lit 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.
| Outil | Ce qu'il fait |
|---|---|
getCredentialStatus | Lit si l'identité de construction Meta DAT d'un projet est définie — un indice masqué + date de mise à jour uniquement, jamais la valeur. |
setCredential | Dé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)
| Outil | Ce qu'il fait |
|---|---|
getProjectAnalytics | Lit 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.
| Outil | Ce qu'il fait |
|---|---|
getVoiceCommandGuidance | Analyse 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(). |
getPermissions | Dé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é).
| Outil | Ce qu'il fait |
|---|---|
inspectIntegration | Instantané 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. |
validateIntegration | Vé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.
| Outil | Ce qu'il fait |
|---|---|
createSimulatorSession | Obtient 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. |
ensureSimulatorBrowser | Ouvre + confirme un onglet de navigateur simulateur connecté — la condition préalable pour les flux de caméra et d'injection. |
completeAuthLink | Aprè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. |
getEventLog | Ré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. |
getSimulatorStatus | Lit 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 / assertToolCalled | Pilote 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. |
injectHardwareButton | Appuie 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 / setSimDevice | Achemine 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 / injectInput | Lit l'arbre d'affichage actuellement rendu + pilote l'entrée d'affichage (select / navigate / back). |
9. Production (2 outils)
Vérifications avant publication.
| Outil | Ce qu'il fait |
|---|---|
getProductionChecklist | Liste 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. |
getCredentialGuide | Configuration 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)
| Outil | Ce qu'il fait |
|---|---|
searchDocs | Recherche 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/) :
| Variable | Défaut | Ce qu'elle fait |
|---|---|---|
EXTENTOS_BACKEND_URL | Backend de production | Remplace l'URL du backend (tools/util/backendClient.ts). Pour le développement local d'Extentos lui-même. |
EXTENTOS_CONFIG_DIR | ~/.extentos | Remplace le répertoire de configuration/auth (telemetry/consent.ts). |
EXTENTOS_TELEMETRY | non 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_OPEN | non défini | Dé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-commande | Ce qu'elle fait |
|---|---|
login | Lie 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). |
logout | Efface ~/.extentos/auth.json. L'installation revient au niveau anonyme ; le prochain appel de session simulateur redéclenchera le flux device-code. |
whoami | Pas encore implémenté (stub Phase-0). Affichera installId, accountId (si lié), le niveau, l'expiration de l'authentification. |
setup | Pré-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-privacy | Enregistre le consentement à la confidentialité (active le téléchargement de télémétrie). |
decline-privacy | Enregistre le refus de confidentialité (désactive le téléchargement de télémétrie). |
status | Affiche l'état du consentement, l'ID d'installation, le compte lié, les versions MCP/bibliothèque. |
update | Vé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:31337une fois, puislocalhost:31337depuis 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 —
createSimulatorSessionrenvoie un extraitBuildConfig.EXTENTOS_SESSION_URL(Android) ou une charge utileextentos.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-serversur 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
- Démarrage rapide avec un agent IA — installez le serveur et parcourez une vraie boucle de développement
- Référence des outils — API complète par outil
- Configuration — variables d'environnement, fichiers de configuration, paramètres d'installation
- Authentification — flux device-code, liaison de compte, commandes CLI d'authentification
- Agents pris en charge — instructions d'installation par hôte
- Architecture — comment le serveur MCP s'intègre dans le système Extentos plus large
- Simulation de transport vs application — ce que fait réellement le simulateur que le MCP orchestre
[
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.