MCP and the N×M Problem It Was Built to Kill
What the Model Context Protocol is, the integration problem it solves, and how its host, client, and server pieces fit together — before you write a line of code.
The Model Context Protocol from first principles to a production server — tools, resources, prompts, transports, and auth, in Python and TypeScript.
What the Model Context Protocol is, the integration problem it solves, and how its host, client, and server pieces fit together — before you write a line of code.
A hands-on first MCP server in Python and TypeScript: install the SDK, define one tool, run it over stdio, and call it with the MCP Inspector.
Past hello-world MCP tools: validate inputs with the schema, return structured output the host can parse, and fail in a way the model can recover from — in Python and TypeScript.
Expose data to the host as MCP resources — static and templated, addressed by URI — so the model can pull context in without calling a tool. In Python and TypeScript.
The third MCP primitive: prompts — parameterized templates a user deliberately invokes, like a slash command that expands into a well-formed request. In Python and TypeScript.
MCP isn't one-way. A server can ask the host's model to complete a prompt (sampling) and ask the user for structured input mid-task (elicitation). How both work, in Python and TypeScript.
Take an MCP server off the local machine and onto the network: the Streamable HTTP transport, sessions, and why it replaced SSE — with the Python one-liner and the TypeScript wiring.
A remote MCP server is a public endpoint. How MCP's OAuth 2.1 model works — the server as a resource server, the 401 discovery dance, and the token verifier you actually write — in Python and TypeScript.
Most people write servers, but writing a client is how you embed MCP in your own app, test a server, or provide the sampling and elicitation callbacks a server asks for. In Python and TypeScript.
Make an MCP server trustworthy: debug it with the Inspector, test it fast with an in-memory transport, dodge the stdout gotcha, and package or deploy it. In Python and TypeScript.
Everything in one server: two tools, a resource, and a prompt over shared state — a small task tracker that exercises the whole protocol, in Python and TypeScript.
Past the official SDK: what the standalone FastMCP 3.x framework adds, when to reach for it, and what the 2026 spec revisions — Tasks, MCP Apps, a stateless core — are bringing next.