Cursor mcp.json to Claude Code: why a url entry fails
A url entry copied from Cursor's mcp.json fails in Claude Code until it has type http. Here is the claude mcp add-json command for Sume's hosted MCP server.

A url entry copied from Cursor's mcp.json fails in Claude Code because Claude Code reads an entry with no type as a stdio server. Add "type": "http" and it works. For Sume, the one-line version is claude mcp add-json sume '{"type":"http","url":"https://mcp.sume.com/mcp"}', followed by claude mcp login sume.
The Claude Code rules come from its MCP documentation, read 2026-09-29. The Sume endpoint and login come from the MCP quickstart.
What has to change when I copy the block?
Claude Code's docs cover configs written for another MCP client, such as Claude Desktop. Pass claude mcp add-json the object inside mcpServers, not the wrapper. Two kinds of entry need repair first.
| Entry in the copied block | Repair |
|---|---|
A url with no type | Add "type": "http", "sse" or "ws" to match the endpoint |
| A key with characters other than letters, numbers, hyphens and underscores | Pick a server name that uses only those characters |
Does streamable-http work as the type?
Yes. The type field also accepts streamable-http as an alias for http, so a config copied from a server's own docs works unchanged.
What is the exact Sume command?
Claude Code prints an Added line for each add command, and claude mcp get sume shows the connection status. Sume's quickstart gives the equivalent claude mcp add --transport http sume https://mcp.sume.com/mcp followed by claude mcp login sume.
claude mcp add-json sume '{"type":"http","url":"https://mcp.sume.com/mcp"}'
claude mcp get sume
claude mcp login sumeDo I keep the API key header?
If your Cursor entry used headers with an API key, keep it. Cursor's ${env:NAME} becomes ${NAME} in Claude Code, so "Authorization": "Bearer ${SUME_API_KEY}" goes inside the same JSON. Sume accepts Authorization: Bearer <key> or x-api-key, per MCP OAuth and API keys. Keep the key in an environment variable rather than typing it into the file, so the JSON you paste into version control carries only the placeholder, and export the variable in the shell that launches Claude Code.
What does Claude Code do with an entry that has no type?
It treats the entry as a stdio server, which needs a command. A Cursor-style block that has only url therefore has no command to run, and the add or load fails. The fix is the transport type, which the Claude Code page says to add to match the endpoint.
For a legacy server-sent-events endpoint the type would be sse, and ws is for WebSocket. Sume's hosted endpoint at https://mcp.sume.com/mcp is the HTTP kind, which is why the command above says http.
Can I share the server with my team?
Yes. Claude Code's page says to add --scope project, or to put the entry under mcpServers in .mcp.json at the project root and commit it. Never commit a literal key; use the ${VAR} form.
Sources
Related posts
More in Integrations
- Cursor MCP OAuth redirect URL: which one to allow
Cursor uses fixed OAuth redirect URLs for MCP servers, one for web and Cursor Agents and one for the desktop app. Here is what each is and how Sume treats them.
- Cursor team MCP servers: share Sume's hosted MCP across a team
Cursor's docs describe project, global and team MCP servers. Where Sume's hosted MCP fits in each, how sign-in works per person, and what a shared key changes.
- EventBridge API destinations: call a paid API without Lambda
An EventBridge API destination calls an HTTPS API straight from a rule, with a 5-second timeout and retries on 409, 429 and 5xx. Key every call.
- Golang HTTP POST JSON with headers and a Bearer token
http.Post can't set headers. Marshal the JSON, build it with http.NewRequest, set headers, send with a Client that has a Timeout, and close the body.
Written by Sume