MCP server for searching and retrieving CVE (Common Vulnerabilities and Exposures) information from the NVD (National Vulnerability Database) API with caching and rate limiting support.
The CVE Intelligence Server defines 2 tools with strong naming and well-structured schemas. Both tools follow verb_noun naming conventions (search_cves, get_cve) and have clear, action-oriented descriptions. Input parameters are properly typed with JSON Schema (including enums, format constraints, and ranges). However, the server lacks output schema documentation, error handling guidance for LLMs, and does not demonstrate recovery paths for common failure modes. The schema definitions are visible in the source code and properly formatted, but descriptions could be slightly more prescriptive about when to use each tool vs the alternative.
Get detailed information about a specific CVE by its ID. Returns full description, CVSS scores, affected products (CPEs), and references.
Search CVEs by keyword and optional filters. Returns matching CVE summaries with severity, scores, and descriptions.
Output schemas not documented for LLM consumption. While SearchCVEsOutput and GetCVEDetail types exist in code, the tool definitions do not include explicit output_schema fields describing what fields agents should expect.
No error recovery guidance. If search_cves returns no results or get_cve fails with 'CVE not found', there are no hints about fallback actions (e.g., 'Try a broader keyword' or 'Verify CVE ID format with pattern CVE-YYYY-NNNN').
Missing pagination documentation. search_cves accepts a 'limit' parameter but the description does not explain what happens when total_found exceeds the limit, or whether results are ranked/deterministic. No next_cursor or offset support visible.
Descriptions lack context about when to use each tool. E.g., search_cves vs get_cve distinction could be clearer: 'Use search_cves to find CVEs by vulnerability type; use get_cve when you already know the CVE ID.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
published_start and published_end parameters use RFC3339 format, which is correct, but descriptions do not provide timezone guidance. E.g., '2024-01-01T00:00:00Z (UTC) or 2024-01-01T00:00:00-05:00 (EST)' would reduce LLM confusion.