MCP config: misleading error when server is missing `type` field; `transport` not inferred as substitute
Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 12, 2026
Summary
When a project-scoped .mcp.json entry has url + transport: streamable-http but is missing type, Claude Code prints:
[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
Two problems with this:
- The error reads as a rename, but the two fields are independent.
transport: streamable-http(the MCP 2026-07-28 spec name for the HTTP-streaming transport) andtype: http(Claude Code's local field) look like the same thing. A user reasonably tries "renametransporttotype" first, but Claude Code doesn't infertypefromtransport— they're both required, with different value spaces.
- Several official SDK example templates ship without
type. I hit this exact error copying a template from the go-sdk README. The Go server template there doesn't includetypeeither. It works in some clients but Claude Code rejects it.
Repro
\\\jsonc\
// .mcp.json
{
"mcpServers": {
"wan-ip-check": {
"url": "http://localhost:7374/mcp",
"transport": "streamable-http",
"headers": { "Authorization": "Bearer ${TOKEN}" }
}
}
}
\\
Expected: server connects.
Actual: \/mcp\ shows it as \Skipped — MCP server ... has a "url" but no "type"\.
Fix: add \"type": "http"\. Then it works.
Suggested improvements
- If \
transport: streamable-http\is set, infer \type: http\(or fail with a clearer message that says "add \type\explicitly, OR change \transport\to one of: http, sse, ws"). - Improve the error to link to docs and list allowed \
type\values inline. - Document the field matrix in the MCP docs page Claude Code points users to.
- Audit SDK templates — happy to PR a sweep across \
python-sdk\, \typescript-sdk\, \go-sdk\examples to flag which ship broken-by-omission configs.
Environment
- Claude Code: latest stable (2026-08-12)
- MCP spec: 2026-07-28
- Config file: project-scoped \
.mcp.json\