MCP & Protocol Testing / Scenario
Review: One Tool, Four Smells
A teammate's first FastMCP tool: no type hints, a blocking sleep in an async function, exceptions returned as strings, and a 5000-row payload. Find every smell.
- Difficulty
- Medium
- Format
- Scenario
- Points
- 150
- Estimate
- 12 min
// MISSION BRIEF
Your Mission
A teammate opened a PR adding their first FastMCP tool. It works on their machine. It will not survive production, and as the reviewer you need to say exactly why, four times.
Read the tool and file your review. Decisions are weighted.
// FIRST CONTACT
Battle teaser
First artifact
orders_tool.py (the PR)
Untyped, undocumented parameters (q, status, limit) cause what in MCP terms?
- AA syntax error; FastMCP refuses untyped tools
- BThe generated input schema tells the calling LLM nothing about types or meaning, so it guesses (status='everything', limit='ten') and nothing validates the guess; typed hints plus a docstring ARE the tool's API contract
- CNothing; the model reads the source code anyway
- DSlower JSON parsing, but identical behavior
Answers, scoring, hints, and the full battle stay sealed.
// SKILL TAGS
fastmcpcode-reviewtool-designerror-handling