Skip to main content

What This Enables

Hosted MCP lets an AI client connect to Lamina without asking you to paste an API key into tool arguments. The client discovers Lamina’s OAuth metadata, sends you to Lamina to approve access for a workspace, receives an access token, and then calls the remote MCP endpoint with Authorization: Bearer <token>. Remote MCP endpoint:
Hosted install surface:
Use the install page when you want copyable endpoint values, OAuth metadata links, and setup patterns for remote OAuth-capable MCP clients or local stdio fallback clients. Prefer the hosted endpoint whenever the client supports remote Streamable HTTP MCP with OAuth. Use the local stdio fallback when a client only supports local servers or cannot complete OAuth.

Supported Clients

The list of popular AI tools that can connect to Lamina MCP: Additional clients can use the same hosted endpoint if they support remote Streamable HTTP MCP with OAuth, or the local stdio fallback if they only support local MCP servers.

Quick Compatibility Matrix

Setup

Connect your AI client to Lamina MCP and authorize access to your workspace.

Install with add-mcp

Install Lamina MCP for supported coding agents with the community add-mcp installer:
Add -y to skip confirmation prompts. Add -g to install globally across projects:
If add-mcp does not detect your client or cannot complete OAuth, use the manual client-specific instructions below.

ChatGPT

ChatGPT custom MCP connectors are remote-only. They are controlled by ChatGPT plan and workspace settings, and full MCP write actions may require developer mode or workspace admin approval.
  1. In ChatGPT, open Settings.
  2. Open Apps or Connectors, then enable Developer mode if your plan/workspace requires it.
  3. Create a custom app/connector for a remote MCP server.
  4. Use this server URL:
  1. Complete Lamina OAuth, choose the workspace, and test with lamina_discover.
If ChatGPT reports that the connector is unsupported, verify that the workspace supports full MCP connectors and write tools. Some ChatGPT connector surfaces are read/fetch-oriented and may not expose Lamina’s creative write tools.

Codex CLI

Add Lamina as a remote MCP server:
Codex shares MCP configuration between the CLI and IDE extension. If your Codex build prompts for browser authentication, complete Lamina OAuth and choose the workspace. You can also configure the hosted server directly in ~/.codex/config.toml:

VS Code with Copilot

Create .vscode/mcp.json for a workspace install:
Then restart the MCP server from the MCP server list or reload VS Code. When prompted, trust the server and complete OAuth. In Copilot Chat Agent mode, use the tools picker to enable Lamina tools. For a local fallback, use stdio with an input variable:

Devin

Devin supports custom MCP servers through the MCP Marketplace.
  1. Open Devin Settings > MCP Marketplace.
  2. Select Add Your Own.
  3. Choose HTTP as the transport.
  4. Set the server URL:
  1. Save the server, then complete Lamina OAuth when Devin prompts for authorization.
If Devin asks for headers, leave them empty for the hosted OAuth flow. Lamina issues workspace-scoped tokens after OAuth consent.

Raycast

Raycast supports installing MCP servers from its MCP server management commands.
  1. Open Raycast and run the MCP Install Server command.
  2. Enter these details:
  1. Click Install and authenticate with Lamina if prompted.
If your Raycast build only supports local stdio MCP servers, use:

Claude Code

Add the hosted HTTP server:
Inside Claude Code, run:
Choose Lamina and authenticate in the browser. Verify the install:
For local stdio fallback:

Claude.ai and Claude Desktop

Claude Desktop primarily uses local MCP servers and Desktop Extensions. Until Lamina ships a DXT package, configure the local stdio package in claude_desktop_config.json:
Restart Claude Desktop after saving the file. If your Claude client exposes a remote MCP connector surface, use the hosted endpoint instead:

Cursor

Create a project config at .cursor/mcp.json or a global config at ~/.cursor/mcp.json:
In Cursor, open MCP settings, refresh servers, and authenticate if prompted. For Cursor CLI:
For local stdio fallback:

Windsurf

In Windsurf, open Settings > Tools > Windsurf Settings > Add Server, or edit the raw ~/.codeium/windsurf/mcp_config.json file:
Use url instead of serverUrl if your Windsurf build expects that key. Press refresh in Cascade after adding the server, then authenticate if prompted. Local fallback:

Continue

Continue MCP servers run in agent mode. Create .continue/mcpServers/lamina.yaml:
Use this hosted config only if your Continue build supports OAuth for remote MCP. Otherwise, use the local stdio fallback:
Restart Continue and switch to agent mode before testing.

Cline

For hosted HTTP MCP:
If your Cline build cannot complete remote OAuth, edit ~/.cline/data/settings/cline_mcp_settings.json for local stdio:

Zed

In Zed, open settings and add a custom context server:
Recent Zed builds show an authentication action when a remote MCP server requires OAuth. If your build does not, use the local stdio fallback:
Open the Agent Panel settings and verify the Lamina server status indicator is active.

Goose

In Goose Desktop, open Extensions, choose Add custom extension, and add a Remote Extension (Streamable HTTP):
In Goose CLI:
Choose Add Extension, then Remote Extension (Streamable HTTP), and enter the Lamina endpoint. If your Goose build cannot complete OAuth for remote MCP, add a command-line extension instead:

Gemini Code Assist

Gemini Code Assist shares MCP configuration with Gemini’s MCP settings. Use native HTTP support when your IDE build supports OAuth-capable remote MCP servers:
If your build does not complete OAuth for remote HTTP MCP, use mcp-remote:
Restart the IDE after updating ~/.gemini/settings.json, then authenticate when prompted.

Gemini CLI

For hosted HTTP MCP:
You can also configure ~/.gemini/settings.json:
If your Gemini CLI build cannot complete OAuth for remote HTTP MCP, use local stdio:
Avoid underscores in Gemini MCP server aliases because Gemini’s policy engine parses tool names with underscores.

OAuth Discovery

Lamina exposes standard MCP OAuth metadata for HTTP clients:
The protected-resource response identifies the MCP resource:

Install Flow

1

Register the MCP client

Clients that support dynamic registration call POST /mcp/oauth/register with client_name and redirect_uris. Public clients use token_endpoint_auth_method: "none".
2

Start authorization

The client opens /mcp/oauth/authorize with response_type=code, client_id, redirect_uri, scope, state, resource, code_challenge, and code_challenge_method=S256.
3

Approve workspace access

Lamina shows a protected consent page. Choose the workspace the agent should use, then approve the requested scopes.
4

Exchange the code

The client posts to /mcp/oauth/token with grant_type=authorization_code, the authorization code, the same redirect_uri, client_id, resource, and the PKCE code_verifier.
5

Call MCP

The client calls /mcp/agent with Authorization: Bearer <access_token>.
6

Revoke access when removed

The client posts to /mcp/oauth/revoke with client_id, token, and optional token_type_hint when the user disconnects Lamina.

Scopes

  • lamina:creative:read allows discovery and run status.
  • lamina:creative:write allows creating and batching creative runs.
  • lamina:brand:read allows reading brand memory and guidance.
If a token lacks a required scope, Lamina returns an insufficient-scope challenge so the client can request step-up authorization.

Revoke Access

OAuth clients should revoke tokens when a user removes Lamina or rotates client state:
Revoking either an access token or refresh token revokes the token pair stored for that grant. A later call to /mcp/agent with that bearer token returns invalid_token.

First Creative Run

After install, the agent runs through discover → describe → run → poll. Find an app for the user’s goal:
Read the chosen app’s parameter contract:
Dispatch the run with the required inputs (keyed by parameter key from lamina_describe):
lamina_run returns immediately with { runId, workflowId, status }. Poll for completion:
lamina_run is a pure trigger — you pass an appId you already have. If you’d rather hand Lamina a free-text brief and let it pick the app for you, call lamina_create instead; it returns a plan (with the selected app), which you then dispatch with lamina_run.

Stdio-only Clients

If your MCP client can only launch a local stdio command and cannot connect to a remote OAuth MCP server directly, bridge to the hosted server with mcp-remote — it runs locally and handles the OAuth flow to Lamina’s hosted endpoint:
No API key to paste — mcp-remote opens the OAuth approval in your browser and forwards the hosted tools over stdio.
The old self-hosted @uselamina/mcp npm package is retired. Always connect to the hosted MCP (https://app.uselamina.ai/mcp/agent), directly for OAuth-capable clients or via mcp-remote for stdio-only ones.