← All drillsBuild an MCP Server
What you'll be able to do- ✓Explain why a tool needs an explicit, served contract instead of being a local function call
- ✓Distinguish a tool (an action) from a resource (readable context) and refactor a wrongly-modeled one
- ✓Build MCP tools, a resource, and a parameterized prompt template over a real backend
- ✓Run the same server over two different transports without changing its tool logic
- ✓Hand-bridge an MCP client to a real LLM's tool-use loop and complete a multi-turn task end to end
- ✓Name the LLM / agent runtime / MCP client / MCP server layers in a real tool-use loop and identify the one line that actually executes an action
- ✓Return a structured, model-usable error instead of letting a bad call crash the server
Expose a real backend's data and actions to any MCP-compatible agent or client, the way a team would actually make its systems reachable by an AI assistant it doesn't control the code of.
⌁ Claude Desktop and Claude Code connect to external tools through MCP as their primary extension mechanism; Anthropic also publishes reference MCP servers for GitHub, the filesystem, and several databases.
Start this internshipCreate an account to unlock the 10 sections, the workbench, and AskThili.
BeginSections
1. Build an MCP Server
🔒 locked2. Lesson 1 — The model-context problem
🔒 locked3. Lesson 2 — Stand up the shop
🔒 locked4. Lesson 3 — The first tool
🔒 locked5. Lesson 4 — Tool vs. resource
🔒 locked6. Lesson 5 — A second tool, and a prompt
🔒 locked7. Lesson 6 — Transport
🔒 locked8. Lesson 7 — Connect a real client
🔒 locked9. Lesson 8 — The architecture you just built
🔒 locked10. Lesson 9 — Contracts and errors
🔒 lockedDig deeper
🔗Model Context Protocol specification (Anthropic, 2024)
spec🔗thili-ai/thilimcp — the reference implementation you build in this course
code