MCP Client node: server reachable (200 OK via ngrok) but node errors — what exact protocol/handshake does MCP Client expect?

I’m connecting n8n’s MCP Client to a custom Python server exposed through ngrok. The tunnel is active and ngrok shows multiple POSTs with 200 OK, but the MCP Client node still fails. I suspect my server isn’t speaking the exact MCP protocol the node expects. Could you share the precise handshake, endpoints, and request/response schemas(e.g., JSON-RPC “initialize”, tools/list, call_tool, SSE/WebSocket event names) or a minimal reference server that works with this node?

Please share your workflow


Share the output returned by the last node

Logs
ngrok terminal (OK responses): multiple POST /messages 200 OK (timestamps available)

Information on your n8n setup

  • n8n version: 1.114.3 Stable
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main): own
  • Running n8n via (Docker, npm, n8n cloud, desktop app): cloud
  • Operating system: Mac

Hi @Praneeth_Vallabha :waving_hand: The MCP Client Node uses the MCP protocol, which has it’s communication standard based on streaming http (http 1.1) requests. It looks like your custom python server does not correctly implement the MCP protocol. I suggest using an existing library to build your server (for example FastMCP) instead of a custom implementation.