---
title: "Client Setup | Minds"
canonical_url: "https://getminds.ai/mcp/setup"
last_updated: "2026-05-19T11:19:55.498Z"
meta:
  description: "Set up Minds MCP with ChatGPT, Claude Desktop, Cursor, and other clients."
  "og:description": "Set up Minds MCP with ChatGPT, Claude Desktop, Cursor, and other clients."
  "og:title": "Client Setup | Minds"
  "twitter:description": "Set up Minds MCP with ChatGPT, Claude Desktop, Cursor, and other clients."
  "twitter:title": "Client Setup | Minds"
---

Minds Team

# **Client Setup**

Set up Minds MCP with ChatGPT, Claude Desktop, Cursor, and other clients.

# Client Setup

## ChatGPT

1. Go to **ChatGPT** → **Settings** → **Connected Apps**
2. Search for "Minds" or add the MCP URL: `https://getminds.ai/mcp`
3. Click **Connect** and authorize via OAuth (log in to your Minds account)
4. Start chatting — ask ChatGPT to create Minds, run panels, and analyze results

ChatGPT renders interactive widgets inline — panel results with grouped responses, bar charts, and clickable Mind avatars appear directly in the chat.

## Claude Desktop

### Option A: Remote Connector (recommended — enables interactive widgets)

1. Open Claude Desktop → **Customize** → **Connectors** (or **Settings** → **Connections**)
2. Add `https://getminds.ai/mcp` as a new remote connector
3. Authorize via OAuth when prompted — log in to your Minds account
4. Tools appear automatically after authorization

### Option B: Local Connector (API key, text-only)

Add to your config file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```
{
  "mcpServers": {
    "mindsai": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://getminds.ai/mcp",
        "--header",
        "Authorization: Bearer minds_YOUR_API_KEY"
      ]
    }
  }
}
```

Restart Claude Desktop. Tools work immediately but interactive widgets are not available with local connectors.

### Widget Support in Claude

All 12 tools work in Claude Desktop and claude.ai, returning text responses with clickable links to open results in the Minds webapp. Interactive widgets (bar charts, persona cycling) are not yet supported due to a known Claude platform limitation: Claude's MCP Apps sandbox currently enforces a hardcoded Content Security Policy that blocks all external API connections from widget iframes, regardless of the CSP domains declared by the server. This is tracked in [anthropics/claude-ai-mcp#40](https://github.com/anthropics/claude-ai-mcp/issues/40). Widgets will work automatically once Anthropic resolves this.

## Claude Code (CLI)

```
claude mcp add --transport http mindsai https://getminds.ai/mcp \
  --header "Authorization: Bearer minds_YOUR_API_KEY"
```

## Cursor

1. Open Cursor Settings → **MCP**
2. Add a new server with URL: `https://getminds.ai/mcp`
3. Authorize access when prompted

## VS Code (GitHub Copilot)

1. Open VS Code Settings → **Extensions** → **GitHub Copilot** → **MCP Servers**
2. Add `https://getminds.ai/mcp` as a new server
3. Authorize when prompted

## OpenRouter, Open WebUI, and OpenAI-compatible Gateways

For any host where the **model provider** (not the host) executes MCP calls server-side — e.g. an `openai/*` model accessed via OpenRouter, OpenAI's Responses API directly, or Open WebUI in _Native function-calling_ mode — you **must use API key authentication**. OAuth is not supported on this path.

### Why OAuth doesn't work here

When Open WebUI runs an `openai/gpt-5.2` agent in Native mode, it ships the MCP tool descriptor to OpenAI/OpenRouter as part of the request. OpenAI's server-side MCP runner (running on Azure, identifiable by `User-Agent: python-httpx/*`) then calls our `/mcp` endpoint directly. That runner only attaches **static** headers configured at tool-registration time — it does not perform the MCP OAuth handshake (RFC 9728 / 8414 / 7591). Open WebUI's _OAuth — forwards system user's access token_ mode is therefore a no-op: the user's token never leaves Open WebUI.

Result: Minds receives the request with no `Authorization` header and returns:

```
401 Unauthorized
www-authenticate: Bearer resource_metadata="https://getminds.ai/.well-known/oauth-protected-resource"
{"error":{"code":-32001,"message":"Authentication required. Connect your Minds account via OAuth or provide an API key."}}
```

### Open WebUI setup

1. Generate an API key at [Settings → API Keys](https://getminds.ai/settings/api-keys) (format `minds_…`).
2. In Open WebUI: **Admin → Settings → Tools → + Connection**.
3. Set:
   - **Type**: `Streamable HTTP (MCP)`
   - **URL**: `https://getminds.ai/mcp`
   - **Authentication**: `Bearer` _(not OAuth)_
   - **Token**: your `minds_…` key
4. Save the connection.
5. In your agent's _Werkzeuge / Tools_ tab, attach the **Get Minds** tool.
6. Test by asking the agent to list your Minds.

If you keep `Authentication: OAuth`, calls will succeed only when Open WebUI itself executes the tool (i.e. _Function calling = Default_, not _Native_) **and** the upstream model can be re-prompted with the tool result. Most users want Native mode — so use a Bearer key.

### OpenRouter direct (programmatic)

When calling OpenRouter's chat completions API and attaching the Minds MCP server, pass the API key in the static `headers` field of the tool descriptor:

```
{
  "type": "mcp",
  "server_label": "minds",
  "server_url": "https://getminds.ai/mcp",
  "headers": {
    "Authorization": "Bearer minds_YOUR_API_KEY"
  }
}
```

Same applies to OpenAI's Responses API directly:

```
from openai import OpenAI
client = OpenAI()
client.responses.create(
    model="gpt-5.2",
    input="List my Minds",
    tools=[{
        "type": "mcp",
        "server_label": "minds",
        "server_url": "https://getminds.ai/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['MINDS_API_KEY']}"},
    }],
)
```

## API Key Authentication

For programmatic access or clients that don't support OAuth:

1. Go to [Settings → API Keys](https://getminds.ai/settings/api-keys) in Minds
2. Create a new API key (starts with `minds_`)
3. Pass it as a Bearer token: `Authorization: Bearer minds_your_key_here`

## OAuth Discovery

For developers building MCP integrations, OAuth metadata is available at:

| Endpoint | Description |
| --- | --- |
| `/.well-known/oauth-protected-resource` | Protected resource metadata (RFC 9728) |
| `/.well-known/oauth-authorization-server` | Authorization server metadata (RFC 8414) |
| `/oauth/register` | Dynamic Client Registration (RFC 7591) |

OAuth 2.1 with PKCE (S256) is required. Public clients (`token_endpoint_auth_method: "none"`) are supported.

## Troubleshooting

### "Authentication required" error

Make sure you've completed the OAuth authorization flow. Disconnect and reconnect your MCP client to re-authorize.

If you're calling Minds via **OpenRouter, Open WebUI in Native mode, or OpenAI's Responses API directly**, OAuth is not supported on that path — the model provider's server-side MCP runner cannot perform the OAuth handshake. Switch your MCP connection to **Bearer / API key authentication** with a `minds_…` key. See [OpenRouter, Open WebUI, and OpenAI-compatible Gateways](#openrouter-open-webui-and-openai-compatible-gateways) above.

### Claude Desktop OAuth not completing

If the OAuth popup opens but never completes, try using the API key approach (Option B above). Claude Desktop's remote connector OAuth can be intermittent.

### Mind not found

When using `sparkName`, ensure the name closely matches your Mind. The system uses fuzzy matching but requires a reasonable similarity score.

### Mind still training

New Minds may take a moment to complete training. Use `get_mind_status` to check if training is complete before chatting.

### Panel question timeout

Panel questions with many groups may take over 2 minutes. Try reducing the number of groups or simplifying the question.

### PDF export not ready

PDF reports are generated asynchronously. Use `get_panel_status` to check the export status. Generation typically takes 30-60 seconds.