31 tools· updated sep 2026

What is an MCP server in AI, and where does your data actually go?

Marek.

  • mcp
  • agent-tools
  • context-engineering
  • glossary

What is an MCP server in AI, in one line: a program that hands an AI application your tools and your data through a shared protocol, so you stop building a custom integration for every pair. The part people actually want answered sits underneath that, and it is the question I see phrased half a dozen ways in search: if I connect this thing, where does my data end up.

  • The three roles. Host is the app you use, client is the connection inside it, server is the program serving your data. One client per server.
  • The protocol only moves context. MCP defines how the pieces talk. It makes no decision about what the model does with what it gets.
  • Two transports, two data paths. A local server talks over standard input and output and never touches the network. A remote one is an HTTP service holding your credentials.
  • Three things a server can offer. Tools it can run, resources it can read, prompts it can reuse.
  • Your data goes where the host sends it. The server does not talk to the model. The host does, and that is the boundary worth understanding.

Which servers are worth connecting once this makes sense is in the MCP servers review.

What is an MCP server in AI?

An MCP server is a program that exposes data and actions to AI applications using the Model Context Protocol. It offers three things: tools the application can run, resources it can read, and prompt templates it can reuse. The application connects, asks what is available, and calls what it needs. One protocol replaces one integration per tool.

The comparison that makes it click is a driver. Before a shared standard, every application wrote its own code for every device. After, the device ships one driver and every application can use it. MCP is that idea applied to context, and the payoff is the same: the number of integrations stops being a multiplication.

MCP host, MCP client and MCP server: who is who

Three terms, used loosely everywhere, and mixing them up is why the data question feels murky.

The host is the AI application you actually open, for example a terminal agent or a desktop app. The client is a component inside that host which holds one dedicated connection to one server. The server is the program providing context. Connect four servers and your host creates four clients holding four connections, per the MCP architecture docs.

The important consequence: servers do not talk to each other, and they do not talk to the model. Each one answers its own client and knows nothing about the rest of your setup. Everything is joined in the host, which is also where your rules about what is allowed have to live.

Server also does not mean remote. A server can be a small process running on your laptop. The word describes the role in the conversation, not the location, and that trips up almost everyone at first.

Where your data goes when an agent calls a tool

Follow one request. You ask a question. The host decides a tool would help (function calling in API terms) and sends the call through the matching client to the server. The server does the work, against your database or your account or your files, and returns a result. The host then puts that result into the conversation with the model, because that is how the model can use it.

Data path from your systems through an MCP server and the host application to the model provideryour machine, if the server is localyour dataMCP serverlocal or remotehostyour AI appmodel providerraw accessresult onlyinto the promptthe server never talks to the model, the host does
Raw access stops at the server, which is why where the server runs decides who can see your data. What travels onward is the result, and the host is what puts that result into the prompt sent to your model provider.

So the honest answer has two halves. Your raw data goes wherever the server runs. The result goes wherever your host sends prompts, which is your model provider. A local server reading your files does not upload the files, but if the agent summarizes them, the part it read is in the prompt.

That distinction is the whole practical difference. It means the question "is this private" splits into two: where does the server run, and what does the result contain. Whoever set up the server chose the first, and the size of what you ask for decides the second.

There is a third path worth knowing. A server can ask the user for input or confirmation mid-request, rather than deciding alone. That is a protocol feature, not a courtesy, and it is the hook a well-built server uses to put a human in front of something irreversible.

Local or remote: two transports and what they mean

MCP defines two ways for a client and server to talk, and the choice decides where your credentials sit.

Stdio runs the server as a local process communicating over standard input and output. No network in the path, no port, nothing to expose. The credential lives on your machine in your config.

Streamable HTTP runs the server as a service reachable over HTTP, usually with bearer tokens or OAuth. Now the server is somewhere else, it can serve many clients, and somebody is operating a thing that holds credentials for your accounts.

Neither is better in general. Local wins on data boundaries and loses on setup across machines. Remote wins on maintenance and shared access, and asks you to trust an operator. What matters is knowing which one you picked, because plenty of people connect a hosted server and describe their setup as if it were local.

Tools, resources and prompts: what a server actually offers

Tools are functions the application can run: query this, create that, fetch the other. They carry a name, a description and an input schema, and the model picks among them by reading that text. This is why description quality is an engineering concern rather than documentation polish, which I go into in choosing a server for agents.

Resources are data the application can read: a file, a record, a schema. The canonical example in the docs is a database server that offers a query tool alongside a resource holding the schema, so the model can see the shape before writing a query.

Prompts are reusable templates, the packaged version of an instruction you would otherwise paste every time.

Discovery is part of the protocol: the client asks what exists before using anything, and the list can change while connected. Useful, and a reason to care what a server may add to itself after you approve it.

Is an MCP server just an API wrapper?

Often it wraps an API, yes. The difference is who the interface is for. A REST API is designed for a developer who reads documentation and writes code once. An MCP server is designed for a model that has to choose correctly with no documentation beyond the tool descriptions and no chance to ask a question.

That shifts the work. Naming, description text, schema constraints and error messages stop being polish and become the product, because they are the only signal the caller gets. A thin passthrough over an existing API usually makes a poor server for exactly this reason: it inherits an interface built for someone who could read the manual.

It also explains when to skip MCP entirely. If your agent always makes the same three calls in the same order, that is a script or a workflow, and a fixed pipeline will beat an agent choosing tools every time.

What MCP does not do

It does not decide how your application uses the model, or how it manages context. The protocol moves context between programs and stops there. Everything else, which model runs, what goes in the prompt, what needs approval, is your host's job and your decision.

It also does not grant safety. A server can expose a tool that deletes production, and the protocol will carry that call as happily as a read. Permissions belong in the system behind the server, which is why the database case is worth its own walkthrough in the database post.

And it does not make your list short. That part stays manual, and the discipline is in the servers list. The rest of what I keep connected is on the tools page.