Rebasely Beta: data may be purged

examples/MCP-tools Public

Markdown · 2.2 KiB · at 2090b14

id: connecting-a-client
type: guide
owner: justin
reviewed: 2026-10-15

Connecting a client

The endpoint is https://<your worker>.workers.dev/mcp once deployed, or http://localhost:8787/mcp under npm run dev. It speaks Streamable HTTP without sessions (see [[0001-stateless-streamable-http]]) and needs no auth.

MCP Inspector

npx @modelcontextprotocol/inspector

Pick the Streamable HTTP transport, enter the URL and connect. Direct connections work because /mcp allows any origin. The Tools tab lists all three tools; run time_in_zone with zone set to tokyo to check the round trip.

Claude Desktop

Claude Desktop launches local servers over stdio, so bridge to the HTTP endpoint with mcp-remote in claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-tools": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:8787/mcp"]
    }
  }
}

Restart Claude Desktop and the tools appear under the tools menu. On plans that support custom connectors you can instead add the deployed URL directly as a remote connector.

Claude Code

claude mcp add --transport http mcp-tools http://localhost:8787/mcp

curl

Every message is a POST with both content types in Accept:

curl -s http://localhost:8787/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

When it does not work

  • 406 Not Acceptable: the client did not send both application/json and text/event-stream in Accept.
  • 415 Unsupported Media Type: the body was not sent as application/json.
  • 405 on GET: the client is trying to open a standalone SSE stream or resume a session. Pick a Streamable HTTP client mode that does not need one; older SSE-only clients are not supported.
  • "Rate limit reached for this client": the client made more than 30 tool calls in a short burst. Wait the number of seconds the message gives; one call every two seconds is always allowed. Clients behind the same IP share the limit.
  • Tools missing: check GET / answers, then run tools/list with curl to see what the server sends.