Custom connectors in the Claude web and desktop app.
Do not use --bearer with Claude.ai. The custom connector dialog has no
field for a static token, so a tunnel that requires one will fail — and
Claude.ai fails silently. Share without it:
Leave Advanced settings alone. Those two fields are an OAuth Client ID
and Secret, which a HeyMCP tunnel doesn’t use — see
Authentication.
The custom connector dialog, filled in with a HeyMCP tunnel URL
4
Add
Claude connects, discovers your tools, and the connector appears in the
list marked Custom.
Watch your HeyMCP inspector while you do this. You should see INIT, NOTIF
and LIST rows appear within a second or two, fingerprinted as Claude.ai.
If nothing appears, the request never reached your tunnel and the problem is
the URL, not your server.
Start a conversation and ask Claude to use one of your tools. The CALL row
appears in the inspector as it happens, with the arguments Claude chose.This is where the classic finding shows up: ask for something with a time in it
and watch Claude send "7pm" for a parameter with no format constraint.
schema/no-format
Claude.ai is the least forgiving client to debug because it says nothing at all.
Work through this in order — it’s ordered by how often each one is the answer.
1. Read the handshake report first
Before touching Claude, look at the Handshake tab in your inspector, or
run heymcp probe localhost:8000.Two findings block Claude.ai completely and are invisible from your side:
transport/content-type — your MCP route
answers with something other than application/json or
text/event-stream. This is the single most common cause of a connector
that silently never works.
Claude never reached the edge. Check the URL character by character, confirm
it ends in /mcp, and confirm heymcp share is still running in your
terminal.
3. INIT arrives but nothing else
Your server accepted initialize and then something went wrong. Expand the
INIT← row in the inspector to see exactly what it answered. An OPAQUE
row here usually means an HTML error page where JSON was expected.
4. Tools are listed but never called
Claude can see them and is choosing not to use them. Check the handshake
report for tool/no-description and
tools/description-length — Claude.ai
caps descriptions at about 1024 characters and will truncate or drop
anything longer.
5. You used --bearer
Claude.ai can’t send one. Restart the tunnel without it.
When a tool works in Claude Code and not in Claude.ai, the difference is almost
always a limit: Claude Code accepts ~8192-character descriptions and
128-character names, Claude.ai accepts ~1024 and 64.
⌘I
Assistant
Responses are generated using AI and may contain mistakes.