Extentos MCP
公式Extentosは、既存のiOSおよびAndroidアプリにスマートグラス機能を追加するためのマルチベンダー開発プラットフォームです。最も簡単な例えは、スマートグラス向けのStripeです。
Extentos MCPで何ができますか?
- プラットフォームの機能とSDKの特徴を確認 — コードを書く前に
getPlatformInfoを呼び出して、Meta Ray-Ban の全機能、ライブラリバージョン、ベンダーティアのカタログを取得します。 - 正規のコード例と使用ガイドを取得 —
getCodeExampleとgetCapabilityGuideを使用して、音声アシスタント、ディスプレイ操作、文字起こし、その他のSDKプリミティブに関する Kotlin/Swift のパターンを入手します。 - 完全な接続モジュールをスキャフォールディング —
generateConnectionModuleを実行して、Gradle/SPM の配線、権限、マニフェストエントリ、Extentos 接続ページをネイティブプロジェクトにブートストラップします。 - テスト前にプロジェクトの正確性を検証 —
validateIntegrationを呼び出して、マニフェスト宣言、依存関係バージョン、権限カバレッジ、宣言された機能に対するブートストラップ呼び出しを確認します。 - シミュレーターセッションをプロビジョニングして実行 —
createSimulatorSessionを呼び出してブラウザベースのセッションを作成し、injectTranscript、assertToolCalled、getEventLogを使用して、人間を介さずにエージェント駆動のエンドツーエンドテストを実行します。 - 本番環境の準備状況を監査 —
getProductionChecklistとgetCredentialGuideを実行して、出荷前に認証情報の配線、フォアグラウンドサービスの要件、ストア掲載の準備状況を確認します。
ドキュメント
MCPサーバー
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リファレンス(3ツール)
新しいタスクでの最初の呼び出し。低コストで、すべてローカル、副作用なし。
| ツール | 機能 |
|---|---|
| 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で生成されます。 |
2. セットアップと生成
| ツール | 機能 |
|---|---|
| generateConnectionModule | ワンショットスキャフォールド — モジュール、Gradle/SPM配線、依存関係、権限、マニフェストをブートストラップします。2回呼び出しフロー:配置なしの最初の呼び出しでは、ExtentosConnectionPageの配置場所を尋ねる質問が返されます。選択した配置での2回目の呼び出しで、完全なファイルセットが返されます。 |
| getConnectionPageConfig / setConnectionPageConfig | ダッシュボード/サーバーが保持するプロジェクトごとの接続ページ設定(テーマトークンとセクションの可視性)の読み取り/書き込み。 |
| regenerateConnectionPageFile / adoptConnectionPageFile | コミットされたextentos.connection-page.jsonをサーバー設定と同期します — regenerate(サーバー→ファイル)またはadopt(ファイル→サーバー)。 |
スキャフォールディング後、エージェントはgetCapabilityGuide / getCodeExampleによって公開されるSDKプリミティブに対して独自のハンドラークラスを記述します。ハンドラーコードは顧客のオーサリングサーフェスであり、initSpecやDSL入力ステップはありません。
3. エージェント設定と使用状況(3ツール)
アカウントスコープ — リンクされたアカウントが必要であり、MCPアクセス許可(デフォルトは読み取り+書き込み)によってプロジェクトごとに制御されます。
| ツール | 機能 |
|---|---|
| getAssistantConfig / setAssistantConfig | プロジェクトのダッシュボード管理アシスタント設定(OpenAI Realtimeモデル、音声、メモリ(圧縮)モデル、セッション内メモリモード)の読み取りまたは変更。setは部分更新であり、各値をカタログに対して検証し、モデル変更のコスト影響をエコーします。 |
| getGatewayUsage | プロジェクトの管理ゲートウェイ使用状況と最近の期間の正確なコスト(トークン数と請求元帳からの定価USD、モデル別に分類)を読み取ります。メタデータのみで、トランスクリプトやコンテンツは含まれません。 |
4. 認証情報(2ツール)
アカウントスコープ + プロジェクトごとに制御。知らずに書き込む — シークレットがエージェントを通過することはありません。
| ツール | 機能 |
|---|---|
| getCredentialStatus | プロジェクトのOpenAI APIキー(BYOK)とMeta DATビルドIDが設定されているかどうか(マスクされたヒントと更新日時のみ、値は含まれない)を読み取ります。 |
| setCredential | 認証情報の「知らずに書き込む」入力を開始します — サインインした所有者がシークレットを暗号化されたボールトに直接貼り付けるダッシュボードリンクを返します。設計上、シークレット引数は取りません。 |
5. 分析(1ツール)
| ツール | 機能 |
|---|---|
| getProjectAnalytics | プロジェクトの本番分析(出荷されたApp Store / Play Storeインストールからの集計テレメトリ:イベント、アクティブインストール、イベント/日/ベンダー/プラットフォーム別)を読み取ります。メタデータのみ、アカウントスコープ、所有権チェック済み、分析許可によって制御。アプリが出荷され、本番証明イベントを送信するまでは空です(ライブ開発/シミュレーターストリームにはgetEventLogを使用)。 |
6. 実装ガイダンス(2ツール)
エージェントが構成中に呼び出すサイドクエストツール。
| ツール | 機能 |
|---|---|
| getVoiceCommandGuidance | glasses.audio.transcriptions()コンシューマーに配線する前に、提案されたウェイク/コマンドフレーズのUX問題(衝突、あいまいさ、認識困難な単語、Metaウェイクワードの競合)を分析します。 |
| getPermissions | 機能リストから正確なプラットフォーム権限、Meta DAT要件、フォアグラウンドサービス要件を導出します。ハンドラーにプリミティブを追加または削除するときに実行します。 |
7. 検証(2ツール)
正確性のゲート。構造変更(新しい機能の宣言、依存関係のバンプ、マニフェストの編集)後に実行します。
| ツール | 機能 |
|---|---|
| inspectIntegration | 読み取り専用のプロジェクトスナップショット — マニフェスト、生成ファイルのハッシュ、依存関係リスト、接続ページ設定。現在の状態を理解するために手動編集の前に実行します。 |
| validateIntegration | プロジェクト全体の正当性チェック — マニフェスト、生成ファイル、依存関係の宣言、宣言された機能をカバーする権限、ブートストラップが ExtentosGlasses.create(...) を呼び出すこと、ツールチェーンバージョン、連続キャプチャフローのためのフォアグラウンドサービスヒント。テスト前のゲート。 |
8. シミュレーション
ブラウザベースのシミュレーターセッションのプロビジョニングと操作、および人間なしでエンドツーエンドのループを閉じるエージェント駆動型テストツール。
| ツール | 機能 |
|---|---|
| createSimulatorSession | extentos.com/s でブラウザモードセッションを取得または作成します。存在する場合はこのプロジェクト用に保存された sim を返し (ステータス: "resumed")、なければ新しいものを作成します (ステータス: "active")。到達可能な場合はローカルブリッジ経由で実行中のアプリを自動接続し、そうでない場合は BuildConfig.EXTENTOS_SESSION_URL スニペット (Android) または extentos.session.plist ペイロード (iOS) を出力します。resetFresh: true を渡して sessionId をローテーションし、クリーンな状態にします。 |
| ensureSimulatorBrowser | 接続されたシミュレーターブラウザタブを開いて確認します — カメラおよびインジェクトフローの前提条件です。 |
| completeAuthLink | createSimulatorSession が status: "auth_required" を返した後 (匿名インストールでセッションを発行するためにリンクが必要)、ユーザーがサインアップを完了するまでバックエンドをポーリングし、ベアラートークンを ~/.extentos/auth.json に永続化します。 |
| getEventLog | セッションから構造化されたイベントトレースを取得します。フィルター値: all (フィルターなし) および7つのチップ errors, voice, camera, display, ai, lifecycle, custom — イベントごとに1つのチップ。errors はモダリティに関係なく重大度≥warn を吸収します。さらにトレースレベルのスコープのための cursor, follow, limit。主要なデバッグツール。 |
| getSimulatorStatus | ライブセッションの現在の状態を読み取ります — フェーズ、ハードウェア準備完了、接続されたロール、アクティブな機能ストリーム、現在のトグル値。 |
| injectTranscript / injectAssistantUtterance / assertToolCalled | ウェイクフレーズまたはアシスタントターンを駆動し、モデルが呼び出したツールをアサートします — エージェント駆動型のE2Eループ、人間は不要です。 |
| setSimVideo / setSimDevice | テストビデオをシミュレートされたカメラにパイプします。シミュレートされたデバイスモデルを切り替えます (例: rayban_display でディスプレイパスを実行)。 |
| getDisplayState / injectInput | 現在レンダリングされているディスプレイツリーを読み取り + ディスプレイ入力を駆動します (選択 / ナビゲート / 戻る)。 |
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 をお読みください。conversation_runtime は非推奨の Phase-3 ランタイムです (移行リファレンスのみ)。その他の関連トピック: voice_integration, agent_e2e_testing, managed_gateway, conversation_memory, display、および安定した概念セット — getting_started, custom_handlers (標準的なSDK構成ドキュメント), simulator_browser_mode, 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 | 未設定 (同意デフォルト) | CLI同意コマンドを実行せずにテレメトリを拒否するには 0 に設定します。 |
| EXTENTOS_NO_AUTO_OPEN | 未設定 | シミュレーターセッション作成時のブラウザ自動起動を無効にするには 1 に設定します (ヘッドレス環境で便利)。 |
完全な設定リファレンス: /docs/mcp-server/configuration。
CLIサブコマンド
引数なしで npx @extentos/mcp-server@latest を実行すると、stdio経由でMCPサーバーが起動します (エージェントが使用するパス)。サブコマンドを付けると、開発者向けCLIとして機能します:
| サブコマンド | 機能 |
|---|---|
| login | デバイスコードフローを介して、このインストールをExtentosアカウントにリンクします(プロアクティブ — 最初のシミュレーターセッション前、または再リンクのためのログアウト後に役立ちます)。 |
| logout | ~/.extentos/auth.json をクリアします。インストールは匿名ティアに戻り、次のシミュレーターセッション呼び出しでデバイスコードフローが再トリガーされます。 |
| whoami | 未実装(フェーズ0スタブ)。installId、accountId(リンクされている場合)、ティア、認証有効期限を表示する予定です。 |
| setup | ローカルビルド環境の事前チェック — 推移的なMeta DATアーティファクトが必要とするGitHub Packages PAT(read:packages)、およびその他の依存関係の前提条件を確認します。 |
| 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、およびブラウザシミュレーターは無料です — 構築して出荷するためのシート単位またはサブスクリプション料金はありません。使用量を測定する唯一の面は、フェーズ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ベイクパスを使用します。
ステータス
- パッケージ: npm上の
@extentos/mcp-server(MITライセンス) - エンジン: Node.js 20+
- プレ1.0 — ハードウェアテストループが閉じるまで、APIはマイナーバージョン間で変更される可能性があります。セッション間の再現性が必要な場合は、正確なバージョンに固定してください。
関連
- AIエージェントによるクイックスタート — サーバーをインストールし、実際の開発ループを体験します
- ツールリファレンス — ツールごとの完全なAPI
- 設定 — 環境変数、設定ファイル、インストール時の設定
- 認証 — デバイスコードフロー、アカウントリンク、CLI認証コマンド
- サポートされているエージェント — ホストごとのインストール手順
- アーキテクチャ — MCPサーバーがより広範なExtentosシステムにどのように適合するか
- トランスポートとアプリシミュレーション — MCPが仲介するシミュレーターが実際に行うこと
関連
AIエージェントによるクイックスタート
Extentos MCPサーバーをインストールし、AIエージェントにMeta Ray-Banスマートグラスの機能をネイティブiOSまたはAndroidアプリにスキャフォールドさせます。無料で開始できます。
アーキテクチャ
Extentosの構成要素 — AIエージェント、MCPサーバー、ネイティブKotlin/Swift SDK、3つのトランスポート(Meta DAT、ブラウザシミュレーター、ローカルインメモリシミュレーター)、およびバックエンド。
トランスポートとアプリシミュレーション
MetaのMock Device Kitはトランスポート層をシミュレートします。Extentosはアプリ層(音声、写真撮影、装着体験)をシミュレートします。どちらも重要です。
MCPサーバーのインストール
Extentos MCPサーバー(@extentos/mcp-server)を、Claude Code、Cursor、Windsurf、ClineなどのMCP互換AIコーディングエージェントにインストールする方法。ホストごとのインストールコマンド、設定ファイルの場所、コピー&ペースト可能なJSONスニペット、再起動と確認の手順、バージョン固定、更新、一般的なエラーのトラブルシューティング、アンインストール手順。サポートされている各ホストの確認済みインストールパス。
ツールリファレンス
Extentos MCPサーバーは、決定論的なカテゴリ(検出 + SDKリファレンス、生成、ガイダンス、検証、シミュレーション、本番、エージェント設定、検索)にわたる、厳選された決定論的ツールセットを公開します。入力パラメーター、レスポンス形状、各ツールを呼び出すタイミング、および実例をカバーするツールごとのリファレンス。@extentos/mcp-serverの実際のツール定義とハンドラー実装から検証されています。
設定
@extentos/mcp-serverの設定 — 環境変数、~/.extentos状態ファイル(インストールID、認証、同意)、およびデフォルトベンダー。
認証
Extentos認証の仕組み。ほとんどすべてがアカウントなしで実行されます。ブラウザシミュレーターのみがサインインを必要とし、OAuth 2.0デバイスコードフローを介して行われます。支払いは不要です。
サポートされているエージェント
Extentosを実行するAIコーディングエージェントのホストごとの違い — Claude Code、Cursor、Windsurf、Cline、IDE組み込み。スコープ、クロスプラットフォーム対応、MCPサポート。
Appleスマートグラス
サードパーティ開発者向けAppleスマートグラス — SDKアクセス、アプリモデル、配布、機能とAI、および2026年のスマートグラス環境における位置付け。
MCPサーバーのインストール