MCP server for querying PyPI package information, searching packages, retrieving release versions, and download statistics
Four tools with basic verb-noun naming (get_*, search_) and minimal descriptions (10-40 chars). All tools have input schemas with type definitions and parameter descriptions, meeting baseline requirements. However, descriptions are too brief to guide LLM selection effectively, they lack context on WHEN to use each tool, dependencies, or return value structure. No output schemas documented. Error handling returns generic error dicts without recovery guidance. Tools lack idempotency hints, destructive/readonly annotations, and pagination support for search results.
Get detailed information about a package
Get all release versions of a package
Get download statistics for a package
Search for packages
Descriptions are too brief (10-40 chars) to guide LLM tool selection. Pattern requires 50-200 chars explaining WHAT, WHEN, and WHAT IT RETURNS.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing return structure (e.g., does search_packages return name/version/description or id/title/summary?).
search_packages returns unbounded list with no pagination (limit/offset/next_cursor). Large result sets blow context window; pattern requires pagination support.
Error handling returns generic {'error': '...'} dicts without recovery guidance. Pattern requires actionable errors: 'Package not found. Try search_packages() with partial name.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
Tools lack readonly/idempotent annotations. LLMs cannot distinguish safe-to-retry calls from destructive ones without explicit hints.