Summary
I maintain an MCP server (wan-ip-check, see github.com/AC13139/wan-ip-check). When integrating with Claude Code, I discovered that the project-scoped `.mcp.json` example templates shown in the official Go/Python/TypeScript SDK READMEs omit the `"type": "http"` field — Claude Code then silently refuses to connect with:
[Warning] [wan-ip-check] mcpServers.wan-ip-check: Skipped — MCP server "wan-ip-check" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry
This is because Claude Code's loader requires both `type` AND `url` to be explicit on every server entry. `transport` (the spec field) is NOT inferred as a substitute for `type` (the client field).
What I'd like
- A canonical field-matrix table in the MCP server config docs covering at minimum:
- `type` (required by some clients): http, sse, ws (for URL-based) and stdio (uses command+args)
- `url`: required when type is http/sse/ws
- `transport` (MCP 2026-07-28 spec name for the streamable HTTP variant): how it relates to `type`
- Updated example templates across the SDK READMEs to include `"type": "http"` for HTTP-streamable servers.
- A note in the spec explaining that `type` is client-defined (varies by host) and `transport` is the spec-defined field for transport negotiation.
Why I'm filing here, not in a SDK repo
The spec / docs page is the canonical source of truth for config schema. SDKs copy from it. Updating it once propagates everywhere.
References
Thanks for the great spec, by the way — the 2026-07-28 changes around `structuredContent` and `isError` are working great on our end.
Summary
I maintain an MCP server (wan-ip-check, see github.com/AC13139/wan-ip-check). When integrating with Claude Code, I discovered that the project-scoped `.mcp.json` example templates shown in the official Go/Python/TypeScript SDK READMEs omit the `"type": "http"` field — Claude Code then silently refuses to connect with:
This is because Claude Code's loader requires both `type` AND `url` to be explicit on every server entry. `transport` (the spec field) is NOT inferred as a substitute for `type` (the client field).
What I'd like
Why I'm filing here, not in a SDK repo
The spec / docs page is the canonical source of truth for config schema. SDKs copy from it. Updating it once propagates everywhere.
References
typefield;transportnot inferred as substitute anthropics/claude-code#86143Thanks for the great spec, by the way — the 2026-07-28 changes around `structuredContent` and `isError` are working great on our end.