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 | |
|---|---|
| Transport | Streamable HTTP |
| URL | http://127.0.0.1:7332/mcp |
| Header | Authorization: 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
- Sutido's status line reads
listening on 127.0.0.1:7332 - Your client lists six tools:
list_connections,list_databases,list_tables,describe_table,query,execute - 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.jsoninstead 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.