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?

  1. AA syntax error; FastMCP refuses untyped tools
  2. 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
  3. CNothing; the model reads the source code anyway
  4. DSlower JSON parsing, but identical behavior
Answers, scoring, hints, and the full battle stay sealed.

// SKILL TAGS

fastmcpcode-reviewtool-designerror-handling