How does an MCP client discover tools from an MCP server?
13:45 04 Oct 2026

I am trying to understand the low-level communication between an MCP client/orchestrator and an MCP server.

Suppose I have a backend server that acts as an orchestrator. It communicates with an LLM, and I also want it to connect to an external MCP server that provides tools.

I understand that MCP allows the client to discover tool names, descriptions, and input schemas. What I am trying to understand is how my backend actually obtains this information at the network level.

For example, without MCP, I might design a simple HTTP API like:

GET /tools

and the external server could respond with JSON containing the available tools and their schemas.

Is MCP doing something conceptually similar? For example, does the MCP client send a request over HTTP (for an HTTP-based MCP transport), using an MCP-defined operation such as tools/list, and receive a structured response containing the tool definitions?

I understand that MCP itself is a protocol rather than a REST API. My question is specifically about the underlying communication: when an MCP client communicates with an MCP server over HTTP, isn't this ultimately still a request/response exchange over HTTP, with MCP defining the format and semantics of the messages?

I would appreciate an explanation at the low/network level, without relying on the MCP SDK abstractions.

rest http agent model-context-protocol