---
title: "What is MCP? The Model Context Protocol explained | TauX"
description: "Host, client and server; why prompts, resources and tools differ by who decides rather than read versus write; and what the 2026-07-28 revision removed."
url: "https://taux.io/en-US/what-is-mcp"
locale: "en-US"
alternates:
  ja-JP: "https://taux.io/ja-JP/what-is-mcp"
  ko-KR: "https://taux.io/ko-KR/what-is-mcp"
  zh-Hans-CN: "https://taux.io/zh-Hans-CN/what-is-mcp"
  zh-Hant-TW: "https://taux.io/zh-Hant-TW/what-is-mcp"
---

# Model Context Protocol

MCP is **one wiring standard** for connecting AI applications to outside data and tools. This page covers the three roles, the three things a server offers, and what the 2026 revision threw out. 

Written against revision 2026-07-28 

## 01 — In one sentence

MCP lets any AI application connect to any data source the same way. 

Model Context Protocol. Anthropic introduced it in 2024, **and since December 2025 it has not been Anthropic's** — the protocol was donated to the Agentic AI Foundation (Linux Foundation, co-founded with Block and OpenAI), and is now governed by the community. 

## 02 — The problem it solves

Four AI applications, and five things to connect them to: Google Drive, GitHub, a database, Slack, an internal API. 

Without a shared protocol

4 × 5 = 20

Every application-times-source pair is written separately. One more application is five more integrations; one more source is four.

With one

4 + 5 = 9

Each application implements "be a client" once. Each source implements "be a server" once.

This is the **N×M problem**, and MCP's entire value is one sentence: **any MCP client can talk to any MCP server**. USB is the same story — before it, every peripheral brought its own connector. 

## 03 — The three roles

Three roles, and **the first two are what everyone conflates**. When people say "MCP client" they usually mean Claude Desktop — which is the host. 

Clients live **inside** the host, one per server. Arrows always start at the client. 

Host

The AI application itself. Claude Desktop, VS Code, Claude Code. It holds the model, the conversation and the permissions. **The host is the application**.

Client

A connector **inside** the host, one per server. Not an application — a part of one. VS Code talking to two servers has two clients.

Server

The program offering tools and data. It may run on your machine or somewhere else. It **cannot see your conversation, and cannot see other servers** — that isolation is deliberate.

## 04 — What a server offers

Three things, and the difference between them is **not** read versus write. That is the intuition almost everyone arrives with, and it is wrong. 

The real difference is **who decides to use it**. Three situations, three different answers: 

 I want the AI to read my file I want the AI to open a ticket I want to run a review process I already have 

**Resource** — the application decides

You drag a document in, or the host works out that this question needs that file attached. The decision belongs to the **application**, not the model. The model simply receives the content. 

Typically: file contents, git history, a database schema. 

**Tool** — the model decides

You say "file this bug as a ticket" and the model works out which function to call and with what arguments. The decision belongs to the **model**. 

The key point: **a read-only lookup can be a tool**, as long as the model is the one deciding to run it. Which is why "read equals resource, write equals tool" does not hold. 

**Prompt** — the user decides

You pick "code review" from a menu, or type a slash command. The decision is **yours** — the model will not reach for it on its own. 

Typically: slash commands, template menus. 

├─ One difference across all three: who presses the button. 

## 05 — How it travels

Two standard transports. **stdio**: the server is a subprocess, talking over standard input and output. **Streamable HTTP**: each message is an HTTP POST. **This is a difference in how, not in where**: a server running on your own machine can speak Streamable HTTP just as well. 

Worth knowing that **their security properties differ completely**: stdio inherits your user permissions and has no auth layer at all; the HTTP path wants OAuth and origin validation. And "local server" means "runs on your machine" — it says nothing about whether it reaches the internet. A local server can call a remote API perfectly happily. 

## 06 — What this revision changed

Servers no longer remember anything. 

2026-07-28 is the largest revision since MCP appeared, and it breaks things. A client used to handshake with a server to establish a connection, after which both remembered each other. **There is now no handshake and no connection phase** — every request carries its own version and identity, and the server forgets it as soon as it has answered. 

The direction changed too: **a server does not ask you a question**. It returns "I need this" and ends the request; the client gets the answer and **sends a fresh one**. 

Seeing any of these elsewhere means that material is out of date

*   ├─ `initialize` handshake
*   ├─ `Mcp-Session-Id` header, and protocol-level sessions
*   ├─ a server **initiating** a request to a client
*   └─ `ping`, `logging/setLevel` as methods

The third one needs spelling out, because it reads as "servers can no longer ask for anything". **What went is the mechanism for initiating a request, not the ability to ask.** A server used to push a request across; now it can only say "I need this" in a response and stop, and the client picks it up from there. 

So the features where a server asks a client for something **are all still there, just routed differently** — including **Elicitation** (asking the user for a piece of information) and **Sampling** (borrowing the host's model; the direction is the opposite of the intuitive one, so it trips people up more than anything else here). 

Separately: **Roots** (telling a server which directories are in scope), **Sampling** and **Logging** are **marked deprecated**. They still work today, but do not treat them as the architecture to learn. Deprecation and the mechanism change above are separate things: one is about how a message travels, the other about whether the feature stays at all. 

## 07 — Which revision this page describes

An MCP version **is a date**. It marks the last day a breaking change was made, not a release cadence. So for any MCP material you come across, the date tells you how current it is — **which is the single most useful thing on this page**. 

2024-11-05 → 2025-03-26 → 2025-06-18 → 2025-11-25 → 2026-07-28 

Statements with a shelf life

*   The previous section holds for 2026-07-28 and no other revision.
*   The three deprecated features will not actually be removed before some revision after 2027-07-28.
*   **"The protocol no longer needs a connection phase" is not "deployed servers are all stateless."** A great many servers in the wild still speak the older revision, and that gap will persist.

Next

*   [How to actually build with it → Claude Skills guide](https://taux.io/en-US/claude-skills-guide)
*   [Another new standard worth knowing → LLMs.txt](https://taux.io/en-US/what-is-llms-txt)
