A zero-dependency Model Context Protocol (MCP) server framework. Pure Python standard library only. No pip installs, no third-party packages, no network egress required.
mcp-zero provides 7 tools with basic schemas inferred from Python type hints and docstrings. All tools have descriptions (10-60 chars, below the 50-200 char LLM-optimized baseline). Input schemas are present and correctly typed (float, string, array, integer), but parameter descriptions are entirely absent, the schema only captures type, not semantic meaning. For example, 'stats' accepts 'numbers: list' with no description of what list items should contain or constraints. Error handling exists (MCPError for divide-by-zero, file validation) but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tool names are clear and action-oriented (add, divide, list_files, read_file), but descriptions are minimal and do not explain WHEN to use each tool or what downstream tools might need. Output schemas are not documented, callers must infer structure from examples.
Add two numbers.
Divide a by b. Errors if b is zero.
Return the text exactly as it was received.
List file and directory names under `subdir` (relative to the root).
Read and return the UTF-8 text contents of a file under the root.
Uppercase the text and repeat it `repeat` times.
Return count, sum, min, max, and mean of a list of numbers.
Parameter descriptions entirely absent. Schema captures type (float, string, array) but not semantic meaning, constraints, or format. E.g., 'stats' accepts 'numbers: list' with no hint that items should be numeric or what happens with empty lists.
Tool descriptions are too brief (10-60 chars vs. 50-200 char LLM-optimized baseline). 'Add two numbers' lacks context on when to use add vs. other arithmetic tools, what the return type is, or whether it handles overflow.
Output schemas not documented. Callers cannot infer what 'stats' returns (dict with count, sum, min, max, mean) without reading source code. LLMs must guess structure, risking field extraction errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only, but this is not declared in the tool definition, clients cannot optimize caching or retry logic without explicit hints.
Error messages lack recovery guidance. 'Cannot divide by zero' tells the LLM the operation failed but not what to do next (retry with different values, use a different tool, ask the user). Per pattern:recovery-guide, errors should guide the agent's next step.