Where is MCP's client? You never wrote it — but you're using it
Almost everyone learning MCP hits the same confusion:
"Aren't you supposed to have a Client? But I never wrote one, and
opencode/ Cursor just connect to Playwright and it works — where's the client?"
Here's the answer up front:
The client is always there. It's tucked inside the Host — transparent to you, which is why you never "feel" it.
Who's who in the "trio"
MCP has three roles — Host / Client / Server — and people immediately ask: "How many do I write?"
| Role | What it is | Who writes it |
|---|---|---|
| Host | your LLM app (opencode / Cursor / Claude Desktop / your own agent) | the framework |
| Client | a piece inside the Host that connects the server, handshakes, calls methods | built into the framework (you don't) |
| Server | the process exposing tools | you write it |
Key point: the Client is not a standalone program — it's part of the Host.
If you didn't write the client, who's doing the work?
You write one line of config:
"mcp": { "playwright": { "command": ["node", ".../cli.js"] } }
That just tells the Host: "launch / connect this server." After that:
[Client built into the Host] → initialize handshake
→ tools/list (fetch tools)
→ tools/call (invoke tool)
→ feed the result back to the model
It's all the Host's built-in client. You've been using a client all along — it's just transparent, because it lives in the framework.
An analogy
A browser connects to websites without you ever writing a TCP/IP stack — because the stack is built into the browser.
MCP's Client is to a Host what the TCP stack is to a browser.
What you configure is "which site to connect to" (the server), not "how to write TCP" (the client).
The right way to read the "trio"
- Host (framework) = built-in client + config-driven;
- Server = the tool you write;
- Client = the framework's, invisible, and not yours to write.
You really only need two things: write the server + add one config line.
So when do you write a client?
When the Host is your own program.
E.g., if you're building an agent from scratch — then there's no ready-made client, and you have to put one in yourself (or use an MCP client library). That's exactly why writing a standard MCP client by hand exists.
Remember one line
MCP always has a client. The only question is: does the Host ship it, or do you write it?
Most people get scared by the "trio" and think they must write three things. In reality:
You write the server (+ one config line). The client is already done for you.
Comments 0
No comments yet — be the first!
Log in Log in to comment