| title | Setup |
|---|---|
| icon | gear |
| description | Connect your AI assistant to the Omi MCP server |
Omi supports four setup paths:
| Method | Authentication | Best for |
|---|---|---|
| Omi's guided connection | OAuth for ChatGPT and Claude; a generated MCP key for local clients | The current Omi macOS app (recommended) |
| Hosted server with OAuth | Browser sign-in and consent; no key to copy | Supported cloud clients |
| Hosted server with an MCP key | Authorization: Bearer omi_mcp_... |
Clients that accept custom headers |
| Local stdio server | An MCP key passed to mcp-server-omi |
Clients that require a local process or a self-hosted backend |
OAuth and MCP keys grant access to the same hosted endpoint. OAuth is the default for the new cloud-connector UI; manual MCP keys remain available as a fallback.
On the Omi home screen, find Use omi memory anywhere, choose a destination, and follow the connection card:
- ChatGPT: choose ChatGPT / Codex, then add Omi from its approved ChatGPT listing. ChatGPT opens Omi's OAuth consent flow; you do not need to create or paste a key.
- Claude: choose Claude / Claude Code, then Claude (cloud). Omi opens Claude's custom-connector flow with the registered public OAuth client.
- Claude Code, Codex, OpenClaw, and Hermes: Omi generates an MCP connection key and offers guided local setup. Expand Manual installation to copy the server URL, key, command, or configuration yourself.
- ChatGPT custom app: expand Developer-mode fallback only if your workspace cannot use the approved directory listing.
OAuth grants can be reviewed or revoked from the connected client. Revoking an MCP key is separate; use the Developer settings described below.
Use the hosted server URL as the remote MCP URL:
https://api.omi.me/v1/mcp/sse
The endpoint supports MCP Streamable HTTP (2025-03-26) and advertises OAuth metadata at:
https://api.omi.me/.well-known/oauth-protected-resource/v1/mcp/sse
https://api.omi.me/.well-known/oauth-authorization-server
OAuth uses browser sign-in, explicit consent, authorization code + PKCE, and refresh tokens. Omi currently provides registered public clients for its ChatGPT and Claude setup flows. A generic MCP client cannot invent a client ID; if it is not one of those supported flows, use an MCP key instead.
The preferred path is **Omi → Use omi memory anywhere → ChatGPT / Codex → ChatGPT (cloud)**. Add Omi from the directory page and approve the OAuth consent screen.For the advanced developer-mode fallback, use:
- **Connection / server URL:** `https://api.omi.me/v1/mcp/sse`
- **Authentication:** OAuth
- **OAuth Client ID:** `omi-chatgpt-prod`
- **OAuth Client Secret:** leave blank
- **Token auth method:** `none`
- **Authorization URL:** `https://api.omi.me/authorize`
- **Token URL:** `https://api.omi.me/token`
- **Name:** Omi Memory
- **Remote MCP server URL:** `https://api.omi.me/v1/mcp/sse`
- **OAuth Client ID:** `omi-claude-prod`
- **OAuth Client Secret:** leave blank
Click **Add**, then **Connect**, and approve Omi's OAuth consent screen. The Omi macOS
app exposes the same flow under **Use omi memory anywhere → Claude / Claude Code →
Claude (cloud)**.
Use a manual key for clients that support a bearer header but cannot use Omi's registered OAuth flows.
In the current macOS UI, open **Use omi memory anywhere**, choose Claude Code, Codex, OpenClaw, or Hermes, and expand **Manual installation**. Omi generates the connection key and shows a masked **Your key** row with a **Copy** button.You can also use the cross-platform Omi app: open **Settings → Developer Settings**,
scroll to **MCP Server**, and create a key in its **API Keys** list. The complete
`omi_mcp_...` value is shown only when it is created, so copy and store it then.
Your key will look like: `omi_mcp_...`
<Note>
MCP keys are distinct from Developer API keys. An `omi_mcp_...` key authenticates the
hosted MCP endpoint and `/v1/mcp/...` REST routes. An `omi_dev_...` key authenticates
`/v1/dev/...` routes and will not authenticate MCP.
</Note>
- **Server URL:** `https://api.omi.me/v1/mcp/sse`
- **Authorization:** `Bearer omi_mcp_...` (your generated key)
- **Transport:** Streamable HTTP (MCP `2025-03-26`)
Claude's cloud connector supports OAuth as described above. For a manual-key fallback, add this to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"omi": {
"url": "https://api.omi.me/v1/mcp/sse",
"headers": {
"Authorization": "Bearer omi_mcp_YOUR_KEY_HERE"
}
}
}
}
```
**Config file location:**
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows PowerShell: `$env:APPDATA\Claude\claude_desktop_config.json`
- Windows cmd: `%APPDATA%\Claude\claude_desktop_config.json`
Claude Code can be configured at user scope instead:
```bash
claude mcp add --scope user --transport http omi-memory \
https://api.omi.me/v1/mcp/sse \
--header "Authorization: Bearer omi_mcp_YOUR_KEY_HERE"
```
- **Name:** Omi
- **Transport:** SSE
- **URL:** `https://api.omi.me/v1/mcp/sse`
- **Headers:** `Authorization: Bearer omi_mcp_YOUR_KEY_HERE`
```toml
[mcp_servers.omi-memory]
command = "npx"
args = ["-y", "mcp-remote", "https://api.omi.me/v1/mcp/sse", "--header", "Authorization: Bearer omi_mcp_YOUR_KEY_HERE"]
```
Restart Codex after saving the file.
```json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"omi": {
"type": "remote",
"url": "https://api.omi.me/v1/mcp/sse",
"enabled": true,
"headers": {
"Authorization": "Bearer {env:OMI_MCP_API_KEY}"
}
}
}
}
```
Store your key in a local `.env` file (or export `OMI_MCP_API_KEY` in your environment):
```bash
OMI_MCP_API_KEY=omi_mcp_YOUR_KEY_HERE
```
<Note>
Be sure to use an MCP key from one of the locations in
[Manual MCP-key fallback](#manual-mcp-key-fallback). It starts with `omi_mcp_`.
Developer API keys (`omi_dev_...`) only authenticate Developer API endpoints and will
return `401 Unauthorized` here.
</Note>
Enter the server URL and API key in Poke's MCP connection settings.
```bash
# Endpoint
POST https://api.omi.me/v1/mcp/sse
# Headers
Authorization: Bearer omi_mcp_YOUR_KEY_HERE
Content-Type: application/json
Accept: text/event-stream # for SSE responses
# Body (JSON-RPC 2.0)
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}
```
Run the MCP server locally over the standard input/output transport. uvx downloads and
runs the published package without a separate installation. Python 3.11.6 or newer is
required.
```json
{
"mcpServers": {
"omi": {
"command": "uvx",
"args": ["mcp-server-omi"],
"env": {
"OMI_API_KEY": "omi_mcp_YOUR_KEY_HERE"
}
}
}
}
```
Install [uv](https://docs.astral.sh/uv/getting-started/installation/) first. The
`OMI_API_KEY` value can also be supplied with each tool call.
```bash
pip install mcp-server-omi
```
Then configure your MCP client to launch the local server:
```json
{
"mcpServers": {
"omi": {
"command": "mcp-server-omi",
"env": {
"OMI_API_KEY": "omi_mcp_YOUR_KEY_HERE"
}
}
}
}
```
If you prefer to run the MCP server locally:
Generate an MCP key using either location in [Manual MCP-key fallback](#manual-mcp-key-fallback). Install Docker. We recommend [OrbStack](https://orbstack.dev/) for macOS. Add to your `claude_desktop_config.json`:```json
{
"mcpServers": {
"omi": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "OMI_API_KEY=omi_mcp_YOUR_KEY_HERE", "omiai/mcp-server"]
}
}
}
```
The same Docker command can be used by any MCP client that supports local stdio servers.
If you prefer to keep the key out of the configuration file, pass it through the
OMI_API_KEY environment variable:
docker run --rm -i \
-e OMI_API_KEY="omi_mcp_YOUR_KEY_HERE" \
omiai/mcp-serverIf you are self-hosting the Omi backend:
export OMI_API_BASE_URL="https://your-backend-url.com"