MCP server for querying NuGet package information including versions, dependencies, and public API contracts
Three tools with clear verb-noun naming (GetPackageVersions, GetPackageDependencies, GetPackageContracts). All have descriptions (34-72 chars, within baseline range). Input schemas present with types and descriptions for all parameters. However, output schemas are undocumented, LLMs cannot infer what fields to expect from responses. No error handling guidance, no pagination support despite potential for large result sets, and no parameter constraints (enums, ranges). GetPackageVersions accepts 'top' parameter but lacks min/max bounds. Missing per-parameter descriptions for some fields (e.g., 'top' lacks guidance on typical values). No indication of idempotency or side effects. Composition is sound, each tool has one responsibility, but output documentation is a critical gap for agent planning.
Get public interfaces and classes contracts from a NuGet package as markdown
Get package dependencies for a specific package name and version
Get all available versions of a NuGet package from the configured feed
Output schemas undocumented. LLMs cannot infer response structure (field names, types, nested objects). GetPackageVersions returns IEnumerable<NugetPackageVersion> but no schema visible; GetPackageContracts returns string but markdown structure is opaque.
No pagination or result limits documented. GetPackageVersions accepts 'top' parameter but lacks min/max bounds (baseline: 1 - 100). Large result sets risk context window exhaustion. No guidance on default behavior when 'top' omitted.
No error handling guidance. Tool descriptions do not explain failure modes (e.g., 'package not found', 'invalid version', 'feed unreachable') or recovery steps. LLMs cannot self-correct on errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Parameter 'top' in GetPackageVersions lacks constraint documentation. No min/max bounds, no guidance on typical values. LLMs may pass invalid values (0, negative, or absurdly large numbers).
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent, but this is not declared in the schema. Agents cannot infer safety properties.