Connecting Your AI Tool

Chat Assistants - Claude and ChatGPT

Labs MCP is a standard remote MCP server (Streamable HTTP) - if your AI tool speaks MCP, it can connect. In every client, all you need is the connector URL:

https://labs.iximiuz.com/mcp

Labs MCP has been tested with:

  • ChatGPT (web & desktop)
  • Claude (web & desktop)
  • Claude Code, Codex, and OpenCode (CLI)

It also works with Gemini, Copilot, Cursor, Warp, Zed, and other MCP-capable clients. This unit covers the two most popular chat assistants; for Claude Code, Codex, Cursor, and friends, see the next unit.

Claude

Works on claude.ai, the desktop apps, and mobile.

  1. Open Settings → Connectors.
  2. Click Add custom connector.
  3. Paste the connector URL (https://labs.iximiuz.com/mcp) and confirm.
  4. Approve access on the iximiuz Labs consent screen.

ChatGPT

Works on chatgpt.com, the desktop apps, and mobile.

  1. Enable developer mode: Settings → Security and login → Developer mode → Toggle Enabled.
  2. Navigate to Plugins in the sidebar and click the Plus button in the top right corner.
  3. Enter the name (e.g., ixlabs) and paste the connector URL (https://labs.iximiuz.com/mcp) as the MCP server URL and save.
  4. Sign in to iximiuz Labs when prompted and approve access.

What happens on the first use

Searching and reading the public Labs catalog works right away, even without signing in. The first time your assistant tries a protected action (starting a playground, running a command, etc.), you'll be taken to a consent screen listing exactly which permissions are requested - and you decide which ones to grant. See Scopes and Tools for the details.

Chat mode vs. work mode

Both assistants offer a plain chat mode and an agentic work/cowork mode (ChatGPT agent mode, Claude Cowork), and Labs MCP works in either. Which one to pick depends on the task:

  • Chat mode is enough for the personalized tutor scenarios: searching the catalog, assembling a learning path, getting a hint for a running challenge. It works on the web, in the desktop apps, and on your phone.
  • Work/cowork mode is what you want for building playgrounds and running workloads: these are long, multi-step tasks (often 5-30 minutes with debugging along the way), and a single chat context fills up quickly once large Kubernetes and playground manifests get into it.

CLI coding agents (Claude Code, Codex, OpenCode, ...) are agentic by nature and handle all of the above.

Coding Agents and IDEs

All coding agents and IDEs point at the same connector URL - https://labs.iximiuz.com/mcp - they differ only in where the configuration goes. Below are the snippets for the most popular ones (using ixlabs as the server name, but you can pick any).

Tip

Running the agent inside a remote VM, a container, or CI? The OAuth flow may not be able to complete there - see the next unit for the access-token alternative.

Claude Code
Codex
OpenCode
Copilot
Cursor
Gemini
Antigravity
Devin
Warp
Zed
claude mcp add --transport http ixlabs https://labs.iximiuz.com/mcp

Then run /mcp inside Claude Code and choose Authenticate.

codex mcp add ixlabs --url https://labs.iximiuz.com/mcp
opencode mcp add ixlabs --url https://labs.iximiuz.com/mcp
Important

Known issue: OpenCode's OAuth support doesn't work with Labs MCP yet. opencode mcp auth reports "Authentication successful!" without ever opening a browser, and protected tool calls then fail with an authorization error. The cause is on the OpenCode side: it starts the OAuth flow only if the very first initialize request is rejected with a 401, but Labs MCP (like any lazy-auth MCP server) accepts it anonymously, and OpenCode never looks at the protected-resource metadata the server advertises. Until this is fixed upstream, use an access token instead.

GitHub Copilot in VS Code - add to settings.json:

{
  "mcp": {
    "servers": {
      "ixlabs": {
        "type": "http",
        "url": "https://labs.iximiuz.com/mcp"
      }
    }
  }
}

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "ixlabs": {
      "url": "https://labs.iximiuz.com/mcp"
    }
  }
}

Gemini CLI - add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "ixlabs": {
      "httpUrl": "https://labs.iximiuz.com/mcp"
    }
  }
}

Add to mcp_config.json:

{
  "mcpServers": {
    "ixlabs": {
      "serverUrl": "https://labs.iximiuz.com/mcp"
    }
  }
}

Add to the MCP configuration:

{
  "mcpServers": {
    "ixlabs": {
      "transport": "HTTP",
      "url": "https://labs.iximiuz.com/mcp"
    }
  }
}

Add to the MCP configuration:

{
  "ixlabs": {
    "serverUrl": "https://labs.iximiuz.com/mcp"
  }
}

Add to settings.json:

{
  "context_servers": {
    "ixlabs": {
      "url": "https://labs.iximiuz.com/mcp"
    }
  }
}

On the first protected tool call, the agent will send you through the OAuth flow - a browser page opens with the iximiuz Labs consent screen, where you approve (or narrow) the requested permissions. You can revoke the access at any time under Account → Connected apps.

Tip

Running an agent with broad autonomy? Consider granting only the playground:* scopes - the agent gets its VMs but cannot touch your learning progress, account settings, or author profile. More on this in Scopes and Tools.

Access Tokens

OAuth is the default (and recommended) way to authorize an AI tool, but it doesn't work everywhere. Many coding agents complete the flow by redirecting the browser to http://localhost:<port>/callback, where the agent itself is expected to listen. That breaks when the agent runs on a remote VM or in a container (the browser lands on the "wrong" localhost) and in CI or other headless environments (there may be no browser at all). Some clients also simply don't implement OAuth correctly yet (see the OpenCode note).

For these cases, Labs MCP supports pre-issued access tokens (a.k.a. personal access tokens): you mint a token once and pass it to the client as a plain Authorization: Bearer <token> header. The server treats it exactly like an OAuth-minted token - it's limited to the scopes you chose at creation time and can be revoked at any time.

Getting a token

Go to Account → Connected apps → Create access token, choose a name, the scopes the token should get, and its lifetime, then copy the token - it's shown only once.

Important

Access tokens have no refresh token and expire after the chosen lifetime (1 to 365 days). When a token expires, mint a new one. A single account can hold at most 20 active tokens.

Using a token

Claude Code
Codex
OpenCode
Copilot
Cursor
Gemini
claude mcp add --transport http ixlabs https://labs.iximiuz.com/mcp \
  --header "Authorization: Bearer <token>"
export IXLABS_TOKEN=<token>
codex mcp add ixlabs --url https://labs.iximiuz.com/mcp --bearer-token-env-var IXLABS_TOKEN

Codex stores the variable name, not the token - export IXLABS_TOKEN wherever Codex runs.

Add to opencode.json:

{
  "mcp": {
    "ixlabs": {
      "type": "remote",
      "url": "https://labs.iximiuz.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

GitHub Copilot in VS Code - add to settings.json:

{
  "mcp": {
    "servers": {
      "ixlabs": {
        "type": "http",
        "url": "https://labs.iximiuz.com/mcp",
        "headers": {
          "Authorization": "Bearer <token>"
        }
      }
    }
  }
}

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "ixlabs": {
      "url": "https://labs.iximiuz.com/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

Gemini CLI - add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "ixlabs": {
      "httpUrl": "https://labs.iximiuz.com/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

For other clients, add an Authorization: Bearer <token> header to the server configuration - check your client's docs for the exact key.

Caution

A token is a secret: anyone who has it can act on your behalf within its scopes. Prefer narrow scopes (e.g., only playground:* for an autonomous agent) and short lifetimes, and revoke tokens you no longer need under Account → Connected apps.