MCP server for querying the Alpine/Wolfi package database with tools for searching, analyzing dependencies, and exploring package relationships
Five tools with basic verb-noun naming (search_packages, package_info, package_dependencies, package_graph, compare_versions). All have descriptions (10-100 chars, below the 194-char baseline). Input schemas present with type definitions and required flags, but parameter descriptions are minimal (10-30 chars vs. 72-char baseline). No output schemas documented. No error handling guidance. Tools are read-only (low risk) but lack LLM-optimization for multi-step composition. Schema completeness is moderate; descriptions are sparse.
Compare versions of packages
List dependencies for a package
Query the package dependency graph using provides and requires relationships
Get detailed information about a specific package
Search for packages in the Alpine package database
Parameter descriptions are minimal (10-30 chars). LLMs cannot infer meaning from names alone. E.g., 'query' in search_packages lacks context on partial-match behavior; 'depth' in package_graph lacks default/range guidance.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., does search_packages return package IDs, names, versions? Does package_graph return dependency counts?
No error handling guidance. If a package is not found, what does the tool return? Does it fail with a 404, return an empty list, or suggest alternatives? LLMs need recovery hints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
package_graph 'query_type' parameter lacks enum constraint. Free-form string invites hallucinated values. Should declare enum: ['requires', 'provides', 'depends_on', 'required_by', 'what_provides'].
Tool descriptions are under 100 chars (vs. 194-char baseline). Lack context on WHEN to use each tool vs. similar ones. E.g., when should an LLM call package_dependencies vs. package_graph?