MCP client configuration
Configure Coding Tools MCP in popular MCP clients.
Two protocol eras are served at once. A client that speaks 2026-07-28 needs
no configuration and no handshake: it discovers the server with
server/discover and states its version in every request. A handshake client
uses 2025-11-25, and 2025-06-18 remains supported for existing clients.
Claude Desktop
Edit claude_desktop_config.json — ~/Library/Application Support/Claude/ on
macOS, %APPDATA%\Claude\ on Windows — and restart Claude Desktop:
{
"mcpServers": {
"coding-tools": {
"command": "uvx",
"args": ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]
}
}
}Codex
[mcp_servers.coding_tools]
command = "uvx"
args = ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]Claude Code
{
"mcpServers": {
"coding-tools": {
"command": "uvx",
"args": ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]
}
}
}Or from the command line:
claude mcp add coding-tools -- uvx coding-tools-mcp --stdio --workspace /path/to/repoCursor
{
"mcpServers": {
"coding-tools": {
"command": "uvx",
"args": ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]
}
}
}VS Code
GitHub Copilot reads .vscode/mcp.json in the workspace:
{
"servers": {
"coding-tools": {
"type": "stdio",
"command": "uvx",
"args": ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]
}
}
}For the local HTTP server instead, use "type": "http" with "url" and
"headers" keys.
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json and restart Windsurf:
{
"mcpServers": {
"coding-tools": {
"command": "uvx",
"args": ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]
}
}
}Gemini CLI
One command, project scope by default:
gemini mcp add coding-tools -- uvx coding-tools-mcp --stdio --workspace /path/to/repoOr edit ~/.gemini/settings.json (user scope) or .gemini/settings.json
(project scope):
{
"mcpServers": {
"coding-tools": {
"command": "uvx",
"args": ["coding-tools-mcp", "--stdio", "--workspace", "/path/to/repo"]
}
}
}For the local HTTP server, transport http replaces the command entirely:
gemini mcp add --transport http coding-tools http://127.0.0.1:8765/mcpAuthenticated endpoints take --header "Authorization: Bearer <token>". Keep
the server name free of underscores: Gemini CLI derives tool names from it and
splits on the first one.
Continue, Cursor, Cline, And Generic HTTP Clients
Configure a Streamable HTTP MCP server at:
http://127.0.0.1:8765/mcpThe server is designed for local loopback use. Do not bind it to a public interface without external authentication and sandboxing.
Remote MCP
For remote MCP clients, keep the server on loopback and expose it through an HTTPS tunnel with authentication. The fixed tool set includes mutation and command execution:
CODING_TOOLS_MCP_AUTH_MODE=bearer \
integrations/tunnels/tunnel.sh cloudflared /path/to/repoConfigure the remote MCP client with:
URL: https://<tunnel-host>/mcpStatic bearer-token auth is available for clients that support custom
Authorization headers. OAuth-aware MCP clients can use --oauth-mode, which
publishes protected-resource and authorization-server discovery plus RFC 7591
dynamic registration and a PKCE authorization flow. Clients that support
neither require an external authenticated proxy. See Remote access.
ChatGPT
ChatGPT is a cloud client: it cannot launch a local process, so it needs the authenticated HTTPS tunnel from Remote MCP, and its custom connectors offer OAuth or no authentication — there is no static bearer header to enter.
CODING_TOOLS_MCP_AUTH_MODE=oauth integrations/tunnels/tunnel.sh cloudflared /path/to/repoIn ChatGPT, enable developer mode (Settings → Connectors → Advanced
settings), then create a custom connector pointing at
https://<tunnel-host>/mcp. If ChatGPT discovers the OAuth endpoints itself,
the authorization page asks for the password the script printed. If the
connector form asks for details instead, fill them in:
- Authorization URL:
https://<tunnel-host>/oauth/authorize - Token URL:
https://<tunnel-host>/oauth/token - Client ID and secret: from a pre-registered client — start the tunnel with
CODING_TOOLS_MCP_OAUTH_CLIENT_ID,CODING_TOOLS_MCP_OAUTH_CLIENT_SECRET, andCODING_TOOLS_MCP_OAUTH_REDIRECT_URISset to the redirect URI ChatGPT shows.
Grok
grok.com is also cloud-only. Start the same OAuth tunnel, then add a custom
connector at grok.com/connectors (Settings → Connectors) with
https://<tunnel-host>/mcp; Grok completes the OAuth flow in a popup.
The xAI API takes the static bearer tunnel instead — a request's remote MCP tool entry pins the server and the header:
{
"server_url": "https://<tunnel-host>/mcp",
"server_label": "coding_tools",
"authorization": "<CODING_TOOLS_MCP_AUTH_TOKEN>"
}Only Streamable HTTP and SSE transports are supported on Grok's side, which is what the tunnel already speaks.