01 What students build
MCP is the USB port between LLMs and your tools. Students wire @playwright/mcp into their client, ask in English for a negative login test against app.vwo.com, and watch the model call browser_navigate, browser_type and browser_click for real, then emit vwo-login.spec.ts. Then they flip sides and write server.py, a FastMCP server with an add tool, three resources and two QA prompt templates.
English → Browser
Playwright MCP exposes 21+ browser_* tools. The LLM plans the journey, snapshots the page for refs, and drives clicks and typing itself.
Exploration → Spec
After the live run, the model converts what it did into a committed Playwright TypeScript spec with role-based locators and assertions.
Your First Server
A FastMCP DataServer with a tool, static + dynamic resources, and prompt templates: the three MCP primitives in 60 lines of Python.
02 Architecture
03 Live demo (simulated with sample data)
This is a UI walkthrough with pre-baked sample data so you can feel both sides of MCP without a client installed. In the course you run the real thing: npx @playwright/mcp in your MCP client, and your own server.py under MCP Inspector.
04 Inputs & outputs
What goes in
- A plain-English test ask: "verify invalid login shows the error banner"
- Playwright MCP registered in your client config (npx @playwright/mcp)
- Your own server.py: tools, resources and prompts in FastMCP
- MCP Inspector pointed at the server for interactive poking
What comes out
- A live browser session driven step by step by the LLM
- Runnable vwo-login.spec.ts with role-based locators
- Screenshot evidence (vwo-login-error.png)
- Tool results, resource JSON and rendered prompt templates
- A mental model of MCP tools vs resources vs prompts