Extentos MCP Server

Give your AI coding agent the tools to build smart-glasses apps.
Extentos is an MCP (Model Context Protocol) server that lets agents like Claude Code, Cursor, and Cline add smart-glasses capabilities โ camera capture, voice triggers, live transcription, audio playback โ to any Android or iOS app. The tools are deterministic: discovery, scaffolding, validation, and a browser-based simulator for end-to-end testing without hardware.
Works with Meta smart glasses today (Ray-Ban Meta, Oakley Meta, Meta Ray-Ban Display), with a multi-vendor architecture by design.
This repository is the public home of @extentos/mcp-server โ releases, changelog, and issue tracking. The package ships on npm.
Install
Claude Code
claude mcp add extentos -- npx -y @extentos/mcp-server@latest
Cursor โ one click:

Cline / any MCP client
{
"mcpServers": {
"extentos": {
"command": "npx",
"args": ["-y", "@extentos/mcp-server@latest"]
}
}
}
Requires Node 20+.
What your agent can do with it
| Tool group | What it does |
|---|
| Discovery | getPlatformInfo, getCapabilityGuide, getCodeExample โ the SDK capability catalog, per-feature call shapes in Kotlin + Swift, and canonical end-to-end patterns (voice Q&A, photo-describe, live transcription UI, โฆ) |
| Scaffolding | generateConnectionModule โ generates the connection UI + manifest + platform config for your app (Android or iOS) |
| Guidance | getVoiceCommandGuidance, getPermissions โ implementation guidance the agent queries instead of guessing |
| Validation | inspectIntegration, validateIntegration โ deterministic checks of the integration in your repo |
| Simulation | createSimulatorSession, getEventLog, getSimulatorStatus โ a browser simulator running the same SDK code as production with only the transport swapped; the agent drives it and reads the event log to verify behavior |
| Production | getProductionChecklist, getCredentialGuide โ the path from simulator to real glasses |
| Docs | searchDocs โ bundled, versioned documentation topics |
The workflow an agent typically runs: discover capabilities โ scaffold the connection module โ write handler code against the SDK โ validate โ simulate end-to-end โ production checklist.
- getPlatformInfo โ SDK capability catalog, version/artifact info, and platform constraints
- getCapabilityGuide โ per-feature call shapes in Kotlin + Swift with gotchas
- getCodeExample โ canonical end-to-end patterns (voice Q&A, photo-describe, live transcription UI, โฆ)
- getMigrationGuide โ mapping table and cutover plan from Meta DAT direct usage to Extentos
- generateConnectionModule โ scaffold the connection UI, manifest, and platform config into your app
- getConnectionPageConfig โ read the managed connection-page configuration
- setConnectionPageConfig โ update the managed connection-page configuration
- regenerateConnectionPageFile โ regenerate a managed connection-page file after config changes
- adoptConnectionPageFile โ bring an existing connection-page file under managed configuration
- getAssistantConfig โ read the managed voice-assistant configuration (model, voice, memory, wake sound)
- setAssistantConfig โ update the managed voice-assistant configuration
- listProjectSounds โ list custom sounds uploaded for the project
- addProjectSound โ upload a custom sound (earcons, wake sounds) to the project
- shutter โ trigger a camera shutter in the active simulator session
- getGatewayUsage โ AI-gateway usage and metering for the project
- getCredentialStatus โ which credentials (Meta DAT, AI provider) are configured
- setCredential โ store a credential for the project
- getProjectAnalytics โ usage analytics for the project's glasses integration
- getVoiceCommandGuidance โ implementation guidance for voice triggers and wake phrases
- getPermissions โ the exact permission set the integration needs per platform
- inspectIntegration โ read the current state of the integration in your repo
- validateIntegration โ deterministic checks of the integration (manifest, config, wiring)
- createSimulatorSession โ mint a browser-simulator session for end-to-end testing
- ensureSimulatorBrowser โ open/attach the simulator browser tab for the session
- completeAuthLink โ finish the device-code sign-in flow
- getEventLog โ read the session event log (transport, audio, camera, speak, toggle, stream, system)
- injectTranscript โ inject a voice transcript into the running app, as if the wearer spoke
- injectAssistantUtterance โ drive the voice assistant with an utterance end-to-end (real provider session)
- assertToolCalled โ wait for an assistant tool-call event matching name/args (agent E2E loop)
- getSimulatorStatus โ live session state: phase, roles, open streams, freshness, test videos
- setSimVideo โ pipe a test video into the simulated camera
- setSimDevice โ switch the simulated glasses model
- getDisplayState โ read the rendered display tree and interactive element ids (Ray-Ban Display)
- injectInput โ drive display input: select/navigate/back, like Neural Band gestures
- injectHardwareButton โ simulate the hardware capture button
- getProductionChecklist โ the path from simulator to real glasses
- getCredentialGuide โ how to obtain and configure Meta DAT credentials
- searchDocs โ search the bundled, versioned documentation topics
How it fits together
- Your app depends on the native SDK:
com.extentos:glasses (Android, Maven Central) or the Swift package (iOS)
- Your code subscribes to capability primitives from its own handler classes โ
glasses.audio.transcriptions(), glasses.camera.capturePhoto(), glasses.audio.speak()
- The simulator is the same app on a different substrate: WebSocket transport instead of Bluetooth, so agent-verified behavior carries to hardware
Discovery, validation, and guidance tools work anonymously. Creating browser-simulator sessions and scaffolding require a free account โ the server walks the agent (and you) through a device-code sign-in when needed.
Links
Issues & feedback
Bug reports and feedback are welcome โ open an issue. The package is pre-1.0; tool surfaces may evolve between minor versions.
For security reports, see SECURITY.md โ please don't open public issues for vulnerabilities.
License
MIT