Extentos MCP

официальный

Extentos — это мультивендорная платформа для разработки, позволяющая добавлять возможности умных очков в существующие приложения для iOS и Android. Простейшая аналогия — Stripe для умных очков.

Что можно делать с Extentos MCP?

  • Scaffold a smart-glasses app — Ask your agent to run generateConnectionModule to bootstrap the iOS/Android module with Gradle/SPM wiring, permissions, and manifest in one shot.

  • Get canonical code patterns — Use getCodeExample to pull full Kotlin/Swift implementations for voice assistants, live transcription, photo description, and other SDK capabilities.

  • Validate integration correctness — Run validateIntegration to check manifests, permissions, dependencies, and bootstrap calls before testing, catching issues early.

  • Drive simulator sessions — Create and operate browser-based sessions with createSimulatorSession, inject transcripts or hardware buttons, and assert tool calls for agent-driven E2E testing.

  • Debug with event traces — Fetch structured logs via getEventLog filtered by errors, voice, camera, display, or AI to diagnose issues in live sessions.

  • Check production readiness — Run getProductionChecklist for a personalized pre-ship audit covering credentials, permissions, and store-listing requirements.

Документация

MCP-сервер

Сервер Extentos MCP (@extentos/mcp-server\) — это npm-пакет, который AI-агент (Claude Code, Cursor, Windsurf, Cline) устанавливает один раз, а затем использует для добавления возможностей умных очков Meta Ray-Ban в нативное iOS- или Android-приложение. Он предоставляет компактный набор детерминированных инструментов в 10 категориях — обнаружение, генерация, конфигурация агента, учетные данные, аналитика, рекомендации, валидация, симуляция, готовность к продакшену и документация — плюс CLI для привязки аккаунта, согласия на телеметрию и проверки обновлений. Это руководство по эксплуатации для агента.

MCP-сервер — это то, как AI-агент — Claude Code, Cursor, Windsurf, Cline или любой Model Context Protocol-совместимый хост — управляет Extentos. Агент вызывает детерминированные инструменты; сервер знакомит агента с возможностями очков, возвращает канонические паттерны кода SDK на Kotlin и Swift, создает каркас проекта, организует сеансы симулятора и запрашивает трассировки отладки. Сам сервер не имеет инструмента планирования — агенты лучше планируют, чем наборы регулярных выражений. Инструменты — это типизированные примитивы, которые агент компонует последовательно.

Эта страница — обзор раздела: что такое сервер, инструменты вкратце, канонический агентский поток, параметры конфигурации, CLI и модель аутентификации. Подстраницы подробно раскрывают каждый аспект.

Установка

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

Для хостов, отличных от Claude Code, см. пути установки через подсказку агента или ручной JSON. Полная справка по установке: /docs/mcp-server/install.

Инструменты по категориям

Сервер предоставляет детерминированную поверхность инструментов (проверено в mcp-server/src/tools/definitions.ts), организованную в 10 категорий. Категории — это ментальная карта агента; агент, понимающий, в какой категории находится инструмент, может решить, когда его вызывать. Всегда актуальный полный каталог — это сгенерированный справочник инструментов.

1. Обнаружение и справочник SDK (4 инструмента)

Первые вызовы в любой новой задаче. Дешевые, полностью локальные, без побочных эффектов.

ИнструментЧто делает
getPlatformInfoВозвращает статический каталог платформы — версию библиотеки, список возможностей SDK, которые предоставляют очки, уровни по вендорам. Всегда правильный первый вызов.
getCapabilityGuideМинимальное использование каждой функции на Kotlin + Swift — форма вызова, аргументы конфигурации, подводные камни. Работает в паре с getPlatformInfo (который называет функции), чтобы сообщить агенту, как вызывать каждую.
getCodeExampleПолные канонические композиции на обоих языках. Начните с assistant_agent_loop (канонический голосовой ассистент фазы 4) и agent_driven_e2e_full_loop (агентский E2E-тест). Также охватывает 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 и video_frames_ml. Используйте их как основу при написании кода обработчиков. Полный перечисленный список генерируется на /docs/reference/mcp-tools.
getMigrationGuideДля приложений, уже построенных на сыром Meta DAT — возвращает карту, ключи которой — ваши существующие символы DAT, сопоставленные с примитивами Extentos, которые их заменяют, плюс упорядоченный план перехода.

2. Настройка и генерация

ИнструментЧто делает
generateConnectionModuleОднократное создание каркаса — модуль начальной загрузки, подключение Gradle/SPM, зависимости, разрешения, манифест. Двухвызовный поток: первый вызов без placement возвращает вопрос о том, где должен находиться ExtentosConnectionPage; второй вызов с выбранным размещением возвращает полный набор файлов.
getConnectionPageConfig / setConnectionPageConfigЧтение / запись конфигурации страницы подключения для проекта (токены темизации + видимость разделов), которую хранят дашборд/сервер.
regenerateConnectionPageFile / adoptConnectionPageFileСинхронизация зафиксированного extentos.connection-page.json с конфигурацией сервера — регенерация (сервер→файл) или принятие (файл→сервер).

После создания каркаса агент пишет собственные классы обработчиков на основе примитивов SDK, предоставленных getCapabilityGuide / getCodeExample. Код обработчика — это поверхность авторства клиента — здесь нет шага initSpec или заполнения DSL.

3. Конфигурация и использование агента (5 инструментов)

Привязаны к аккаунту — требуют связанного аккаунта и ограничены по проектам через грант доступа MCP (по умолчанию Чтение+Запись).

ИнструментЧто делает
getAssistantConfig / setAssistantConfigЧтение или изменение настроек ассистента, управляемых дашбордом, для проекта — модель OpenAI Realtime, голос, модель памяти (компактизации) и режим памяти в рамках сеанса. set — это частичное обновление, проверяет каждое значение по каталогу и отображает влияние изменения модели на стоимость.
getGatewayUsageЧтение использования управляемого шлюза проекта + точной стоимости за недавний период — количество токенов и цена в долларах США по прейскуранту из биллингового реестра, с разбивкой по моделям. Только метаданные, никогда — транскрипты или содержимое.

4. Учетные данные (2 инструмента)

Привязаны к аккаунту + ограничены по проектам. Запись без знания — секрет никогда не проходит через агента.

ИнструментЧто делает
getCredentialStatusЧтение того, установлена ли идентичность сборки Meta DAT проекта — только замаскированная подсказка + время обновления, никогда — значение.
setCredentialНачало ввода учетных данных в режиме записи без знания — возвращает ссылку на дашборд, где вошедший владелец вставляет секрет прямо в зашифрованное хранилище. Намеренно не принимает аргумент-секрет.

5. Аналитика (1 инструмент)

ИнструментЧто делает
getProjectAnalyticsЧтение продакшен-аналитики проекта — агрегированная телеметрия с установок из App Store / Play Store (события, активные установки, по событию / дню / вендору / платформе). Только метаданные, привязано к аккаунту, проверка владения, ограничено грантом аналитики. Пусто, пока приложение не выйдет и не отправит подтвержденные продакшен-события (используйте getEventLog для живого потока разработки/симулятора).

6. Рекомендации по реализации (2 инструмента)

Побочные инструменты, которые агент вызывает во время композиции.

ИнструментЧто делает
getVoiceCommandGuidanceАнализ предлагаемых фраз пробуждения / команд на UX-проблемы (коллизии, неоднозначность, труднораспознаваемые слова, конфликты с ключевым словом пробуждения Meta) перед подключением их к потребителю glasses.audio.transcriptions().
getPermissionsВывод точных разрешений платформы, требований Meta DAT и потребностей в фоновом сервисе из списка возможностей. Запускайте при добавлении или удалении примитива из вашего обработчика.

7. Валидация (2 инструмента)

Контрольные точки корректности. Запускайте после структурных изменений (объявлена новая возможность, обновлена зависимость, отредактирован манифест).

ИнструментЧто делает
inspectIntegrationСнимок проекта только для чтения — манифест, хеши сгенерированных файлов, список зависимостей, конфигурация страницы подключения. Запускайте перед ручными правками, чтобы понять текущее состояние.
validateIntegrationПроверка корректности всего проекта — манифест, сгенерированные файлы, объявленная зависимость, разрешения покрывают объявленные возможности, начальная загрузка вызывает ExtentosGlasses.create(...), версии инструментария, подсказки фонового сервиса для потоков непрерывной записи. Предтестовый шлюз.

8. Симуляция

Предоставление и управление сеансами симулятора в браузере, а также инструменты тестирования под управлением агента, которые замыкают цикл end-to-end без человека.

ИнструментЧто делает
createSimulatorSessionПолучить-или-создать сеанс в браузерном режиме на extentos.com/s. Возвращает сохраненный симулятор для этого проекта, если он существует (status: "resumed"), или создает новый (status: "active"). Автоматически подключает запущенное приложение через локальный мост, если он доступен; в противном случае выдает фрагмент BuildConfig.EXTENTOS_SESSION_URL (Android) или полезную нагрузку extentos.session.plist (iOS). Ротация sessionId — это deleteSimulatorSession, затем создание — флага принудительного обновления нет.
ensureSimulatorBrowserОткрыть + подтвердить подключенную вкладку браузера симулятора — предварительное условие для потоков камеры и инъекций.
completeAuthLinkПосле того как createSimulatorSession возвращает status: "auth_required" (анонимной установке нужно связаться с созданными сеансами), опрашивает бэкенд, пока пользователь не завершит регистрацию, затем сохраняет токен носителя в ~/.extentos/auth.json.
getEventLogПолучение структурированных трассировок событий из сеанса. Значения фильтра: all (без фильтра) плюс семь чипов errors, voice, camera, display, ai, lifecycle, custom — один чип на событие, при этом errors поглощает severity≥warn независимо от модальности. Плюс cursor, follow, limit для области на уровне трассировки. Основной инструмент отладки.
getSimulatorStatusЧтение текущего состояния живого сеанса — фаза, готовность оборудования, подключенные роли, активные потоки возможностей, текущие значения переключателей.
injectTranscript / injectAssistantUtterance / assertToolCalledЗапуск фразы пробуждения или хода ассистента, затем проверка того, какой инструмент вызвала модель — цикл E2E под управлением агента, без человека.
injectHardwareButtonНажатие аппаратной кнопки захвата симулированных очков — касание приостанавливает/возобновляет живой поток камеры, удержание останавливает его — чтобы агент мог проверить жесты конфиденциальности владельца (и протестировать результирующий CaptureError.StreamPaused) без человека.
setSimVideo / setSimDeviceПодача тестового видео в симулированную камеру; переключение симулированной модели устройства (например, rayban_display для проверки пути отображения).
getDisplayState / injectInputЧтение текущего отображаемого дерева + управление вводом отображения (select / navigate / back).

9. Продакшен (2 инструмента)

Проверки перед выпуском.

ИнструментЧто делает
getProductionChecklistПерсонализированный чек-лист готовности к продакшену на основе объявленных возможностей + имен обработчиков — подключение учетных данных, аудит разрешений, требования к фоновому сервису (при непрерывной записи), удаление URL симулятора из релизных сборок, готовность листинга в магазине.
getCredentialGuideПошаговая настройка учетных данных для продакшен-провайдеров ИИ — anthropic, openai, google_cloud_vision, google_translate, google_gemini, deepl, azure_cognitive, aws_bedrock, huggingface или custom — плюс регистрация Meta DAT.

10. Документация и поиск (1 инструмент)

ИнструментЧто делает
searchDocsПоиск документации Extentos по теме или ключевому слову. Для голосовых ассистентов сначала прочитайте assistant_runtime. Другие смежные темы: voice_integration, agent_e2e_testing, managed_gateway, conversation_memory, display, плюс стабильный концептуальный набор — getting_started, custom_handlers (канонический документ по композиции SDK), simulator_browser_mode, simulator_session_lifecycle, event_log_schema, toggles, library_api, permissions, multi_platform_projects. Идентификаторы тем стабильны; живой ввод инструмента является авторитетным.

Полный справочник по каждому инструменту со схемами ввода, формами ответов и рабочими примерами: /docs/mcp-server/tools.

Канонический агентский поток

В новом проекте агент вызывает инструменты в следующем порядке:

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

Для итераций: правка кода обработчика → пересборка + переустановка → приложение автоматически подключается к тому же сеансу симулятора (без повторного создания, URL стабилен). Перед выпуском: getProductionChecklist и getCredentialGuide.

Конфигурация

MCP-сервер читает следующие переменные окружения (проверено в mcp-server/src/):

ПеременнаяПо умолчаниюЧто делает
EXTENTOS_BACKEND_URLПродакшен-бэкендПереопределение URL бэкенда (tools/util/backendClient.ts). Для локальной разработки самого Extentos.
EXTENTOS_CONFIG_DIR~/.extentosПереопределение каталога конфигурации/аутентификации (telemetry/consent.ts).
EXTENTOS_TELEMETRYне задано (по умолчанию согласие)Установите в 0, чтобы отклонить телеметрию без запуска команды согласия в CLI.
EXTENTOS_NO_AUTO_OPENне заданоУстановите в 1, чтобы отключить автоматическое открытие браузера при создании сеанса симулятора (полезно в средах без головы).

Полная справка по конфигурации: /docs/mcp-server/configuration.

Подкоманды CLI

Запуск npx @extentos/mcp-server@latest без аргументов запускает MCP-сервер через stdio (путь, который использует агент). С подкомандой он работает как CLI для разработчика:

ПодкомандаЧто делает
loginПривязывает эту установку к аккаунту Extentos через device-code flow (упреждающе — полезно перед первой сессией симулятора или после logout для повторной привязки).
logoutОчищает ~/.extentos/auth.json. Установка возвращается к анонимному уровню; следующий вызов сессии симулятора снова запустит device-code flow.
whoamiЕщё не реализовано (заглушка Phase-0). Выведет installId, accountId (если привязано), уровень, срок действия авторизации.
setupПредварительная проверка локальной среды сборки — проверяет PAT GitHub Packages (read:packages), необходимый для артефактов Meta DAT, для приложений, зависящих от com.extentos:glasses-meta, а также другие предварительные требования к зависимостям.
accept-privacyФиксирует согласие на конфиденциальность (включает загрузку телеметрии).
decline-privacyФиксирует отказ от конфиденциальности (отключает загрузку телеметрии).
statusВыводит состояние согласия, ID установки, привязанный аккаунт, версии MCP/библиотеки.
updateПроверяет наличие обновлений MCP-сервера (бездействует на установках npx @latest).

Полная справка по CLI: /docs/mcp-server/auth.

Модель авторизации

MCP-сервер работает по принципу анонимность в первую очередь. Обнаружение, руководства по возможностям, примеры кода, валидация, поиск по документации, симуляция на устройстве и тестирование на реальном оборудовании работают без входа в систему. Три вещи привязывают бесплатный аккаунт: создание сессий браузерного симулятора (createSimulatorSession, HTTP 402), шаг скаффолдинга generateConnectionModule (он создаёт привязанный к аккаунту ключ проекта — тот же device-code flow с 402; информационный первый вызов анонимный) и инструменты проекта с привязкой к аккаунту (конфигурация ассистента, учётные данные, запись на страницу подключения, аналитика — HTTP 401).

Device-code flow: первый вызов с ограничением возвращает status: "auth_required" с URL для проверки. Агент вызывает completeAuthLink для опроса бэкенда; разработчик регистрируется по URL с бесплатным аккаунтом только по email (Google или email + пароль, без оплаты); бэкенд выдаёт токен; исходный вызов инструмента автоматически повторяется. После привязки сессии симулятора становятся безлимитными.

Инструменты Extentos, кодогенерация, валидация, SDK и браузерный симулятор бесплатны — нет платы за место или подписки для сборки и выпуска. Единственная поверхность с учётом использования — это управляемый AI-шлюз за голосовым ассистентом Phase-4. Полная модель авторизации: /docs/mcp-server/auth; цены: /docs/resources/pricing.

Конфиденциальность и телеметрия

При первом запуске MCP-сервер вставляет одноразовое уведомление о конфиденциальности в ответ. Телеметрия анонимна (помечена installId, без исходного кода или личных данных) и по умолчанию отклоняется продолжением — та же схема, что у Vercel CLI, Astro, Vite. Отказ в любое время:

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

Содержимое уведомления о конфиденциальности находится в mcp-server/src/index.ts (константа PRIVACY_NOTICE). Уведомление показывается один раз на установку через claimFirstPrivacyNotice — никогда не повторяется.

Совместимые MCP-хосты

Проверено, что работает с:

  • Claude Code — основная цель. Установка одной строкой через claude mcp add.
  • Cursor — JSON-конфигурация в ~/.cursor/mcp.json.
  • Windsurf — JSON-конфигурация в ~/.codeium/windsurf/mcp_config.json.
  • Cline — JSON-конфигурация в настройках MCP Cline.
  • Любой MCP-совместимый хост — вставьте стандартный JSON-блок mcpServers.extentos.

MCP-сервер говорит на стандартном протоколе MCP через stdio (@modelcontextprotocol/sdk); на стороне сервера нет специфичных для хоста путей кода. Шаги установки для каждого хоста: /docs/mcp-server/agents.

Локальный мост — цикл разработки с автопривязкой

При запуске сервер открывает HTTP-слушатель 127.0.0.1:31337/whoami (mcp-server/src/localBridge.ts). Библиотека Extentos в приложении разработчика обращается к этой конечной точке во время выполнения, чтобы узнать installId своего хоста MCP. Результат: каждый вызов createSimulatorSession от агента автоматически прикрепляет запущенное приложение к новой сессии — без пересборки и вставки URL.

Пути доступа:

  • Эмулятор Android: http://10.0.2.2:31337/whoami (псевдоним NAT loopback хоста)
  • Симулятор iOS: http://localhost:31337/whoami (разделяет сетевой namespace хоста)
  • Физический телефон Android через USB: adb reverse tcp:31337 tcp:31337 один раз, затем localhost:31337 с устройства
  • Сотовый телефон или агент в облаке: время ожидания истекает. Агент использует путь с встраиванием URL — createSimulatorSession возвращает фрагмент BuildConfig.EXTENTOS_SESSION_URL (Android) или полезную нагрузку extentos.session.plist (iOS), которую разработчик вставляет, затем пересобирает приложение один раз. Менее элегантно, чем автопривязка, но работает в любой топологии.

Привязано только к 127.0.0.1. installId не является секретом — это то же значение, которое MCP отправляет в api.extentos.com при каждом вызове инструмента. На этом уровне авторизация не требуется.

Если порт 31337 занят (редко; уже запущен другой экземпляр MCP), при запуске выводится предупреждение, и работа продолжается. Автопривязка молча не срабатывает для этой сессии; разработчик использует путь с встраиванием URL, пока порт не освободится.

Статус

  • Пакет: @extentos/mcp-server на npm (лицензия MIT)
  • Движки: Node.js 20+
  • Pre-1.0 — API могут меняться между минорными версиями, пока не завершится цикл тестирования оборудования. Закрепите точную версию, если нужна воспроизводимость между сессиями.

Связанное

[

Alibaba Qianwen AI Glasses

Alibaba Qianwen AI Glasses для сторонних разработчиков — платформа навыков 千问AI硬件开放平台, интеграция MCP-инструментов, модель приложений, распространение, возможности и AI, а также место в ландшафте умных очков 2026 года.

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

Установка MCP-сервера

Как установить MCP-сервер Extentos (@extentos/mcp-server) в любой MCP-совместимый AI-агент кодирования — Claude Code, Cursor, Windsurf, Cline и другие. Команды установки для каждого хоста, расположение файлов конфигурации, копируемые JSON-фрагменты, шаги перезапуска и проверки, закрепление версий, обновление, устранение распространённых ошибок и инструкции по удалению. Проверенные пути установки для каждого поддерживаемого хоста.

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