Creating MCPs

Creating MCPs: Safe, Observable, Bounded Servers for the Enterprise — the fifth course, a hands-on, measured follow-on to the Foundations course .

Do the Foundations course first. This course assumes it — it leans on §14–15 (tool calling and the tool-use loop), §16–17 (sandboxing), §18 (MCP by hand) and §21 (security), and does not re-teach them. If those aren’t familiar, start with Foundations .

Foundations §18 built an MCP server by hand and ended on “in production, reach for the official SDK.” This course starts there, on the current protocol (2026-07-28) and the Python SDK v2, and asks the questions the quickstarts skip. Its examples are the systems a SOC or IT-operations team actually wires agents into: a CMDB in Postgres and a SIEM in OpenSearch, with personas who may see different things and a planted intrusion to find. An MCP server is three things at once — an interface for a model reader, a trust boundary, and a shared resource with an operating envelope — and the course measures its way to a default for all three: catalogs and discovery, restrictive vs permissive tools, identity and enterprise rules, per-caller limits, performance, the OWASP MCP Top 10, and audit. Labs are reactive marimo notebooks; the estate runs on a laptop or a shared lab server.

-1 The Problem and the Thesis Goal: understand what this course is for, set up the estate you will work in for the rest of it, and take a first look at that estate as three … 01 The Current Protocol and a First Server Goal: build your first real MCP server, a read-only CMDB server, with the official Python SDK v2, on the current protocol (2026-07-28). Along the way … 02 The Host Side Goal: build the other end of the protocol, a host: the application that starts MCP servers, hands their tools to gpt-oss-120b, runs the tool calls the … 03 Catalogs and Discovery Goal: give a model what it needs to ask good questions of the CMDB and the SIEM, and measure the difference. You’ll build the two common answers side … 04 Searching Logs and Incidents Goal: build the SIEM server’s real tools: incidents, aggregations and log search over OpenSearch. Three habits run through all of them: every query … 05 The Permission Dial: Restrictive vs Permissive Tools Goal: give the same persona’s access to a model four ways, from “run any SQL” to “only these questions”, and measure what each one costs and risks: … 06 Designing Tools for a Model Reader Goal: make the restrictive tools from Units 3-5 easier for a model to use correctly, without changing a line of what they do. You’ll: serve the same … 07 Identity, Least Privilege and Enterprise Rules Goal: turn the single-persona servers of Units 3-6 into shared servers that know who is calling and act as that person all the way down. You’ll: issue … 08 Resource Management: Many Callers, Finite Backends Goal: put Unit 7’s shared servers inside an operating envelope, so that many agents calling at once can’t exhaust the backends, and one agent stuck in … 09 Performance and Scale Goal: run Unit 8’s servers as several replicas, and find out what that buys and what it breaks. You’ll: measure the two transports against each other, … 10 Attacking and Defending MCP Status: in progress. This unit’s defences, servers and lab are complete. The negative cases, one per OWASP category, are placeholders that the course … 11 Observability, Audit and Testing Goal: know what the gateway did, for whom, and why, and know when a change breaks it. You’ll: carry one trace across the client, the SDK and the … 12 The Measured Default (Capstone) Goal: put everything the course built behind one endpoint, use it to work a real incident from alert to containment proposal, and decide, with … 13 References & Further Reading The specifications, standards and documentation this course is built on, grouped by topic, with the unit that leans on each. Where the course makes a … 14 E1. Backend APIs with Approvals Goal: let the capstone gateway carry out the step it proposed, through backend APIs that fail the way real ones do, without ever doing it twice, doing … 15 E2. The Local Systems Server Goal: give an agent controlled access to a host under investigation: who logged in, what is running, what it talks to, what will start it again, and … 16 E3. Full OAuth for Remote Servers Goal: let a host that has never seen your server connect to it the way a real deployment does: find the issuer, register, send a person to consent, …
Last modified October 10, 2026