MCP server exposing npmguard's pre-install risk gate to AI coding agents. Evaluates npm package risk before installation.
Single tool 'install_package' has a clear, action-oriented name and a well-written description (158 chars) that explains WHAT it does, WHEN to use it, and what the output means. Input schema is present with two parameters, both typed as strings with descriptions. However, the schema lacks critical constraints: no enum for the 'level' field in the verdict output, no documented output schema structure, and no error handling guidance. The description mentions 'ok/warn/block' verdicts but these are not formalized as enums in the input or output. Parameter descriptions are adequate but could specify format expectations (e.g., semver for version). No pagination, no batch operations, and no recovery guidance for 'block' verdicts.
Evaluate the risk of an npm package before installing it. Returns a structured verdict (ok/warn/block) with the signals that triggered. Use this BEFORE calling `npm install` for any package. If level is 'block', do not install without explicit user approval.
Output schema not documented. Description mentions 'structured verdict (ok/warn/block) with signals' but no formal schema is visible in code. LLMs cannot plan downstream actions without knowing the response structure.
Verdict levels ('ok', 'warn', 'block') are mentioned in description but not formalized as enums in the input schema or output. LLMs may hallucinate other values like 'error' or 'unknown'.
No error handling guidance. Description does not explain what to do if the package is not found, the registry is unreachable, or the version does not exist. LLMs have no recovery path.
Version parameter description lacks format specification. Should clarify that it accepts semver ranges, pinned versions, or 'latest'. Current text 'Optional pinned version' is ambiguous.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
No documentation of what 'signals' are returned or how to interpret them. Description mentions 'signals that triggered' but does not explain the signal types, severity levels, or remediation steps.