skip to content

What does MCP's Data Privacy principle require of a host before it exposes user data to a server?

level: middleimportance: should knowfreq 47%

answer

  1. Consent comes before the request, not after
  2. A server sees only its own request
  3. No recall once the bytes have left
  4. Onward transmission needs consent too
  5. Server selection is a privacy decision

basics

~20 s

Explicit user consent before user data reaches a server, no onward transmission of resource data without consent, and appropriate access controls around it. The host is the only component that can honour this, since a server sees only what the host chose to send.

solid answer

~50 s

Under revision 2026-07-28, **Data Privacy** asks the host for three things: obtain the user's **explicit consent before exposing their data to a server**, do **not transmit resource data elsewhere** without consent, and protect that data with **appropriate access controls**. The principle is enforceable only host-side, and the architecture is what makes it tractable: a server sees exactly the request the host constructed for it. It cannot read the surrounding conversation, and it cannot see into the other servers connected to the same host. So the privacy boundary is a series of host decisions about what goes into each tool argument, each prompt fill and each resource read. Once the host has put data in a request, the protocol offers no recall and no enforcement of what the server does next — which is why server selection is itself a privacy decision.

go deeper

for a junior

Know that the host must get explicit consent before user data goes to a server, and that a server only sees the request it was sent, not the conversation.

for a middle

Explain the three clauses — consent before exposure, no onward transmission, appropriate access controls — and why each falls on the host rather than the server or the protocol.

for a senior

Reason about the real exposure surface: free-form tool arguments, cross-server data movement inside an agent loop, and the fact that retention is unenforceable once the request has left.

for a principal

Own the policy layer: define which data classes may reach which server identities, treat server selection and approval as a privacy control, and accept that contracts, not the protocol, bound what an operator does with received data.

## The principle as written Data Privacy is the second of MCP's three key principles in revision 2026-07-28 (the others being User Consent and Control, and Tool Safety). It asks implementations to obtain explicit user consent before exposing user data to servers, not to transmit resource data elsewhere without consent, and to protect user data with appropriate access controls. Notice who the obligations fall on. Every clause is something only the **host** can do, because the host is the component holding the user's data before any of it becomes a request. ## What a server can and cannot see The practical shape of the principle comes from the topology. A host connects one client per server. When the host calls a tool, reads a resource or fetches a prompt, the server receives that request and nothing else. Concretely: - It does **not** receive the conversation. There is no field in which the host's chat history travels, and the spec is explicit that servers cannot read the whole conversation. - It does **not** see other servers. A server has no visibility into which other servers the host has configured, what they returned, or that they exist at all. - It **does** see everything the host put in the request: every tool argument, every prompt argument, the resource URI being read, the declared protocol version and client capabilities in `_meta`, and — if the host sends it — `io.modelcontextprotocol/clientInfo`. That asymmetry is the good news and the trap at once. The isolation is real, but it is only as good as the host's judgement about what to place in a request. A helpfully-designed tool whose parameters invite "any relevant context" is an exfiltration surface, and the model filling those parameters is not a privacy control. ## Consent before exposure, not after The consent the principle demands is prospective. Once data is inside a request that has left the host, there is no protocol mechanism to recall it, no expiry the client can impose on the server's copy, and nothing that constrains what the server does with it afterwards. The specification's own framing is that MCP cannot enforce this at the protocol level — a server that logs, stores or forwards what it received is breaking a promise, not a protocol rule. The design consequence is that a host has to reason about **data classes reaching server identities**, not merely about individual actions. "May this tool run?" and "may this server see this content?" are different questions with different answers, and a consent surface that only asks the first leaves the second unexamined. ## No onward transmission without consent The second clause — do not transmit resource data elsewhere without consent — is aimed at the host too. Data a host obtained from one place should not be quietly routed somewhere else on a server's suggestion. In an agent loop this is the common failure: server A returns content, the model treats it as instruction-bearing context, and server B is called with that content in an argument. Nothing in the protocol forbids the second call; the principle asks the host to treat it as an exposure requiring the user's agreement, and the safest hosts make cross-server data movement a visible event rather than an invisible one. ## Access controls The third clause is deliberately open-ended: protect user data with appropriate access controls. For a remote server, the enforceable part of this lives in the authorization profile — audience-bound tokens so a token minted for one server cannot be replayed at another, and a prohibition on token passthrough so a server cannot forward the user's credential onward. For a locally launched server, there is no token at all: it is a subprocess running with the user's own privileges, so "access control" means whatever the host does about filesystem and network scope before launching it. ## What changed in 2026-07-28 Two things are worth stating precisely. First, the principle count went from four to three: *LLM Sampling Controls*, which included the rule that a server should not see the whole prompt, was deleted when Sampling was deprecated in this revision. The underlying protection — a server does not get the conversation — remains a fact of the architecture and is now discussed under consent and privacy rather than as a principle of its own. Second, because protocol sessions and the `initialize` handshake were removed and MCP became stateless, a host cannot express "the user approved data sharing for this session". The grant is host-side state keyed to the user and the server's identity, applied afresh as each request is assembled. ## How this is asked in interviews Usually as a scenario: a tool takes a free-form `context` parameter, or the candidate is asked what a server can learn about the user. Strong answers separate three layers — what the protocol structurally prevents (the conversation and other servers stay invisible), what the host must decide (what goes in the request), and what is unenforceable once the data has left (retention and onward use, which reduce to trusting the server operator).

  • A tool declares a free-form `context` string parameter. Why is that a privacy concern under this principle?
    Because the model fills it, and the model is not a privacy control. Anything it considers relevant — including content from the conversation or from another server's results — can end up in an argument that leaves the host, and once sent there is no recall. The host's consent surface should treat the content of arguments, not just the act of calling the tool, as the thing being approved.
  • Does the principle constrain what a server does with data after it receives it?
    Not in any enforceable way. MCP cannot enforce its principles at the protocol level, so retention, logging and onward use are promises made by the server operator, backed by contract or reputation rather than by the wire. That is why choosing which servers may be configured is itself a privacy decision, and why audience-bound tokens and the no-token-passthrough rule matter for remote servers.
  • How much of the conversation does a server receive when a host calls one of its tools?
    None of it beyond what the host placed in the request. The server receives the method, the arguments, and the `_meta` fields such as the protocol version and client capabilities. It has no access to the surrounding conversation and no visibility into the host's other servers. The exposure is exactly what the host chose to construct, which is why the principle targets the host.

saying these in an interview costs you the question

  • Assumes servers receive the conversation history automatically
  • Thinks consent after the fact can undo an exposure
  • Believes the protocol constrains a server's data retention
  • Treats the model filling arguments as a privacy filter
  • Says one server can observe what another server returned

context