@cyanheads/nist-nvd-mcp-server 0.1.19 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -1
- package/CLAUDE.md +4 -1
- package/README.md +2 -1
- package/changelog/0.2.x/0.2.0.md +26 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/nvd-get-cve.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/nvd-get-cve.tool.js +6 -1
- package/dist/mcp-server/tools/definitions/nvd-get-cve.tool.js.map +1 -1
- package/dist/mcp-server/tools/schemas/full-cve.d.ts.map +1 -1
- package/dist/mcp-server/tools/schemas/full-cve.js +7 -2
- package/dist/mcp-server/tools/schemas/full-cve.js.map +1 -1
- package/dist/services/nvd-cve/nvd-cve-service.d.ts +13 -0
- package/dist/services/nvd-cve/nvd-cve-service.d.ts.map +1 -1
- package/dist/services/nvd-cve/nvd-cve-service.js +31 -6
- package/dist/services/nvd-cve/nvd-cve-service.js.map +1 -1
- package/dist/services/nvd-http/nvd-http-client.d.ts +13 -1
- package/dist/services/nvd-http/nvd-http-client.d.ts.map +1 -1
- package/dist/services/nvd-http/nvd-http-client.js +7 -6
- package/dist/services/nvd-http/nvd-http-client.js.map +1 -1
- package/dist/services/nvd-source/nvd-source-service.d.ts +41 -0
- package/dist/services/nvd-source/nvd-source-service.d.ts.map +1 -0
- package/dist/services/nvd-source/nvd-source-service.js +131 -0
- package/dist/services/nvd-source/nvd-source-service.js.map +1 -0
- package/dist/services/nvd-source/types.d.ts +19 -0
- package/dist/services/nvd-source/types.d.ts.map +1 -0
- package/dist/services/nvd-source/types.js +6 -0
- package/dist/services/nvd-source/types.js.map +1 -0
- package/manifest.json +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** nist-nvd-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
4
|
+
**Version:** 0.2.0
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
@@ -238,6 +238,9 @@ src/
|
|
|
238
238
|
nvd-cpe/
|
|
239
239
|
nvd-cpe-service.ts # CPE dictionary search and normalization
|
|
240
240
|
types.ts # Raw CPE response + normalized CpeRecord
|
|
241
|
+
nvd-source/
|
|
242
|
+
nvd-source-service.ts # Contributor dictionary — resolves source identifiers to names
|
|
243
|
+
types.ts # Raw source dictionary response types
|
|
241
244
|
mcp-server/
|
|
242
245
|
tools/definitions/
|
|
243
246
|
nvd-search-cves.tool.ts # nvd_search_cves
|
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** nist-nvd-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
4
|
+
**Version:** 0.2.0
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
@@ -238,6 +238,9 @@ src/
|
|
|
238
238
|
nvd-cpe/
|
|
239
239
|
nvd-cpe-service.ts # CPE dictionary search and normalization
|
|
240
240
|
types.ts # Raw CPE response + normalized CpeRecord
|
|
241
|
+
nvd-source/
|
|
242
|
+
nvd-source-service.ts # Contributor dictionary — resolves source identifiers to names
|
|
243
|
+
types.ts # Raw source dictionary response types
|
|
241
244
|
mcp-server/
|
|
242
245
|
tools/definitions/
|
|
243
246
|
nvd-search-cves.tool.ts # nvd_search_cves
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/nist-nvd-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/nist-nvd-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -294,6 +294,7 @@ The Dockerfile defaults to HTTP transport, stateless session mode, and logs to `
|
|
|
294
294
|
| `src/services/nvd-http` | NVD HTTP client with rate-limit pacing and retry. |
|
|
295
295
|
| `src/services/nvd-cve` | CVE service — search, fetch-by-ID, CPE audit, change history, normalization. |
|
|
296
296
|
| `src/services/nvd-cpe` | CPE service — dictionary search and normalization. |
|
|
297
|
+
| `src/services/nvd-source` | Source service — resolves NVD contributor identifiers to their published names. |
|
|
297
298
|
| `tests/` | Unit and integration tests mirroring `src/`. |
|
|
298
299
|
|
|
299
300
|
## Development guide
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "weaknesses[].source and references[].source now resolve NVD's contributor identifiers to published names (e.g. CVE, CISA-ADP) instead of raw GUIDs — a breaking value-format change with no schema change to warn consumers on upgrade."
|
|
3
|
+
breaking: true
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.0 — 2026-07-31
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`NvdSourceService`** (`src/services/nvd-source/`) — fetches NVD's source dictionary (`/rest/json/source/2.0`) once per process, cached behind a 24-hour TTL with single-flighted loads so a burst of tool calls shares one upstream request. ([#46](https://github.com/cyanheads/nist-nvd-mcp-server/issues/46))
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
|
|
15
|
+
- **`weaknesses[].source` and `references[].source` resolve to NVD's published contributor name** instead of the raw source identifier — `af854a3a-2127-422b-91ae-364da2661108` now emits `CVE`, `134c704f-9b21-4f2e-91b3-4a467353bcc0` emits `CISA-ADP`. Email-form identifiers (`security@apache.org`) are left untouched, and an identifier absent from the dictionary passes through as its raw value. Resolution happens in `normalizeCve()`, so both `nvd_get_cve` and `nvd_audit_cpe` inherit it. **⚠️ Breaking:** the raw GUID is not preserved in any sibling field — a consumer string-matching the old value breaks on upgrade with no schema change to warn it. ([#46](https://github.com/cyanheads/nist-nvd-mcp-server/issues/46))
|
|
16
|
+
- **`nvd_get_cve` and `nvd_audit_cpe`'s `source` field descriptions** now say the value is the resolved contributor name and that an unresolvable identifier passes through as-is.
|
|
17
|
+
|
|
18
|
+
## Fixed
|
|
19
|
+
|
|
20
|
+
- **A dictionary lookup could stall a CVE fetch for the full CVE retry budget** — `NvdSourceService` loaded `source/2.0` through the same client used for CVE requests, so an unreachable dictionary spent every retry attempt and timeout the keyed CVE budget allows. `NvdHttpClient.get` gained an optional per-request `NvdRequestBudget` (`maxRetries`, `timeoutMs`), and the source service now loads on a bounded budget (`maxRetries: 0`, `timeoutMs: 3_000`) instead of inheriting the caller's.
|
|
21
|
+
- **A caller-cancelled dictionary load was recorded as an upstream outage** — cancelling the load (the caller's own `ctx.signal` aborting) set the same 5-minute failure TTL as a real NVD outage, degrading every subsequent caller to raw identifiers for that window. The load now checks `ctx.signal.aborted` before treating a failure as an outage and leaves the cache untouched on cancellation.
|
|
22
|
+
- **`nvd_get_cve` with `brief: true` resolved source names it then discarded** — brief rows carry no `source` field, so resolving one spent an upstream dictionary request (on a cold cache) for values `toBriefCve` drops. `nvd_get_cve` now passes `resolveSources: false` for brief fetches, and `nvd_search_cves` never resolves at all.
|
|
23
|
+
|
|
24
|
+
## Dependencies
|
|
25
|
+
|
|
26
|
+
- `@biomejs/biome` ^2.5.5 → ^2.5.6
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { nvdAuditCpe, nvdGetCve, nvdGetCveHistory, nvdSearchCpes, nvdSearchCves,
|
|
|
11
11
|
import { initNvdCpeService } from './services/nvd-cpe/nvd-cpe-service.js';
|
|
12
12
|
import { initNvdCveService } from './services/nvd-cve/nvd-cve-service.js';
|
|
13
13
|
import { initNvdHttpClient } from './services/nvd-http/nvd-http-client.js';
|
|
14
|
+
import { initNvdSourceService } from './services/nvd-source/nvd-source-service.js';
|
|
14
15
|
await createApp({
|
|
15
16
|
name: 'nist-nvd-mcp-server',
|
|
16
17
|
title: 'nist-nvd-mcp-server',
|
|
@@ -29,6 +30,7 @@ await createApp({
|
|
|
29
30
|
initNvdHttpClient(cfg.apiKey, cfg.requestTimeoutMs);
|
|
30
31
|
initNvdCveService(core.config, core.storage);
|
|
31
32
|
initNvdCpeService(core.config, core.storage);
|
|
33
|
+
initNvdSourceService(core.config, core.storage);
|
|
32
34
|
},
|
|
33
35
|
});
|
|
34
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAEnF,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC;IAC/E,SAAS,EAAE,CAAC,cAAc,CAAC;IAC3B,OAAO,EAAE,EAAE;IACX,YAAY,EACV,4FAA4F;QAC5F,qGAAqG;QACrG,qFAAqF;QACrF,qFAAqF;QACrF,8EAA8E;QAC9E,6EAA6E;QAC7E,uEAAuE;IAEzE,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpD,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nvd-get-cve.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/nvd-get-cve.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AASjE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAehC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"nvd-get-cve.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/nvd-get-cve.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AASjE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAehC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiOpB,CAAC"}
|
|
@@ -109,7 +109,12 @@ export const nvdGetCve = tool('nvd_get_cve', {
|
|
|
109
109
|
const ids = Array.isArray(input.cveIds) ? input.cveIds : [input.cveIds];
|
|
110
110
|
ctx.log.info('Fetching CVEs', { count: ids.length, brief: input.brief });
|
|
111
111
|
const service = getNvdCveService();
|
|
112
|
-
const result = await service.fetchById(ids, {
|
|
112
|
+
const result = await service.fetchById(ids, {
|
|
113
|
+
includeReferences: input.includeReferences,
|
|
114
|
+
allLanguages: input.allLanguages,
|
|
115
|
+
// Brief rows carry no `source` field, so resolving contributor names for them emits nothing.
|
|
116
|
+
resolveSources: !input.brief,
|
|
117
|
+
}, ctx);
|
|
113
118
|
ctx.enrich({
|
|
114
119
|
requested: result.requested,
|
|
115
120
|
returned: result.returned,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nvd-get-cve.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/nvd-get-cve.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nvd-get-cve.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/nvd-get-cve.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full-cve.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/schemas/full-cve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AA2B3C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"full-cve.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/schemas/full-cve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AA2B3C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+F1B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;;CAM9B,CAAC"}
|
|
@@ -53,7 +53,9 @@ export const CveRecordSchema = z.object({
|
|
|
53
53
|
weaknesses: z
|
|
54
54
|
.array(z
|
|
55
55
|
.object({
|
|
56
|
-
source: z
|
|
56
|
+
source: z
|
|
57
|
+
.string()
|
|
58
|
+
.describe('Who classified the weakness, as the contributor name NVD publishes for it (e.g. "CVE", "CISA-ADP"). Contributors NVD identifies by email address keep that address (e.g. "nvd@nist.gov"); an identifier absent from NVD\'s contributor dictionary passes through as its raw value.'),
|
|
57
59
|
cweIds: z
|
|
58
60
|
.array(z.string().describe('One CWE identifier.'))
|
|
59
61
|
.describe('CWE identifiers for this source.'),
|
|
@@ -87,7 +89,10 @@ export const CveRecordSchema = z.object({
|
|
|
87
89
|
.array(z
|
|
88
90
|
.object({
|
|
89
91
|
url: z.string().describe('Reference URL.'),
|
|
90
|
-
source: z
|
|
92
|
+
source: z
|
|
93
|
+
.string()
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Who contributed the reference, as the contributor name NVD publishes for it (e.g. "CVE", "CISA-ADP"). Contributors NVD identifies by email address keep that address (e.g. "security@apache.org"); an identifier absent from NVD\'s contributor dictionary passes through as its raw value.'),
|
|
91
96
|
tags: z
|
|
92
97
|
.array(z.string().describe('One classification tag.'))
|
|
93
98
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full-cve.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/schemas/full-cve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACzE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACpF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAChF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;CACjF,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC/D,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvF,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvF,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACrF,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACtF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAChE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACrE,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC;SACE,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC/C,CAAC;SACD,QAAQ,CAAC,gCAAgC,CAAC,CAC9C;SACA,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;SACxD,QAAQ,CAAC,4CAA4C,CAAC;IACzD,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7C,iDAAiD,CAClD;IACD,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC;SACE,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"full-cve.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/schemas/full-cve.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,12 @@ export interface CveRecordOptions {
|
|
|
13
13
|
allLanguages: boolean;
|
|
14
14
|
/** Include the `references` array on the record. */
|
|
15
15
|
includeReferences: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve source identifiers to contributor names. Defaults to true. Pass false from a caller
|
|
18
|
+
* that trims every `source` field back off the record it receives — resolving for it can cost
|
|
19
|
+
* an upstream dictionary request on a cold cache, for values nothing ends up emitting.
|
|
20
|
+
*/
|
|
21
|
+
resolveSources?: boolean;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Character budget for the description snippet on a brief row. NVD descriptions open by naming
|
|
@@ -74,6 +80,13 @@ export interface CveHistoryParams {
|
|
|
74
80
|
}
|
|
75
81
|
export declare class NvdCveService {
|
|
76
82
|
constructor(_config: AppConfig, _storage: StorageService);
|
|
83
|
+
/**
|
|
84
|
+
* The source-name resolver for a page of records, skipped when the page is empty or the caller
|
|
85
|
+
* emits no `source` field — so a not-found lookup, a clean audit, and a brief-mode fetch never
|
|
86
|
+
* spend a rate-limit slot on the dictionary. The dictionary itself is cached, so a warm cache
|
|
87
|
+
* costs no request at all.
|
|
88
|
+
*/
|
|
89
|
+
private sourceResolver;
|
|
77
90
|
/**
|
|
78
91
|
* Fetch one or more CVEs by ID (up to 100).
|
|
79
92
|
* Returns full records. Throws `invalid_cve_id_format` for malformed IDs (HTTP 404 from NVD)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nvd-cve-service.d.ts","sourceRoot":"","sources":["../../../src/services/nvd-cve/nvd-cve-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"nvd-cve-service.d.ts","sourceRoot":"","sources":["../../../src/services/nvd-cve/nvd-cve-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { notFound, validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { getNvdHttpClient, isNvdRequestRejected } from '../nvd-http/nvd-http-client.js';
|
|
8
|
+
import { getNvdSourceService, passthroughSourceNames, } from '../nvd-source/nvd-source-service.js';
|
|
8
9
|
const CVE_ID_REGEX = /^CVE-\d{4}-\d{4,}$/i;
|
|
9
10
|
/**
|
|
10
11
|
* Derive a CVSS v2.0 severity label from the numeric base score.
|
|
@@ -121,7 +122,7 @@ function normalizeCve(raw, opts) {
|
|
|
121
122
|
const cvssScores = extractCvssScores(raw.metrics);
|
|
122
123
|
const severity = deriveTopSeverity(cvssScores);
|
|
123
124
|
const weaknesses = (raw.weaknesses ?? []).map((w) => ({
|
|
124
|
-
source: w.source
|
|
125
|
+
source: w.source ? opts.resolveSource(w.source) : '',
|
|
125
126
|
cweIds: (w.description ?? [])
|
|
126
127
|
.filter((d) => d.lang === 'en' && d.value)
|
|
127
128
|
.map((d) => d.value),
|
|
@@ -165,7 +166,7 @@ function normalizeCve(raw, opts) {
|
|
|
165
166
|
...(opts.includeReferences && {
|
|
166
167
|
references: (raw.references ?? []).map((r) => ({
|
|
167
168
|
url: r.url ?? '',
|
|
168
|
-
...(r.source && { source: r.source }),
|
|
169
|
+
...(r.source && { source: opts.resolveSource(r.source) }),
|
|
169
170
|
...(r.tags?.length && { tags: r.tags }),
|
|
170
171
|
})),
|
|
171
172
|
}),
|
|
@@ -261,6 +262,18 @@ const SEVERITY_ORDER = {
|
|
|
261
262
|
export class NvdCveService {
|
|
262
263
|
// biome-ignore lint/complexity/noUselessConstructor: preserves framework init-pattern signature
|
|
263
264
|
constructor(_config, _storage) { }
|
|
265
|
+
/**
|
|
266
|
+
* The source-name resolver for a page of records, skipped when the page is empty or the caller
|
|
267
|
+
* emits no `source` field — so a not-found lookup, a clean audit, and a brief-mode fetch never
|
|
268
|
+
* spend a rate-limit slot on the dictionary. The dictionary itself is cached, so a warm cache
|
|
269
|
+
* costs no request at all.
|
|
270
|
+
*/
|
|
271
|
+
sourceResolver(items, opts, ctx) {
|
|
272
|
+
if (items.length === 0 || opts.resolveSources === false) {
|
|
273
|
+
return Promise.resolve(passthroughSourceNames);
|
|
274
|
+
}
|
|
275
|
+
return getNvdSourceService().getResolver(ctx);
|
|
276
|
+
}
|
|
264
277
|
/**
|
|
265
278
|
* Fetch one or more CVEs by ID (up to 100).
|
|
266
279
|
* Returns full records. Throws `invalid_cve_id_format` for malformed IDs (HTTP 404 from NVD)
|
|
@@ -295,7 +308,8 @@ export class NvdCveService {
|
|
|
295
308
|
...ctx.recoveryFor('cve_not_found'),
|
|
296
309
|
});
|
|
297
310
|
}
|
|
298
|
-
const
|
|
311
|
+
const resolveSource = await this.sourceResolver(items, opts, ctx);
|
|
312
|
+
const cves = items.map((item) => normalizeCve(item, { ...opts, resolveSource }));
|
|
299
313
|
// Identify any requested IDs not returned by NVD.
|
|
300
314
|
const returnedIds = new Set(cves.map((c) => c.cveId.toUpperCase()));
|
|
301
315
|
const missingIds = cveIds.filter((id) => !returnedIds.has(id.toUpperCase()));
|
|
@@ -354,7 +368,16 @@ export class NvdCveService {
|
|
|
354
368
|
const items = (response.vulnerabilities ?? [])
|
|
355
369
|
.map((v) => v.cve)
|
|
356
370
|
.filter((c) => !!c);
|
|
357
|
-
|
|
371
|
+
/**
|
|
372
|
+
* Brief rows carry neither `weaknesses` nor `references`, so nothing a search result emits
|
|
373
|
+
* holds a source identifier — resolving one here would buy a page of discarded lookups and,
|
|
374
|
+
* on a cold cache, an upstream request this surface has no use for.
|
|
375
|
+
*/
|
|
376
|
+
const cves = items.map((item) => toBriefCve(normalizeCve(item, {
|
|
377
|
+
includeReferences: false,
|
|
378
|
+
allLanguages: false,
|
|
379
|
+
resolveSource: passthroughSourceNames,
|
|
380
|
+
}), filterVersion));
|
|
358
381
|
const totalResults = response.totalResults ?? 0;
|
|
359
382
|
ctx.log.info('CVE search completed', { totalResults, returned: cves.length });
|
|
360
383
|
return {
|
|
@@ -440,10 +463,12 @@ export class NvdCveService {
|
|
|
440
463
|
return (SEVERITY_ORDER[top.label.toUpperCase()] ?? -1) >= minLevel;
|
|
441
464
|
});
|
|
442
465
|
}
|
|
443
|
-
const
|
|
466
|
+
const auditOpts = {
|
|
444
467
|
includeReferences: true,
|
|
445
468
|
allLanguages: params.allLanguages ?? false,
|
|
446
|
-
}
|
|
469
|
+
};
|
|
470
|
+
const resolveSource = await this.sourceResolver(items, auditOpts, ctx);
|
|
471
|
+
const cves = items.map((item) => normalizeCve(item, { ...auditOpts, resolveSource }));
|
|
447
472
|
ctx.log.info('CPE audit completed', { totalResults, returned: cves.length });
|
|
448
473
|
return {
|
|
449
474
|
cves,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nvd-cve-service.js","sourceRoot":"","sources":["../../../src/services/nvd-cve/nvd-cve-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nvd-cve-service.js","sourceRoot":"","sources":["../../../src/services/nvd-cve/nvd-cve-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,18 @@ export declare function nvdRequestRejected(endpoint: string, detail?: string): M
|
|
|
24
24
|
* `cause` without casting back off `unknown`.
|
|
25
25
|
*/
|
|
26
26
|
export declare function isNvdRequestRejected(err: unknown): err is McpError;
|
|
27
|
+
/**
|
|
28
|
+
* Per-call overrides of the client's default effort. A secondary lookup the caller can proceed
|
|
29
|
+
* without must not spend the same retry and timeout budget as the record it decorates: on the
|
|
30
|
+
* default budget an unreachable endpoint stretches the calling tool by the full product of
|
|
31
|
+
* attempts and timeout, and holds the shared pacing queue for the same span.
|
|
32
|
+
*/
|
|
33
|
+
export interface NvdRequestBudget {
|
|
34
|
+
/** Retry attempts beyond the first. Defaults to the key-dependent budget. */
|
|
35
|
+
maxRetries?: number;
|
|
36
|
+
/** Per-attempt timeout in milliseconds. Defaults to the configured request timeout. */
|
|
37
|
+
timeoutMs?: number;
|
|
38
|
+
}
|
|
27
39
|
export declare class NvdHttpClient {
|
|
28
40
|
private readonly apiKey;
|
|
29
41
|
private readonly timeoutMs;
|
|
@@ -39,7 +51,7 @@ export declare class NvdHttpClient {
|
|
|
39
51
|
* Retry wraps the pacing queue rather than sitting inside it, so every attempt — the first
|
|
40
52
|
* try and each retry — waits its turn and counts against the rate budget.
|
|
41
53
|
*/
|
|
42
|
-
get<T>(endpoint: string, params: Record<string, string | number | boolean | undefined>, ctx: Context): Promise<T>;
|
|
54
|
+
get<T>(endpoint: string, params: Record<string, string | number | boolean | undefined>, ctx: Context, budget?: NvdRequestBudget): Promise<T>;
|
|
43
55
|
/** Enqueue one request attempt, paced behind the inter-request gap and any active 403 backoff. */
|
|
44
56
|
private schedule;
|
|
45
57
|
private drainNext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nvd-http-client.d.ts","sourceRoot":"","sources":["../../../src/services/nvd-http/nvd-http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAEL,QAAQ,EAKT,MAAM,+BAA+B,CAAC;AA2CvC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAO9E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAElE;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,aAAa,CAAK;IAC1B,mFAAmF;IACnF,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM;IAKzD;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EACH,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC7D,GAAG,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"nvd-http-client.d.ts","sourceRoot":"","sources":["../../../src/services/nvd-http/nvd-http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAEL,QAAQ,EAKT,MAAM,+BAA+B,CAAC;AA2CvC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAO9E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAElE;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,aAAa,CAAK;IAC1B,mFAAmF;IACnF,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM;IAKzD;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EACH,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC7D,GAAG,EAAE,OAAO,EACZ,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,CAAC,CAAC;IAyBb,kGAAkG;IAClG,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;YAmBH,SAAS;IA6EvB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,YAAY;CASrB;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAErF;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
|
|
@@ -80,8 +80,9 @@ export class NvdHttpClient {
|
|
|
80
80
|
* Retry wraps the pacing queue rather than sitting inside it, so every attempt — the first
|
|
81
81
|
* try and each retry — waits its turn and counts against the rate budget.
|
|
82
82
|
*/
|
|
83
|
-
get(endpoint, params, ctx) {
|
|
83
|
+
get(endpoint, params, ctx, budget) {
|
|
84
84
|
let attemptIndex = 0;
|
|
85
|
+
const timeoutMs = budget?.timeoutMs ?? this.timeoutMs;
|
|
85
86
|
return withRetry(() => {
|
|
86
87
|
/**
|
|
87
88
|
* NVD's Retry-After is a full 30s window and the MCP client request deadline is 60s, so
|
|
@@ -89,10 +90,10 @@ export class NvdHttpClient {
|
|
|
89
90
|
* all. Keyless has no budget to wait with; that arm fails fast and names NVD_API_KEY.
|
|
90
91
|
*/
|
|
91
92
|
const mayWaitOutRateLimit = attemptIndex++ === 0 && !!this.apiKey;
|
|
92
|
-
return this.schedule(() => this.fetchOnce(endpoint, params, ctx, mayWaitOutRateLimit));
|
|
93
|
+
return this.schedule(() => this.fetchOnce(endpoint, params, ctx, mayWaitOutRateLimit, timeoutMs));
|
|
93
94
|
}, {
|
|
94
95
|
operation: `NvdHttpClient.get:${endpoint}`,
|
|
95
|
-
maxRetries: this.apiKey ? MAX_RETRIES_WITH_KEY : MAX_RETRIES_WITHOUT_KEY,
|
|
96
|
+
maxRetries: budget?.maxRetries ?? (this.apiKey ? MAX_RETRIES_WITH_KEY : MAX_RETRIES_WITHOUT_KEY),
|
|
96
97
|
baseDelayMs: 2_000,
|
|
97
98
|
signal: ctx.signal,
|
|
98
99
|
});
|
|
@@ -123,7 +124,7 @@ export class NvdHttpClient {
|
|
|
123
124
|
else
|
|
124
125
|
task();
|
|
125
126
|
}
|
|
126
|
-
async fetchOnce(endpoint, params, ctx, mayWaitOutRateLimit) {
|
|
127
|
+
async fetchOnce(endpoint, params, ctx, mayWaitOutRateLimit, timeoutMs) {
|
|
127
128
|
// A queued attempt can wait out a rate-limit window; don't spend a slot once the caller is gone.
|
|
128
129
|
if (ctx.signal.aborted)
|
|
129
130
|
throw timeout('NVD request cancelled by caller.');
|
|
@@ -133,7 +134,7 @@ export class NvdHttpClient {
|
|
|
133
134
|
// sent nothing, so charging it a slot would delay the next live caller for no upstream cost.
|
|
134
135
|
this.lastRequestAt = Date.now();
|
|
135
136
|
const controller = new AbortController();
|
|
136
|
-
const timer = setTimeout(() => controller.abort(),
|
|
137
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
137
138
|
// Chain caller's signal
|
|
138
139
|
const onAbort = () => controller.abort();
|
|
139
140
|
ctx.signal.addEventListener('abort', onAbort, { once: true });
|
|
@@ -148,7 +149,7 @@ export class NvdHttpClient {
|
|
|
148
149
|
if (err.name === 'AbortError') {
|
|
149
150
|
if (ctx.signal.aborted)
|
|
150
151
|
throw timeout('NVD request cancelled by caller.');
|
|
151
|
-
throw timeout(`NVD request timed out after ${
|
|
152
|
+
throw timeout(`NVD request timed out after ${timeoutMs}ms.`);
|
|
152
153
|
}
|
|
153
154
|
throw serviceUnavailable(`NVD API network error: ${err.message}`, { endpoint }, { cause: err });
|
|
154
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nvd-http-client.js","sourceRoot":"","sources":["../../../src/services/nvd-http/nvd-http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,+FAA+F;AAC/F,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAEvD,iFAAiF;AACjF,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAErC,wFAAwF;AACxF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAErD,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,MAAe;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,MAAe;IAClE,OAAO,eAAe,CACpB,MAAM;QACJ,CAAC,CAAC,mDAAmD,MAAM,EAAE;QAC7D,CAAC,CAAC,iDAAiD,EACrD,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAChE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,uBAAuB,CAAC;AACjF,CAAC;
|
|
1
|
+
{"version":3,"file":"nvd-http-client.js","sourceRoot":"","sources":["../../../src/services/nvd-http/nvd-http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,+FAA+F;AAC/F,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAEvD,iFAAiF;AACjF,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAErC,wFAAwF;AACxF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAErD,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,MAAe;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,MAAe;IAClE,OAAO,eAAe,CACpB,MAAM;QACJ,CAAC,CAAC,mDAAmD,MAAM,EAAE;QAC7D,CAAC,CAAC,iDAAiD,EACrD,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAChE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,uBAAuB,CAAC;AACjF,CAAC;AAeD,MAAM,OAAO,aAAa;IACP,MAAM,CAAqB;IAC3B,SAAS,CAAS;IAC3B,aAAa,GAAG,CAAC,CAAC;IAC1B,mFAAmF;IAC3E,YAAY,GAAG,CAAC,CAAC;IACjB,KAAK,GAAsB,EAAE,CAAC;IAC9B,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,MAA0B,EAAE,SAAiB;QACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CACD,QAAgB,EAChB,MAA6D,EAC7D,GAAY,EACZ,MAAyB;QAEzB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACtD,OAAO,SAAS,CACd,GAAG,EAAE;YACH;;;;eAIG;YACH,MAAM,mBAAmB,GAAG,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CACxB,IAAI,CAAC,SAAS,CAAI,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,EAAE,SAAS,CAAC,CACzE,CAAC;QACJ,CAAC,EACD;YACE,SAAS,EAAE,qBAAqB,QAAQ,EAAE;YAC1C,UAAU,EACR,MAAM,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,uBAAuB,CAAC;YACtF,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED,kGAAkG;IAC1F,QAAQ,CAAI,GAAqB;QACvC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,GAAG,EAAE;qBACF,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;qBACrB,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,EACD,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EACpD,IAAI,CAAC,YAAY,GAAG,GAAG,CACxB,CAAC;QAEF,IAAI,KAAK,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;YAClC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,QAAgB,EAChB,MAA6D,EAC7D,GAAY,EACZ,mBAA4B,EAC5B,SAAiB;QAEjB,iGAAiG;QACjG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAE1E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAEpE,6FAA6F;QAC7F,6FAA6F;QAC7F,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9D,wBAAwB;QACxB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9D,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBACrC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAAa,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACzC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,OAAO,CAAC,kCAAkC,CAAC,CAAC;gBAC1E,MAAM,OAAO,CAAC,+BAA+B,SAAS,KAAK,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,kBAAkB,CACtB,0BAA2B,GAAa,CAAC,OAAO,EAAE,EAClD,EAAE,QAAQ,EAAE,EACZ,EAAE,KAAK,EAAE,GAAY,EAAE,CACxB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,kBAAkB,CAAC,yBAAyB,QAAQ,CAAC,MAAM,GAAG,EAAE;gBACpE,QAAQ;gBACR,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,kBAAkB,CACtB,oFAAoF,CACrF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,kBAAkB,CACtB,kCAAkC,EAClC,EAAE,QAAQ,EAAE,EACZ,EAAE,KAAK,EAAE,GAAY,EAAE,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,QAAgB,EAAE,MAAqB;QAC1D,IAAI,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,oBAAoB,GAAG,IAAI,CAAC;YAC9C,OAAO,kBAAkB,CAAC,wCAAwC,MAAM,EAAE,EAAE;gBAC1E,MAAM,EAAE,sBAAsB;gBAC9B,QAAQ;gBACR,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,0KAA0K,sBAAsB,QAAQ,SAAS,IAAI;iBAC5N;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,QAAkB,EAAE,mBAA4B;QACrE,MAAM,SAAS,GAAG,oBAAoB,GAAG,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3D,uFAAuF;QACvF,2EAA2E;QAC3E,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;QAEnD,OAAO,WAAW,CAAC,wCAAwC,UAAU,IAAI,EAAE;YACzE,MAAM,EAAE,cAAc;YACtB,UAAU;YACV,SAAS,EAAE,mBAAmB;YAC9B,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,MAAM;oBACf,CAAC,CAAC,oCAAoC,mBAAmB,QAAQ,SAAS,4BAA4B,UAAU,wDAAwD;oBACxK,CAAC,CAAC,oCAAoC,sBAAsB,QAAQ,SAAS,yDAAyD,mBAAmB,QAAQ,SAAS,cAAc,UAAU,4BAA4B;aACjO;SACF,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ,CACd,QAAgB,EAChB,MAA6D;QAE7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YACpD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,+DAA+D;gBAC/D,IAAI,KAAK;oBAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,YAAY;QAClB,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,gCAAgC;AAEhC,IAAI,OAAkC,CAAC;AAEvC,MAAM,UAAU,iBAAiB,CAAC,MAA0B,EAAE,SAAiB;IAC7E,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Service for the NVD source dictionary (`/rest/json/source/2.0`).
|
|
3
|
+
* Resolves the identifiers NVD stamps on weaknesses and references to their published
|
|
4
|
+
* contributor names, cached so the dictionary costs one upstream request a day rather than one
|
|
5
|
+
* per record, per reference, or per call.
|
|
6
|
+
* @module services/nvd-source/nvd-source-service
|
|
7
|
+
*/
|
|
8
|
+
import type { Context } from '@cyanheads/mcp-ts-core';
|
|
9
|
+
import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
|
|
10
|
+
import type { StorageService } from '@cyanheads/mcp-ts-core/storage';
|
|
11
|
+
/**
|
|
12
|
+
* Maps an NVD source identifier to its published contributor name, returning the identifier
|
|
13
|
+
* unchanged when the dictionary holds no entry for it.
|
|
14
|
+
*/
|
|
15
|
+
export type SourceNameResolver = (identifier: string) => string;
|
|
16
|
+
/** Returns every identifier untouched — for surfaces that emit no `source` field at all. */
|
|
17
|
+
export declare const passthroughSourceNames: SourceNameResolver;
|
|
18
|
+
export declare class NvdSourceService {
|
|
19
|
+
private names;
|
|
20
|
+
private expiresAt;
|
|
21
|
+
private inFlight;
|
|
22
|
+
constructor(_config: AppConfig, _storage: StorageService);
|
|
23
|
+
/**
|
|
24
|
+
* A resolver over the cached dictionary, loading it first when the cache is cold or stale.
|
|
25
|
+
*
|
|
26
|
+
* The dictionary is one small document every record resolves against, and it turns over by a
|
|
27
|
+
* handful of entries a year, so it is fetched on the cadence of {@link CACHE_TTL_MS} rather
|
|
28
|
+
* than per CVE, per reference, or per call. Concurrent first callers share the single in-flight
|
|
29
|
+
* request: a burst of tool calls must not stampede the endpoint.
|
|
30
|
+
*/
|
|
31
|
+
getResolver(ctx: Context): Promise<SourceNameResolver>;
|
|
32
|
+
/**
|
|
33
|
+
* Load the dictionary, degrading to whatever is already cached when NVD cannot serve it. A CVE
|
|
34
|
+
* lookup must not start failing because a secondary metadata endpoint is down, so this never
|
|
35
|
+
* throws — an unresolvable identifier reaching the caller raw is the documented fallback.
|
|
36
|
+
*/
|
|
37
|
+
private load;
|
|
38
|
+
}
|
|
39
|
+
export declare function initNvdSourceService(config: AppConfig, storage: StorageService): void;
|
|
40
|
+
export declare function getNvdSourceService(): NvdSourceService;
|
|
41
|
+
//# sourceMappingURL=nvd-source-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nvd-source-service.d.ts","sourceRoot":"","sources":["../../../src/services/nvd-source/nvd-source-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIrE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhE,4FAA4F;AAC5F,eAAO,MAAM,sBAAsB,EAAE,kBAA+C,CAAC;AAiCrF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAA2C;gBAG/C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAExD;;;;;;;OAOG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAW5D;;;;OAIG;YACW,IAAI;CA4DnB;AAMD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAErF;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Service for the NVD source dictionary (`/rest/json/source/2.0`).
|
|
3
|
+
* Resolves the identifiers NVD stamps on weaknesses and references to their published
|
|
4
|
+
* contributor names, cached so the dictionary costs one upstream request a day rather than one
|
|
5
|
+
* per record, per reference, or per call.
|
|
6
|
+
* @module services/nvd-source/nvd-source-service
|
|
7
|
+
*/
|
|
8
|
+
import { getNvdHttpClient } from '../nvd-http/nvd-http-client.js';
|
|
9
|
+
/** Returns every identifier untouched — for surfaces that emit no `source` field at all. */
|
|
10
|
+
export const passthroughSourceNames = (identifier) => identifier;
|
|
11
|
+
/**
|
|
12
|
+
* `source/2.0` caps `resultsPerPage` at 1,000 and answers anything above it with the same HTTP
|
|
13
|
+
* 404 it uses for a rejected parameter. The dictionary held 496 contributors as of this writing
|
|
14
|
+
* and has grown by 55–60 a year since 2024, so one page covers it well past the point where
|
|
15
|
+
* paging would earn its complexity. A truncated page is logged, and the identifiers it left out
|
|
16
|
+
* fall through as raw values like any other unknown.
|
|
17
|
+
*/
|
|
18
|
+
const SOURCE_PAGE_SIZE = 1000;
|
|
19
|
+
/** How long a loaded dictionary is served before the next lookup refetches it. */
|
|
20
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
21
|
+
/**
|
|
22
|
+
* How long a failed load is remembered. Short enough that a transient outage self-heals inside a
|
|
23
|
+
* session, long enough that a sustained one cannot cost an upstream request per tool call — the
|
|
24
|
+
* keyless NVD budget is 5 requests per 30 seconds, and a CVE lookup must not compete with a
|
|
25
|
+
* secondary metadata endpoint for it.
|
|
26
|
+
*/
|
|
27
|
+
const FAILURE_TTL_MS = 5 * 60 * 1000;
|
|
28
|
+
/**
|
|
29
|
+
* Effort spent on the dictionary, deliberately a fraction of what a CVE request gets. This runs
|
|
30
|
+
* inside the calling tool, ahead of a record the caller already has in hand, and shares the one
|
|
31
|
+
* pacing queue every NVD request passes through — so on the default budget an unreachable
|
|
32
|
+
* `source/2.0` holds a CVE lookup for every attempt that budget allows, each with the full
|
|
33
|
+
* request timeout and a backoff between them, with every queued CVE request stuck behind it. One
|
|
34
|
+
* attempt on a short deadline reaches the raw-identifier fallback in seconds instead, and
|
|
35
|
+
* {@link FAILURE_TTL_MS} keeps the next call from paying even that.
|
|
36
|
+
*/
|
|
37
|
+
const SOURCE_REQUEST_BUDGET = { maxRetries: 0, timeoutMs: 3_000 };
|
|
38
|
+
export class NvdSourceService {
|
|
39
|
+
names = new Map();
|
|
40
|
+
expiresAt = 0;
|
|
41
|
+
inFlight;
|
|
42
|
+
// biome-ignore lint/complexity/noUselessConstructor: preserves framework init-pattern signature
|
|
43
|
+
constructor(_config, _storage) { }
|
|
44
|
+
/**
|
|
45
|
+
* A resolver over the cached dictionary, loading it first when the cache is cold or stale.
|
|
46
|
+
*
|
|
47
|
+
* The dictionary is one small document every record resolves against, and it turns over by a
|
|
48
|
+
* handful of entries a year, so it is fetched on the cadence of {@link CACHE_TTL_MS} rather
|
|
49
|
+
* than per CVE, per reference, or per call. Concurrent first callers share the single in-flight
|
|
50
|
+
* request: a burst of tool calls must not stampede the endpoint.
|
|
51
|
+
*/
|
|
52
|
+
async getResolver(ctx) {
|
|
53
|
+
if (Date.now() >= this.expiresAt) {
|
|
54
|
+
this.inFlight ??= this.load(ctx).finally(() => {
|
|
55
|
+
this.inFlight = undefined;
|
|
56
|
+
});
|
|
57
|
+
this.names = await this.inFlight;
|
|
58
|
+
}
|
|
59
|
+
const names = this.names;
|
|
60
|
+
return (identifier) => names.get(identifier) ?? identifier;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Load the dictionary, degrading to whatever is already cached when NVD cannot serve it. A CVE
|
|
64
|
+
* lookup must not start failing because a secondary metadata endpoint is down, so this never
|
|
65
|
+
* throws — an unresolvable identifier reaching the caller raw is the documented fallback.
|
|
66
|
+
*/
|
|
67
|
+
async load(ctx) {
|
|
68
|
+
try {
|
|
69
|
+
const response = await getNvdHttpClient().get('source/2.0', { resultsPerPage: SOURCE_PAGE_SIZE }, ctx, SOURCE_REQUEST_BUDGET);
|
|
70
|
+
const sources = response.sources ?? [];
|
|
71
|
+
const names = new Map();
|
|
72
|
+
for (const source of sources) {
|
|
73
|
+
if (!source.name)
|
|
74
|
+
continue;
|
|
75
|
+
for (const identifier of source.sourceIdentifiers ?? []) {
|
|
76
|
+
/**
|
|
77
|
+
* An email identifier already names its contributor, so it is never indexed and always
|
|
78
|
+
* resolves to itself — `security@apache.org` stays the value a reader recognizes rather
|
|
79
|
+
* than becoming `Apache Software Foundation`.
|
|
80
|
+
*/
|
|
81
|
+
if (identifier.includes('@'))
|
|
82
|
+
continue;
|
|
83
|
+
names.set(identifier, source.name);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const totalResults = response.totalResults ?? sources.length;
|
|
87
|
+
if (totalResults > sources.length) {
|
|
88
|
+
ctx.log.warning('NVD source dictionary page is incomplete — the rest resolve as raw values', {
|
|
89
|
+
returned: sources.length,
|
|
90
|
+
totalResults,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
this.expiresAt = Date.now() + CACHE_TTL_MS;
|
|
94
|
+
ctx.log.debug('NVD source dictionary loaded', {
|
|
95
|
+
sources: sources.length,
|
|
96
|
+
identifiers: names.size,
|
|
97
|
+
});
|
|
98
|
+
return names;
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
/**
|
|
102
|
+
* The caller that opened this load can also cancel it, and its walking away says nothing
|
|
103
|
+
* about whether NVD can serve the dictionary. Leaving the cache cold lets the next call try
|
|
104
|
+
* again, rather than committing every caller to raw identifiers for the whole failure
|
|
105
|
+
* window on the strength of an unrelated cancellation.
|
|
106
|
+
*/
|
|
107
|
+
if (ctx.signal.aborted) {
|
|
108
|
+
ctx.log.debug('NVD source dictionary load cancelled with its caller — cache left cold');
|
|
109
|
+
return this.names;
|
|
110
|
+
}
|
|
111
|
+
ctx.log.warning('NVD source dictionary unavailable — source identifiers pass through raw', {
|
|
112
|
+
error: err.message,
|
|
113
|
+
});
|
|
114
|
+
this.expiresAt = Date.now() + FAILURE_TTL_MS;
|
|
115
|
+
// Keep any dictionary already in hand; a stale name beats an opaque identifier.
|
|
116
|
+
return this.names;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// --- Init/accessor pattern ---
|
|
121
|
+
let _service;
|
|
122
|
+
export function initNvdSourceService(config, storage) {
|
|
123
|
+
_service = new NvdSourceService(config, storage);
|
|
124
|
+
}
|
|
125
|
+
export function getNvdSourceService() {
|
|
126
|
+
if (!_service) {
|
|
127
|
+
throw new Error('NvdSourceService not initialized — call initNvdSourceService() in setup()');
|
|
128
|
+
}
|
|
129
|
+
return _service;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=nvd-source-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nvd-source-service.js","sourceRoot":"","sources":["../../../src/services/nvd-source/nvd-source-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Raw response shapes for the NVD source dictionary API (`/rest/json/source/2.0`).
|
|
3
|
+
* @module services/nvd-source/types
|
|
4
|
+
*/
|
|
5
|
+
/** One contributor entry from the NVD source dictionary. */
|
|
6
|
+
export interface RawNvdSource {
|
|
7
|
+
contactEmail?: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
/** Every identifier NVD attributes to this contributor — opaque GUIDs alongside email forms. */
|
|
10
|
+
sourceIdentifiers?: string[];
|
|
11
|
+
}
|
|
12
|
+
/** Raw NVD source dictionary response. */
|
|
13
|
+
export interface RawNvdSourceResponse {
|
|
14
|
+
resultsPerPage?: number;
|
|
15
|
+
sources?: RawNvdSource[];
|
|
16
|
+
startIndex?: number;
|
|
17
|
+
totalResults?: number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/nvd-source/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/nvd-source/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "nist-nvd-mcp-server",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "Search and audit CVEs by keyword, severity, CWE, CISA KEV status, and CPE via the NIST National Vulnerability Database. STDIO or Streamable HTTP.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "cyanheads"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/nist-nvd-mcp-server",
|
|
3
3
|
"mcpName": "io.github.cyanheads/nist-nvd-mcp-server",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "Search and audit CVEs by keyword, severity, CWE, CISA KEV status, and CPE via the NIST National Vulnerability Database. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"zod": "^4.4.3"
|
|
96
96
|
},
|
|
97
97
|
"devDependencies": {
|
|
98
|
-
"@biomejs/biome": "^2.5.
|
|
98
|
+
"@biomejs/biome": "^2.5.6",
|
|
99
99
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
100
100
|
"@types/node": "^26.1.2",
|
|
101
101
|
"depcheck": "^1.4.7",
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/nist-nvd-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.2.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/nist-nvd-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "0.
|
|
16
|
+
"version": "0.2.0",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
56
56
|
"identifier": "@cyanheads/nist-nvd-mcp-server",
|
|
57
57
|
"runtimeHint": "bun",
|
|
58
|
-
"version": "0.
|
|
58
|
+
"version": "0.2.0",
|
|
59
59
|
"packageArguments": [
|
|
60
60
|
{
|
|
61
61
|
"type": "positional",
|