Extentos MCP
公式Extentosは、既存のiOSおよびAndroidアプリにスマートグラス機能を追加するためのマルチベンダー開発プラットフォームです。最も簡単な例えは、スマートグラス向けのStripeです。
Extentos MCPで何ができますか?
-
スマートグラスアプリの雛形を作成 — エージェントに
generateConnectionModuleを実行させ、Gradle/SPMの配線、権限、マニフェストを一度にブートストラップして、iOS/Androidモジュールを立ち上げます。 -
標準的なコードパターンを取得 —
getCodeExampleを使用して、音声アシスタント、ライブ文字起こし、写真説明、その他のSDK機能向けの完全なKotlin/Swift実装を取得します。 -
統合の正確性を検証 — テスト前に
validateIntegrationを実行して、マニフェスト、権限、依存関係、ブートストラップ呼び出しをチェックし、問題を早期に発見します。 -
シミュレーターセッションを操作 —
createSimulatorSessionでブラウザベースのセッションを作成・操作し、トランスクリプトやハードウェアボタンを注入し、エージェント駆動のE2Eテスト用にツール呼び出しを検証します。 -
イベントトレースでデバッグ —
getEventLogで構造化ログを取得し、エラー、音声、カメラ、ディスプレイ、またはAIでフィルタリングして、ライブセッションの問題を診断します。 -
本番環境の準備状況を確認 —
getProductionChecklistを実行して、認証情報、権限、ストア掲載要件を網羅したパーソナライズされた出荷前監査を実施します。
ドキュメント
MCPサーバー
Extentos MCPサーバー(@extentos/mcp-server\)は、AIエージェント(Claude Code、Cursor、Windsurf、Cline)が一度インストールし、その後ネイティブiOSまたはAndroidアプリにMeta Ray-Banスマートグラスの機能を追加するために使用するnpmパッケージです。このサーバーは、10のカテゴリ(ディスカバリ、生成、エージェント設定、認証情報、分析、ガイダンス、検証、シミュレーション、本番準備、ドキュメント)にわたる厳密に定義された決定的ツールのセットと、アカウントリンク、テレメトリ同意、更新確認のためのCLIを公開しています。これがエージェントの操作マニュアルです。
MCPサーバーは、AIエージェント(Claude Code、Cursor、Windsurf、Cline、またはModel Context Protocol互換ホスト)がExtentosを操作する方法です。エージェントは決定的ツールを呼び出し、サーバーはグラスが公開する機能についてエージェントに事前情報を提供し、KotlinとSwiftの正規SDKコードパターンを返し、プロジェクトをスキャフォールドし、シミュレーターセッションを仲介し、デバッグトレースを照会します。サーバー自体には計画ツールはありません — エージェントは正規表現バンドルよりも優れたプランナーです。ツールはエージェントが順番に構成する型付きプリミティブです。
このページはセクションのランディングです — サーバーが何であるか、ツールの概要、正規のエージェント駆動フロー、設定ノブ、CLI、認証モデルの仕組みについて説明します。サブページではそれぞれを詳細に説明します。
インストール
claude mcp add extentos -- npx -y @extentos/mcp-server@latest
Claude Code以外のホストについては、エージェントプロンプトまたは手動JSONのインストールパスを参照してください。完全なインストールリファレンスは/docs/mcp-server/installにあります。
カテゴリ別ツール
サーバーは、10のカテゴリに編成された決定的ツールサーフェス(mcp-server/src/tools/definitions.tsで検証済み)を公開しています。カテゴリはエージェントのメンタルマップです。ツールがどのカテゴリに属するかを理解しているエージェントは、いつ呼び出すかを決定できます。常に最新の完全なカタログは、生成されたツールリファレンスにあります。
1. ディスカバリとSDKリファレンス(4ツール)
新しいタスクでの最初の呼び出し。安価で、すべてローカル、副作用なし。
| ツール | 機能 |
|---|---|
getPlatformInfo | 静的プラットフォームカタログ(ライブラリバージョン、グラスが公開するSDK機能のリスト、ベンダーごとのティア)を返します。常に最初の呼び出しとして正しいです。 |
getCapabilityGuide | Kotlin + Swiftでの機能ごとの最小限の使用法 — 呼び出し形状、設定引数、注意点。getPlatformInfo(機能を命名する)とペアになり、エージェントに各機能の呼び出し方法を伝えます。 |
getCodeExample | 両言語での完全な正規構成。assistant_agent_loop(Phase-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配線、依存関係、権限、マニフェスト。2回呼び出しフロー:placementなしの最初の呼び出しは、ExtentosConnectionPageがどこに配置されるべきかを尋ねる質問を返します。選択した配置での2回目の呼び出しは、完全なファイルセットを返します。 |
getConnectionPageConfig / setConnectionPageConfig | ダッシュボード/サーバーが保持するプロジェクトごとの接続ページ設定(テーマトークン+セクション表示)を読み取り/書き込みします。 |
regenerateConnectionPageFile / adoptConnectionPageFile | コミットされたextentos.connection-page.jsonをサーバー設定と同期します — 再生成(サーバー→ファイル)または採用(ファイル→サーバー)。 |
スキャフォールディング後、エージェントはgetCapabilityGuide / getCodeExampleによって公開されたSDKプリミティブに対して独自のハンドラークラスを書きます。ハンドラーコードは顧客の作成サーフェスです — initSpecやDSL入力ステップはありません。
3. エージェント設定と使用法(5ツール)
アカウントスコープ — リンクされたアカウントが必要で、MCPアクセス許可(デフォルトは読み取り+書き込み)によってプロジェクトごとにゲートされます。
| ツール | 機能 |
|---|---|
getAssistantConfig / setAssistantConfig | プロジェクトのダッシュボード管理アシスタント設定(OpenAI Realtimeモデル、音声、メモリ(圧縮)モデル、セッション内メモリモード)を読み取りまたは変更します。setは部分更新で、各値をカタログに対して検証し、モデル変更のコスト影響をエコーします。 |
getGatewayUsage | 最近のウィンドウにわたるプロジェクトの管理ゲートウェイ使用量+正確なコストを読み取ります — 請求台帳からのトークン数とリスト価格USD、モデル別に分類。メタデータのみで、トランスクリプトやコンテンツは決して含まれません。 |
4. 認証情報(2ツール)
アカウントスコープ+プロジェクトごとにゲート。知らずに書き込み — シークレットはエージェントを通過しません。
| ツール | 機能 |
|---|---|
getCredentialStatus | プロジェクトのMeta DATビルドIDが設定されているかどうかを読み取ります — マスクされたヒント+更新日時のみ、値は決して含まれません。 |
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. シミュレーション
ブラウザベースのシミュレーターセッションのプロビジョニングと操作、および人間なしでエンドツーエンドループを閉じるエージェント駆動テストツール。
| ツール | 機能 |
|---|---|
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(フィルターなし)に加えて、7つのチップerrors、voice、camera、display、ai、lifecycle、custom — イベントごとに1チップ、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 | 本番AIプロバイダー向けのステップバイステップ認証情報設定 — 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。トピックIDは安定しています。ライブツール入力が権威です。 |
入力スキーマ、応答形状、実例を含む完全なツールごとのリファレンス:/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サブコマンド
Running npx @extentos/mcp-server@latest を引数なしで実行すると、MCPサーバーがstdio経由で起動します(エージェントが使用するパスです)。サブコマンドを指定すると、開発者向けCLIとして動作します:
| サブコマンド | 機能 |
|---|---|
login | デバイスコードフローを介してこのインストールをExtentosアカウントにリンクします(プロアクティブ — 最初のシミュレーターセッションの前、またはlogoutの後に再リンクする場合に便利です)。 |
logout | ~/.extentos/auth.jsonをクリアします。インストールは匿名ティアに戻ります。次のシミュレーターセッション呼び出しでデバイスコードフローが再トリガーされます。 |
whoami | 未実装(Phase-0スタブ)。installId、accountId(リンクされている場合)、ティア、認証の有効期限を表示します。 |
setup | ローカルビルド環境の事前チェック — Meta DATアーティファクトが必要とするGitHub Packages PAT(read:packages)を確認します(com.extentos:glasses-metaに依存するアプリ向け)。その他の依存関係の前提条件もチェックします。 |
accept-privacy | プライバシー同意を記録します(テレメトリーのアップロードを有効化)。 |
decline-privacy | プライバシー拒否を記録します(テレメトリーのアップロードを無効化)。 |
status | 同意状態、インストールID、リンクされたアカウント、MCP/ライブラリのバージョンを表示します。 |
update | MCPサーバーのアップデートを確認します(npx @latestインストールでは何もしません)。 |
CLIの完全なリファレンス:/docs/mcp-server/auth
認証モデル
MCPサーバーは匿名ファーストです。ディスカバリー、機能ガイド、コード例、検証、ドキュメント検索、オンデバイスシミュレーション、実ハードウェアテストはすべてサインインなしで動作します。無料アカウントをリンクする3つの操作があります:ブラウザシミュレーターセッションのミント(createSimulatorSession、HTTP 402)、generateConnectionModuleスキャフォールドステップ(アカウントに紐づくプロジェクトキーをミントします — 同じ402デバイスコードフローです。情報提供用の最初の呼び出しは匿名です)、およびアカウントスコープのプロジェクトツール(アシスタント設定、認証情報、接続ページへの書き込み、アナリティクス — HTTP 401)。
デバイスコードフロー:最初のゲート付き呼び出しは、検証URLを含むstatus: "auth_required"を返します。エージェントはcompleteAuthLinkを呼び出してバックエンドをポーリングします。開発者はURLで無料のメールのみのアカウントにサインアップします(Googleまたはメール+パスワード、支払い不要)。バックエンドがトークンを発行し、元のツール呼び出しが自動的に再試行されます。リンク後、シミュレーターセッションは無制限になります。
Extentosのツール、コード生成、検証、SDK、ブラウザシミュレーターはすべて無料です — ビルドして出荷するためのシート単位やサブスクリプション料金はありません。使用量が計測される唯一のサーフェスは、Phase-4ボイスアシスタントの背後にあるマネージドAIゲートウェイです。完全な認証モデル:/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 —
~/.cursor/mcp.jsonのJSON設定。 - Windsurf —
~/.codeium/windsurf/mcp_config.jsonのJSON設定。 - Cline — ClineのMCP設定のJSON設定。
- MCP互換の任意のホスト — 標準の
mcpServers.extentosJSONブロックをドロップイン。
MCPサーバーはstdio(@modelcontextprotocol/sdk)で標準のMCPプロトコルを話します。サーバー側にホスト固有のコードパスは存在しません。ホストごとのインストール手順:/docs/mcp-server/agents。
ローカルブリッジ — 自動バインド開発ループ
サーバーが起動すると、127.0.0.1:31337/whoami HTTPリスナー(mcp-server/src/localBridge.ts)を開きます。開発者のアプリ上のExtentosライブラリは、実行時にこのエンドポイントをプローブして、ホストMCPのinstallIdを学習します。結果:エージェントからのすべてのcreateSimulatorSession呼び出しは、実行中のアプリを新しいセッションに自動的にアタッチします — リビルドもURL貼り付けも不要です。
到達パス:
- Androidエミュレーター:
http://10.0.2.2:31337/whoami(ホストループバックNATエイリアス) - iOSシミュレーター:
http://localhost:31337/whoami(ホストネットワーク名前空間を共有) - USB経由の物理Androidフォン: 一度
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-serveron npm(MITライセンス) - エンジン: Node.js 20+
- Pre-1.0 — ハードウェアテストループが閉じるまで、APIはマイナーバージョン間で変更される可能性があります。クロスセッションの再現性が必要な場合は、正確なバージョンにピン留めしてください。
関連
- AIエージェントを使ったクイックスタート — サーバーをインストールして実際の開発ループを体験
- ツールリファレンス — ツールごとの完全なAPI
- 設定 — 環境変数、設定ファイル、インストール時の設定
- 認証 — デバイスコードフロー、アカウントリンク、CLI認証コマンド
- 対応エージェント — ホストごとのインストール手順
- アーキテクチャ — MCPサーバーがより広いExtentosシステムにどのように適合するか
- トランスポートとアプリシミュレーション — MCPが仲介するシミュレーターが実際に何をするか
[
Alibaba Qianwen AI Glasses
Alibaba Qianwen AI Glasses for third-party developers — the 千问AI硬件开放平台 Skill platform, MCP tool integration, app model, distribution, capabilities & AI, and where it sits in the 2026 smart-glasses landscape.
](https://extentos.com/docs/ecosystem/platforms/alibaba-qianwen)[
MCPサーバーのインストール
Extentos MCPサーバー(@extentos/mcp-server)をMCP互換の任意のAIコーディングエージェント(Claude Code、Cursor、Windsurf、Clineなど)にインストールする方法。ホストごとのインストールコマンド、設定ファイルの場所、コピー&ペースト可能なJSONスニペット、再起動と検証手順、バージョンピン留め、更新、一般的なエラーのトラブルシューティング、アンインストール手順。各サポートホストの検証済みインストールパス。