How Long to Learn MCP?
If you already write API clients, learning the Model Context Protocol takes a few days to about two weeks, which is the time to learn the eight pieces the 2026-07-28 specification adds on top of ordinary JSON APIs: the base protocol, versioning, the message patterns, tools, resources, prompts, stdio, and Streamable HTTP. A few days covers one server feature on stdio. The specification requires only the base protocol, versioning, and the message patterns of every implementation. About two weeks covers the rest of that list. That span is a reading-and-building estimate from the size of the list.
The protocol site defines MCP as an open standard for connecting an AI application to data sources, tools, and workflows. It names Claude, ChatGPT, Visual Studio Code, and Cursor as applications that already speak the same protocol.
What every implementation must support
The base protocol says every implementation must support the base protocol, versioning, and the message patterns. Other features are optional.
Messages are JSON-RPC 2.0. A request id is a string or integer, and it must not be null. A result includes resultType: "complete", or "input_required" when the server needs more information. A notification has no id, and the receiver must not reply.
The changelog removes the initialize handshake and protocol-level sessions that revision 2025-11-25 still had. Every request carries io.modelcontextprotocol/protocolVersion and io.modelcontextprotocol/clientCapabilities in _meta. A mismatch is UnsupportedProtocolVersion (-32022). Servers must implement server/discover. Clients may call it first to read supported versions and capabilities. On stdio, server/discover comes first. Any other error, or a timeout, means a legacy server, so use initialize. UnsupportedProtocolVersion means a modern server: choose a version it advertises.
Request and response is the ordinary call. A multi round-trip request returns "input_required", and the client retries with a new id, inputResponses, and any requestState. subscriptions/listen carries change notifications. Servers send results and notifications. They do not send JSON-RPC requests.
Host, client, and server
The architecture uses three roles. The host is the LLM application. It creates clients, applies security policy, and keeps the conversation. Each client talks to exactly one server and attaches the protocol version and capabilities to every request. The server exposes capabilities and runs as a local process or a remote service. It receives only the context the call needs. The conversation stays with the host.
That page says servers should be easy to build, because the host owns orchestration and each server stays narrow.
Tools, resources, and prompts
Server concepts names three building blocks.
Tools are model-controlled: the model discovers them and chooses when to call them. The tools specification uses tools/list and tools/call. A tool has a name and a JSON Schema inputSchema. With no $schema field, the dialect is JSON Schema 2020-12. An unknown tool or a malformed request is a JSON-RPC error. An execution failure, such as a bad date, is a result with isError: true. The tools page says a human should be able to deny the call. The specification's security principles say the host obtains explicit user consent before invoking a tool, and that a tool description is untrusted unless the server is trusted.
Resources are application-driven: the host chooses what enters context. The resources specification uses resources/list, resources/read, and resources/templates/list. Each resource has a URI, an optional MIME type, and text or base64 blob contents. A missing resource is JSON-RPC -32602. The server must not answer that case with an empty contents array. Templates are URI templates such as file:///{path}.
Prompts are user-controlled: a person invokes the template. The prompts specification uses prompts/list and prompts/get, and prompts/get returns messages that may embed a resource or link to one.
List results may be empty, may change over time, and may differ by the credentials on that request. They must not vary per connection, or as a side effect of another request.
Two transports
The transports page defines two standard bindings. Protocol meaning is the same on both.
stdio is a subprocess the client launches. The server reads newline-delimited JSON-RPC from stdin and writes it to stdout, and stdout carries nothing else. Logging may go to stderr. Metadata sits in _meta. Credentials come from the environment. The HTTP authorization framework is for HTTP transports.
Streamable HTTP is one POST endpoint. Each JSON-RPC message is its own HTTP POST. The response is one JSON object, or a Server-Sent Events stream scoped to that request. This revision removed the GET stream and protocol-level sessions. Change notifications use subscriptions/listen. HTTP transports should follow the authorization specification. A present, invalid Origin is HTTP 403.
What to leave until a server needs it
Elicitation is how a server asks the user for something mid-call, inside an input_required result. Form mode must not request passwords, API keys, access tokens, or payment credentials. URL mode is for those secrets, and the client shows the target host before navigating.
The deprecated registry marks roots, sampling, and logging deprecated in 2026-07-28. New implementations should not adopt them. The registry's path for sampling is a direct call to the model provider's API. For roots, pass directories as tool parameters, resource URIs, or server configuration. For logging, use stderr on stdio, or OpenTelemetry. HTTP+SSE is deprecated, and Streamable HTTP is the replacement. Tasks, Skills over MCP, and MCP Apps are optional extensions both sides opt into during capability negotiation.
A course from the spec
The list is short. The longer end of the range is choosing tools, resources, or prompts on purpose, and writing requests for 2026-07-28, the revision that removed the initialize handshake. Ailurn turns a prompt, a PDF, a GitHub repo, or a docs URL into a course you take in the same workspace. It does not watch a YouTube tutorial, and it does not issue an accredited certificate. Start from the AI course builder and ask for a course on the 2026-07-28 Model Context Protocol: host, client, and server; tools/list and tools/call; resources and prompts; a stateless request with _meta; stdio and Streamable HTTP; and consent before a tool runs.