---
url: https://simpledatalogs.com/docs/mcp/clients.md
description: >-
  Step-by-step setup of the simpledatalogs MCP server in Claude, ChatGPT, Grok,
  Claude Code, Cursor, any mcp.json client and the xAI API.
---

# Connecting clients

Every client uses the same URL:

```text
https://simpledatalogs.com/mcp
```

Chat apps sign in with **OAuth**: you paste the URL and approve. Coding tools and APIs send a **personal token** in a header. See [the overview](/mcp/#two-ways-to-sign-in) for the difference.

::: info Menu names change
Chat apps rename their settings pages from time to time. If a step below doesn't match what you see, look for "connectors", "apps" or "MCP" in the app's settings, or its help pages.
:::

## Chat apps (OAuth)

### Claude

Works in Claude on the web, the desktop app and mobile. Connectors you add on the web or desktop also appear on your phone.

1. Open **Settings → Connectors** and choose **Add custom connector**.
2. Name it `simpledatalogs` and paste `https://simpledatalogs.com/mcp` as the URL. Leave the advanced OAuth fields empty.
3. Choose **Add**, then **Connect**.
4. On the simpledatalogs page, sign in if asked, pick the organization, and choose **Approve**.

In a chat, turn the connector on from the tools menu and ask away. On Team and Enterprise plans, an owner may need to add the connector for the organization first.

### ChatGPT

Custom connectors live in ChatGPT's developer mode, on the plans that offer it.

1. Open **Settings → Apps & Connectors** and, under **Advanced settings**, turn on **Developer mode**.
2. Choose **Create** (a new connector or app).
3. Name it `simpledatalogs`, paste `https://simpledatalogs.com/mcp` as the URL, and choose **OAuth** as the authentication.
4. Create it, then sign in and choose **Approve** on the simpledatalogs page.

Every tool is marked read-only, so ChatGPT runs them without asking you to confirm each call.

### Grok

1. Go to [grok.com/connectors](https://grok.com/connectors) and add a new **custom** connector.
2. Paste `https://simpledatalogs.com/mcp` as the server URL.
3. Sign in and choose **Approve** in the pop-up. Allow pop-ups from grok.com if your browser blocks it.

## Coding tools (personal token)

First create a token in the dashboard under **Settings → MCP and agents → Manage tokens**. The **Install in your agent** dialog then shows each snippet below with your token filled in. The examples here use `sdl_mcp_…`; replace it with yours.

::: warning Keep tokens out of git
A token reads everything you can read. Put it in an environment variable or your tool's user-level config, never in a file you commit.
:::

### Claude Code

```sh
claude mcp add --transport http simpledatalogs https://simpledatalogs.com/mcp \
  --header "Authorization: Bearer sdl_mcp_…"
```

Add `--scope user` to make it available in every project. Check it with `claude mcp list`, or `/mcp` inside a session.

### Cursor

Add the server to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (one project):

```json
{
  "mcpServers": {
    "simpledatalogs": {
      "url": "https://simpledatalogs.com/mcp",
      "headers": {
        "Authorization": "Bearer sdl_mcp_…"
      }
    }
  }
}
```

### VS Code

Add the server to `.vscode/mcp.json`. VS Code asks for the token once and keeps it out of the file:

```json
{
  "servers": {
    "simpledatalogs": {
      "type": "http",
      "url": "https://simpledatalogs.com/mcp",
      "headers": { "Authorization": "Bearer ${input:sdl-mcp-token}" }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "sdl-mcp-token",
      "description": "simpledatalogs MCP token",
      "password": true
    }
  ]
}
```

### Codex CLI

Add the server to `~/.codex/config.toml`, and put the token in your shell profile:

```toml
[mcp_servers.simpledatalogs]
url = "https://simpledatalogs.com/mcp"
bearer_token_env_var = "SDL_MCP_TOKEN"
```

```sh
export SDL_MCP_TOKEN=sdl_mcp_…
```

### Windsurf

Add the server to `~/.codeium/windsurf/mcp_config.json`:

```json
{
  "mcpServers": {
    "simpledatalogs": {
      "serverUrl": "https://simpledatalogs.com/mcp",
      "headers": { "Authorization": "Bearer sdl_mcp_…" }
    }
  }
}
```

### Any `mcp.json` client

Most clients that take a remote server with headers use the same shape: VS Code, Windsurf, Zed, Cline and others. The key names differ slightly between them (`url` or `serverUrl`, `mcpServers` or `servers`), so check your client's docs:

```json
{
  "mcpServers": {
    "simpledatalogs": {
      "type": "http",
      "url": "https://simpledatalogs.com/mcp",
      "headers": { "Authorization": "Bearer sdl_mcp_…" }
    }
  }
}
```

A client that only speaks stdio can use a bridge such as `mcp-remote`:

```json
{
  "mcpServers": {
    "simpledatalogs": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://simpledatalogs.com/mcp", "--header", "Authorization:Bearer ${SDL_MCP_TOKEN}"],
      "env": { "SDL_MCP_TOKEN": "sdl_mcp_…" }
    }
  }
}
```

### The xAI API

Grok models can call the server through xAI's remote MCP tools. Pass the token in the tool's `headers`:

```sh
curl https://api.x.ai/v1/responses \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4.7",
    "input": "How many signups did production get in the last 7 days?",
    "tools": [{
      "type": "mcp",
      "server_url": "https://simpledatalogs.com/mcp",
      "server_label": "simpledatalogs",
      "headers": { "Authorization": "Bearer sdl_mcp_…" }
    }]
  }'
```

Use whichever Grok model your account has. In xAI's Python SDK, the same header goes in `extra_headers`.

### By hand

The server takes one JSON-RPC message per `POST`. You can try it with curl:

```sh
curl -sS https://simpledatalogs.com/mcp \
  -H "Authorization: Bearer sdl_mcp_…" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_environments","arguments":{}}}'
```

Batches (JSON arrays) are refused, and `GET` and `DELETE` answer `405`: there is no event stream and no session.

## When something goes wrong

| You see | Why | Fix |
|---|---|---|
| `401` | A missing, revoked or mistyped token | Create a new token, or reconnect the app |
| `403 Origin not allowed.` | A browser page on another site called the server | Call it from an agent or a server, not a web page |
| `429 Too many calls; wait a minute.` | Over 60 calls a minute | Wait 60 seconds |
| `400 Unsupported MCP-Protocol-Version` | The client sent a protocol version the server doesn't speak | Update the client |
| `list_environments` is empty | The organization is on Free, which has no MCP | Upgrade to Starter or above |
| A tool answers "No environment with that id" | The id isn't one of yours | Ask the assistant to call `list_environments` first |

## Next steps

* [Tools reference](/mcp/tools): what each tool reads.
* [Prompt recipes](/agents/recipes#read-your-numbers-back): questions that work well.
