Study notes · one week · 4–5 h
MCP Apps and Skills
Core MCP gives an agent tools and data. Extensions add more: MCP Apps lets a server send a small interactive UI into the chat, and the Skills extension serves packaged know-how the agent loads when needed. Do the MCP path first.
The core material
| Resource | Role | Use it for |
|---|---|---|
| MCP Apps (ext-apps) | Spec and SDK | @modelcontextprotocol/ext-apps packages, examples and a reference host |
| SEP-1865: MCP Apps | Design record | Why UIs are resources and how hosts sandbox them |
| SEP-2640: Skills extension | Design record | How skills ride on MCP resources under skill:// with skills/list and skills/get |
01 / Days 1–3
MCP Apps: UIs from MCP servers
Return a chart or form from a tool call that the host renders inline, in a sandbox.
How it works
- A tool declares a ui:// resource that holds its HTML.
- The model calls the tool.
- The host fetches the resource and renders it in a sandboxed iframe.
- The host passes tool data to the UI, and the UI can call other tools back through the host.
Do (~2.5 h)
- MCP Apps overview
- Build an MCP App
- ext-apps examples: start from a React or vanilla template and run it in basic-host
- Add a small results table UI to the server you built in the MCP path, and test it in a host that supports Apps.
CheckpointOne of your tools returns a UI that renders inline and calls a second tool when you click a button.
02 / Days 4–5
Skills and Tasks over MCP
Serve Agent Skills from an MCP server, and handle long-running work with the Tasks extension.
Do (~2 h)
- Skills extension overview
- SEP-2640: skill files exposed as skill:// resources; the format itself follows the Agent Skills spec
- Agent Skills specification: SKILL.md frontmatter and progressive disclosure
- Tasks extension: polling-based long-running operations, moved out of core in 2026-07-28
- Extension support matrix: which hosts implement what
Real example: Flow Framework already serves agent skills through its MCP server with a read_skill tool; compare its approach with SEP-2640.
CheckpointA host lists a skill from your server with skills/list and loads its SKILL.md only when a task needs it.
Capstone
Extend your MCP-path server with both extensions. Done when every line holds:
- One tool returns an MCP App UI that works in at least one host
- The UI calls back to a server tool through the host
- The server serves at least one skill under skill://
- A long-running tool uses the Tasks extension instead of blocking
- I checked the support matrix and documented which hosts work