MCP not connecting in Claude Desktop? Full troubleshooting guide
Fix a failing IntoCal MCP connection in Claude, Cursor, Windsurf, or ChatGPT — handshake test, config paths, 401s, and pending bookings.
Short answer: Most failed MCP connections come from four things: the config file is in the wrong location, the client was not fully restarted, the URL is missing the username segment, or the API key was pasted with a trailing space. IntoCal's endpoint is https://api.intocal.com/mcp/{username} over streamable HTTP — it needs no local process and no npx wrapper.
Confirm the endpoint responds first
Before touching any client, check the server from a terminal. A healthy endpoint answers the MCP initialize handshake:
curl -s -X POST https://api.intocal.com/mcp/yourname \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'A JSON-RPC result means the server is fine and the problem is client-side. A 404 means the username is wrong — it is your IntoCal handle, the same one in intocal.com/u/yourname, not your email.
Claude Desktop
- Settings → Connectors → Add custom connector.
- Paste the URL above with your username.
- Add your key as a Bearer token only if you want owner mode (auto-confirmed bookings, cancel, list).
- Quit Claude completely — closing the window is not enough on macOS; use Cmd+Q, or quit from the menu bar icon on Windows.
- Reopen and check the tools icon:
list_event_types,query_slots, andrequest_bookingshould appear.
Cursor, Windsurf, and ChatGPT
- Cursor: Settings → MCP → Add new server, type "streamable http", same URL. Config lives at
~/.cursor/mcp.json. - Windsurf: Settings → Cascade → MCP servers. Restart Cascade, not just the editor pane.
- ChatGPT: Settings → Connectors → Add connector (available on plans with connector support). Use the same URL; public mode works without a key.
Troubleshooting table
| Symptom | Cause | Fix |
|---|---|---|
| Server listed but no tools | Client cached a failed handshake | Remove the server, fully quit the app, re-add |
| 401 unauthorized | Key revoked, or a space/newline pasted with it | Regenerate in Dashboard → MCP and paste without whitespace |
| 404 on every call | Username segment missing or misspelled | Use the handle from your public page URL |
| Bookings created but stay pending | Public mode — this is by design | Guest clicks the emailed confirmation link, or use an owner key |
| Agent proposes a slot that is taken | It answered from context instead of calling query_slots | Ask it to "check availability with the IntoCal tool first" |
| Config edits do nothing | Editing the wrong file path | Add servers through the app UI rather than by hand |
Public mode vs owner mode
Without a key, anyone's agent can read your open slots and request a booking — the booking is held pending until the guest confirms by email, so the endpoint is safe to publish. With an owner key, bookings confirm instantly and the cancel, list-bookings, and team-member tools unlock. Rotate keys any time in Dashboard → MCP; rotation takes effect immediately and old keys stop working on the next call.
Frequently asked questions
What is the IntoCal MCP server URL?
https://api.intocal.com/mcp/{username}, using your IntoCal handle — the same one in intocal.com/u/yourname. It is a streamable HTTP server, so no local process or npx wrapper is needed.
Why does Claude Desktop show the server but no tools?
The client cached a failed handshake. Remove the server, quit the app completely (Cmd+Q on macOS), reopen, and add it again.
Do I need an API key to let an AI agent book me?
No. Without a key the endpoint runs in public mode: agents can read open slots and request bookings, which stay pending until the guest clicks an emailed confirmation link.
Why do I get a 401 from the MCP endpoint?
The key was revoked or was pasted with trailing whitespace. Regenerate it in Dashboard → MCP and paste it with no spaces or newlines.
Why did the agent offer a time that was already booked?
It answered from conversation context instead of calling query_slots. Ask it to check availability with the IntoCal tool before proposing times.
Does the MCP server work with ChatGPT and Cursor?
Yes. Any MCP client supporting streamable HTTP works, including Claude Desktop, ChatGPT connectors, Cursor, and Windsurf.
Related guides
Cal.com MCP vs IntoCal hosted MCP: let Claude book meetings without self-hosting
Compare Cal.com's MCP server with IntoCal's hosted per-user MCP endpoint, and set up Claude to check your slots and book meetings in about two minutes.
How to let AI agents book meetings on your behalf (MCP explained)
Every IntoCal user has a hosted MCP server. Here's how Claude, ChatGPT, and Cursor can natively book you — with real snippets.
Make scheduling simpler.
Outlook-first booking with a free-forever plan.
Try IntoCal freeRead next
Booking confirmation emails going to spam? Fix your sender domain
