IntoCal
    All articles
    AI··7 min read

    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

    1. Settings → Connectors → Add custom connector.
    2. Paste the URL above with your username.
    3. Add your key as a Bearer token only if you want owner mode (auto-confirmed bookings, cancel, list).
    4. Quit Claude completely — closing the window is not enough on macOS; use Cmd+Q, or quit from the menu bar icon on Windows.
    5. Reopen and check the tools icon: list_event_types, query_slots, and request_booking should 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

    SymptomCauseFix
    Server listed but no toolsClient cached a failed handshakeRemove the server, fully quit the app, re-add
    401 unauthorizedKey revoked, or a space/newline pasted with itRegenerate in Dashboard → MCP and paste without whitespace
    404 on every callUsername segment missing or misspelledUse the handle from your public page URL
    Bookings created but stay pendingPublic mode — this is by designGuest clicks the emailed confirmation link, or use an owner key
    Agent proposes a slot that is takenIt answered from context instead of calling query_slotsAsk it to "check availability with the IntoCal tool first"
    Config edits do nothingEditing the wrong file pathAdd 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

    Make scheduling simpler.

    Outlook-first booking with a free-forever plan.

    Try IntoCal free

    Read next

    Booking confirmation emails going to spam? Fix your sender domain