MCP (Model Context Protocol) is the open protocol LLM applications use to plug in external capabilities. Three roles: a Host (the app running the LLM), a Client (one per server connection, kept 1:1 and stateful), and one or more Servers, each exposing tools (callable actions), resources (readable data), and prompts (reusable templates).
Every message on the wire is JSON-RPC 2.0. A request carries a unique id; the matching response echoes that id so concurrent in-flight calls never get mixed up:
→ {"jsonrpc":"2.0","id":7,"method":"tools/call",
"params":{"name":"read_file","arguments":{"path":"/data.csv"}}}
← {"jsonrpc":"2.0","id":7,"result":{"content":[...]}}
This 2D view renders the same choreography as a flat wire diagram: the host sits at the centre, each MCP server sits on a ring around it, and every packet arcs outward for the request leg and back inward for the response leg. Round-trip time is the sum of both legs — each leg's duration is drawn independently from latency × (1 ± jitter), exactly like real network hops rarely take the identical time twice.
- Server buttons — pick which downstream MCP server receives the next call (each models a realistic server: filesystem, GitHub, SQL, web search).
- Method buttons —
tools/list discovers callable tools, resources/read fetches raw data, tools/call actually invokes a tool with arguments.
- Latency — the base simulated one-way network delay per hop.
- Latency jitter — random variance applied independently to the outbound and inbound leg, so the strip chart never shows two identical round-trips in a row.
- Packet loss — probability a request never gets a reply; a lost packet keeps travelling until it exceeds a timeout budget (3× the expected round-trip), then is logged as timed out instead of completed.
- Auto-request rate — spawns concurrent requests to random servers, so you can watch several JSON-RPC exchanges in flight at once without them colliding, up to the concurrency cap.
- Max concurrent — the in-flight ceiling; once reached, new sends are silently dropped until a slot frees up, just like a real client with a bounded connection pool.
- Drag / scroll on the diagram — pan and zoom the wire view, it's a spatial map of a real topology, not just decoration.
This is the same request/response choreography behind Claude Desktop, IDE copilots and any agent framework (LangChain, AutoGen) that speaks MCP to reach outside the model's own weights.