https://github.com/emingenc/smart_glass_mcp
smart glasses MCP that any AI can use smart glass which has MCP client
https://github.com/emingenc/smart_glass_mcp
Last synced: 3 months ago
JSON representation
smart glasses MCP that any AI can use smart glass which has MCP client
- Host: GitHub
- URL: https://github.com/emingenc/smart_glass_mcp
- Owner: emingenc
- License: other
- Created: 2026-01-04T07:52:27.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-02-17T04:08:11.000Z (4 months ago)
- Last Synced: 2026-02-17T08:46:00.951Z (4 months ago)
- Language: TypeScript
- Size: 102 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Mentra Glass MCP Server
A Model Context Protocol (MCP) server for controlling MentraOS smart glasses.
Built with **Bun**, **Mentra SDK**, and **MCP SDK**.
## Features
- **MCP Support**: Exposes tools to control glasses (Display, Audio, Input) via JSON-RPC.
- **Multi-User**: Supports multiple users via Bearer token authentication (email).
- **Mentra Integration**: Connects to Mentra Cloud as an AppServer.
- **Docker Ready**: Includes Dockerfile and Compose setup.
## Architecture
```
MCP Client (Claude/Cursor)
⬇️ JSON-RPC (HTTP)
[MCP Server]
⬇️ Mentra SDK
Mentra Cloud
⬇️
Smart Glasses
```
## Prerequisites
- [Bun](https://bun.sh) (v1.0+)
- Mentra Developer Account & API Key
## Authentication
This server uses a secure token-based authentication system.
1. **Start the Server** (Locally or Deployed).
2. **Open the Webview**:
* Local: `http://localhost:3000/webview`
* Deployed: `https://your-app.onrender.com/webview`
3. **Login**: Sign in with your Mentra account.
4. **Get Token**: Copy the **Access Token** displayed on the screen.
## Connecting to Clients
### 1. GitHub Copilot (VS Code)
Add the server to your MCP configuration file (usually `~/.config/github-copilot/mcp.json` or via the VS Code command "MCP: Manage MCP Servers").
```json
{
"mcpServers": {
"mentra-glasses": {
"type": "sse",
"url": "mcp url here",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
}
}
```
*Note: Replace the URL and Token with your actual values.*
### 2. Claude Desktop
Edit your configuration file:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"mentra-glass": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sse-client"],
"env": {
"MCP_SSE_URL": "http://localhost:3000/mcp",
"MCP_SSE_HEADERS": "{\"Authorization\": \"Bearer YOUR_ACCESS_TOKEN\"}"
}
}
}
}
```
### 3. Cursor
1. Go to **Settings** > **Features** > **MCP**.
2. Click **+ Add New MCP Server**.
3. **Name**: `mentra-glass`
4. **Type**: `SSE`
5. **URL**: `https://your-app.onrender.com/mcp?token=YOUR_ACCESS_TOKEN`
*(Note: Cursor may not support custom headers yet, so we support passing the token via query parameter as a fallback)*
## Running Locally
```bash
# Start the server
bun run src/index.ts
# Watch mode
bun run dev
```
The server will start on `http://localhost:3000`.
- `/mcp`: MCP JSON-RPC endpoint
- `/health`: Health check
- `/webview`: Auth & Settings
## Running with Docker
```bash
# Build & Run
docker compose up --build -d
```
## Available Tools
- **Display**: `glasses_display_text`, `glasses_clear_display`
- **Audio**: `glasses_speak`
- **Input**: `glasses_get_transcriptions`, `glasses_get_events`
- **System**: `glasses_status`
## Project Structure
- `src/config`: Environment configuration
- `src/services`: Core logic (Mentra SDK, Session Management)
- `src/tools`: MCP Tool definitions
- `src/index.ts`: Entry point
## Deployment
### Option 1: Render + Supabase (Recommended for Free Tier)
Best for indie devs. Uses Supabase for the database (since Render's free tier wipes local files) and Render for hosting.
1. **Database**: Follow `SUPABASE_SETUP.md` to create your Supabase project and get credentials.
2. **Hosting**:
* Sign up at [render.com](https://render.com).
* Create a new **Web Service**.
* Connect your GitHub repository.
* **Runtime**: Docker.
* **Environment Variables**:
* `SUPABASE_URL`: Your Supabase URL.
* `SUPABASE_SERVICE_KEY`: Your Supabase Service Role Key.
* `MENTRAOS_API_KEY`: Your Mentra API Key.
* `PACKAGE_NAME`: `com.yourname.glassmcp`.
* `PORT`: `3000`.
### Option 2: Fly.io (Best for SQLite)
Allows you to keep using the local SQLite database by attaching a persistent volume.
1. Install `flyctl`.
2. Run `fly launch`.
3. Create a volume: `fly volumes create mcp_data`.
4. Update `fly.toml` to mount the volume to `/app/mcp.sqlite`.
### Option 3: Self-Hosted (VPS)
Run standard Docker Compose on any server (DigitalOcean, Hetzner, Oracle Cloud).
```bash
docker compose up -d
```