MCPSkill
MCP vs SkillMCP Markets
Compare

MCP server vs client

One connection, two halves with different jobs. Mixing them up is the most common beginner implementation mistake.

Short version

The server owns capabilities. It defines the tools, validates input, executes work, and returns structured results. The client owns the conversation. It discovers what is available, presents those options to the model, and routes chosen calls to the right server.

A useful rule: the server should be able to run with no idea who is talking to it. The moment it starts making user-facing decisions, the boundary has been crossed.

One line each

The server exposes. The client orchestrates. Neither should do the other's job.

Side by side

AspectServerClient
OwnsCapabilities and their contractsThe session and the model interaction
DefinesTool names, schemas, permissions, errorsWhich servers to connect and how to present them
ValidatesInput, before touching any real systemWhether a call is appropriate for this task at all
Knows the userNo, and it should not need toYes, it is driving the conversation
Scales byExposing more or narrower capabilitiesConnecting more servers without changing the model
Typical mistakeEncoding business rules or user preferencesHard-coding which tool to call

How one call moves

1
The client connects

It reaches the server and learns which capabilities exist, along with their names, descriptions, and schemas.

2
The client offers them to the model

Capabilities are presented as callable options. The model decides whether any of them fits the current request.

3
The server validates and executes

Bad input is rejected before anything real is touched. If the call is valid, the capability runs.

4
A structured result comes back

The client hands the result to the model, which continues the conversation with usable fields rather than raw text.

Common mix-ups

Teaching the server about the userThe server starts tailoring behaviour by persona or history. That belongs to the client and the Skill layer.
Hard-coding tool choice in the clientIf the client already knows which tool to call, the model is not choosing anything anymore and the protocol is overhead.
Doing validation only in the clientThe client is not a trust boundary. The server must reject bad input regardless of who sent it.
Letting the server decide presentationFormatting the user-facing answer is a task concern, so it belongs to the Skill, not the connection.