Sign In Download Free
AI Access

Connecting AI Clients

Exact MCP configuration for Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Gemini CLI and Codex — plus a bridge for anything else.

Three Facts

Sutido speaks plain MCP over Streamable HTTP. Nothing about it is specific to one client, so any MCP client needs exactly three things:

 Value
TransportStreamable HTTP
URLhttp://127.0.0.1:7332/mcp
HeaderAuthorization: Bearer <your-token>

The Connect tab in File → MCP Access shows all three with a copy button, filled in with your real token and port. If your client is not listed below, those three facts are enough.

Everything below is also in that tab as a ready-to-paste block — including the path of the file it goes in, which is usually the part that takes longest to find.

Plan: agent access is part of Pro and Team and of the 14-day trial. On Free the server does not start, so a client configured against it will fail to connect.

Claude Code

One command, in the project you want it available in:

claude mcp add --transport http sutido http://127.0.0.1:7332/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"

Claude Desktop

Settings → Developer → Edit Config, then restart Claude Desktop.

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "sutido": {
      "type": "http",
      "url": "http://127.0.0.1:7332/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Cursor

~/.cursor/mcp.json for every project, or .cursor/mcp.json to share it with a repository.

{
  "mcpServers": {
    "sutido": {
      "url": "http://127.0.0.1:7332/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

VS Code

Two things differ here, and both look like typos when you hit them. The top-level key is servers, not mcpServers — VS Code is the odd one out. And it must go in .vscode/mcp.json: a .mcp.json at the repository root silently drops the headers, which presents exactly like a wrong token.

{
  "servers": {
    "sutido": {
      "type": "http",
      "url": "http://127.0.0.1:7332/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl.

{
  "mcpServers": {
    "sutido": {
      "serverUrl": "http://127.0.0.1:7332/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Gemini CLI

~/.gemini/settings.json, or .gemini/settings.json per project. It must be httpUrl — a plain url selects SSE, a different transport, and will not connect.

{
  "mcpServers": {
    "sutido": {
      "httpUrl": "http://127.0.0.1:7332/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Codex CLI

~/.codex/config.toml. Codex takes the name of an environment variable rather than the token itself, and adds the Bearer prefix for you — so the token never lands in the config file.

[mcp_servers.sutido]
url = "http://127.0.0.1:7332/mcp"
bearer_token_env_var = "SUTIDO_MCP_TOKEN"

Then set SUTIDO_MCP_TOKEN to your token in the environment Codex runs in.

Anything Else

A client that cannot speak HTTP at all can go through mcp-remote, a third-party npm package that bridges stdio to HTTP. It will see your token, so treat installing it as the trust decision it is.

{
  "mcpServers": {
    "sutido": {
      "command": "npx",
      "args": ["mcp-remote", "http://127.0.0.1:7332/mcp", "--header", "Authorization:${SUTIDO_MCP_TOKEN}"],
      "env": { "SUTIDO_MCP_TOKEN": "Bearer YOUR_TOKEN" }
    }
  }
}

The token goes in an environment variable rather than the argument list, where a process listing would show it. There is no space after the colon on purpose — some clients split the header on the first space instead of the first colon.

Checking It Works

  1. Sutido's status line reads listening on 127.0.0.1:7332
  2. Your client lists six tools: list_connections, list_databases, list_tables, describe_table, query, execute
  3. Ask the agent to list your connections — the call appears in Sutido's Activity tab as it happens

Nothing shows up

  • Empty connection list — expected until you grant something. Nothing you have not granted is listed.
  • Client cannot connect — check the proxy is on and saved; the switch alone does not start it.
  • Refused with no obvious reason — open Activity. Every refusal is recorded with the rule that refused it.
  • VS Code sees the server but every call fails — the config is probably in .mcp.json instead of .vscode/mcp.json, which drops the headers.

See Also

AI Agent Access (MCP) — what the agent can reach, how to grant it, and what happens when it tries to write.