Lab 8 — Skills and MCP tools
← Back to labs index

Lab 8 — Skills and MCP tools

Start from: app/ at tag lab07-done, with the Lab 0 setup loaded (see Working in app/).

Goal: extend the harness two ways:

Part A: a release-notes skill

Read assets/.claude/skills/release-notes/SKILL.md. Only its name and description sit in context until it’s used; the body loads on demand. allowed-tools limits what it may run.

Copy-Item -Recurse -Force ..\lab08-skills-tools\assets\* .
git add .claude ; git commit -m "chore: add release-notes skill"
cp -R ../lab08-skills-tools/assets/. .
git add .claude && git commit -m "chore: add release-notes skill"

Restart claude, then invoke it explicitly:

/release-notes

…or implicitly, in a new session:

What changed since tag lab04-done? Write it up as release notes.

Observe: the skill is picked up from its description, it runs git log and groups commits by Conventional Commit type (your Lab 5 convention pays off here), and it updates CHANGELOG.md without committing. Review and commit it yourself.

Part B: an MCP server for orders

orders_mcp.py is a ~100-line, dependency-free MCP server over stdio. It exposes list_orders(status) and get_order(order_id) with synthetic orders. Register it for this project only (local scope), using an absolute path:

claude mcp add orders -- python (Resolve-Path ..\lab08-skills-tools\orders_mcp.py).Path
claude mcp list
claude mcp add orders -- python "$(cd ../lab08-skills-tools && pwd)/orders_mcp.py"
claude mcp list

Start claude, run /mcp to see the server and its tools, then:

Using the orders tools, find pending orders that we cannot fulfil with the current stock in catalog.csv. Write RESTOCK.md listing each SKU, quantity needed, stock on hand and shortfall.

Observe: tool calls named mcp__orders__list_orders / mcp__orders__get_order, the approval prompt for a new tool, and how Claude joins MCP data with local files. Check RESTOCK.md against catalog.csv yourself. Did it correctly ignore the large cancelled order?

When finished, unregister the server so it doesn’t follow you into later labs:

claude mcp remove orders

Record

Checkpoint

Commit CHANGELOG.md and RESTOCK.md if you’re keeping them:

git tag lab08-done