Extentos MCP
официальныйExtentos — это мультивендорная платформа для разработки, позволяющая добавлять возможности умных очков в существующие приложения для iOS и Android. Простейшая аналогия — Stripe для умных очков.
Что можно делать с Extentos MCP?
-
Scaffold a smart-glasses app — Ask your agent to run
generateConnectionModuleto bootstrap the iOS/Android module with Gradle/SPM wiring, permissions, and manifest in one shot. -
Get canonical code patterns — Use
getCodeExampleto pull full Kotlin/Swift implementations for voice assistants, live transcription, photo description, and other SDK capabilities. -
Validate integration correctness — Run
validateIntegrationto 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
getEventLogfiltered by errors, voice, camera, display, or AI to diagnose issues in live sessions. -
Check production readiness — Run
getProductionChecklistfor 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 могут меняться между минорными версиями, пока не завершится цикл тестирования оборудования. Закрепите точную версию, если нужна воспроизводимость между сессиями.
Связанное
- Быстрый старт с AI-агентом — установите сервер и пройдите реальный цикл разработки
- Справочник инструментов — полный API по каждому инструменту
- Конфигурация — переменные окружения, файлы конфигурации, настройки установки
- Авторизация — device-code flow, привязка аккаунта, команды CLI для авторизации
- Поддерживаемые агенты — инструкции по установке для каждого хоста
- Архитектура — как MCP-сервер вписывается в более широкую систему Extentos
- Транспорт и симуляция приложений — что на самом деле делает симулятор, который брокерит MCP
[
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-фрагменты, шаги перезапуска и проверки, закрепление версий, обновление, устранение распространённых ошибок и инструкции по удалению. Проверенные пути установки для каждого поддерживаемого хоста.