What MCP requires
An MCP tool definition has three required fields: name (identifier the model uses to call the tool), description (what it does, used for tool selection), and inputSchema (JSON Schema for the arguments). Optionally, annotations can carry hints (e.g., readOnly, destructive) for client UIs.
FAQ
- Is this exhaustive?
- No — it covers structural and common-mistake checks. The MCP spec evolves; for the canonical schema check, see the official spec repo.
- Why warn about missing property descriptions?
- The LLM picks tools based on the description, and fills arguments based on per-property descriptions. Empty descriptions force the model to guess from property names alone — usually fine for "city", risky for "format" or "mode".
- Why is <code>additionalProperties: false</code> recommended?
- Without it, the model can synthesize argument keys you didn't specify. Strict mode (closed schemas) makes the model stick to your contract. Some MCP clients require it; even when not strictly required, it's safer.
Common pitfalls
- Using
parametersinstead ofinputSchema(that\'s OpenAI\'s shape, not MCP). - Naming a tool with whitespace or special characters.
- Listing required properties that aren\'t in
properties. - Skipping per-property
description— the model picks tools and fills args based on these.