echelongraph-mcp 2.5.0 → 2.5.1
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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/index.js +4 -3
- package/package.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,12 @@ with a provenance attestation by the release workflow of
|
|
|
6
6
|
[github.com/echelongraph/echelongraph-mcp](https://github.com/echelongraph/echelongraph-mcp),
|
|
7
7
|
from the commit tagged `v<version>`.
|
|
8
8
|
|
|
9
|
+
## 2.5.1 — 2026-10-04
|
|
10
|
+
|
|
11
|
+
- `search_cves` sends its search text in the `X-EG-Search` request header instead of the URL
|
|
12
|
+
query string, so the text is kept out of request URLs, which the hosting platform's tracing
|
|
13
|
+
records (#1983). Severity, minimum CVSS, sort and limit stay in the query string.
|
|
14
|
+
|
|
9
15
|
## 2.5.0 — 2026-10-04
|
|
10
16
|
|
|
11
17
|
- Four prompts (`triage_cve`, `kev_weekly_brief`, `am_i_affected`, `sbom_review`) and three
|
package/README.md
CHANGED
|
@@ -626,7 +626,7 @@ Where each tool's input travels:
|
|
|
626
626
|
| Input | Where it is sent |
|
|
627
627
|
|---|---|
|
|
628
628
|
| A CVE ID (`get_cve`, `cve_exposure`, `epss_history`, `cve_intel`, `vendor_advisories_for_cve`), a CWE ID and page (`get_cwe`), a vendor and advisory ID (`get_vendor_advisory`) | The URL path. |
|
|
629
|
-
| `search_cves`:
|
|
629
|
+
| `search_cves`: `search` | The `X-EG-Search` request header, never the URL. Its severity, minimum CVSS, sort and limit go in the query string. |
|
|
630
630
|
| `search_vendor_advisories`: `query` | The `X-EG-Advisory-Search` request header, never the URL. Its vendor, severity, CVE filter, limit and offset go in the query string. |
|
|
631
631
|
| `check_affected`: `product`, `version`, `ecosystem`, `package` | The `X-EG-Product`, `X-EG-Version`, `X-EG-Ecosystem` and `X-EG-Package` request headers, never the URL. |
|
|
632
632
|
| `kev_recent`: `since`, `until`, `ransomware`, `vendor`, `limit`, `cursor` | The `X-EG-Since`, `X-EG-Until`, `X-EG-Ransomware`, `X-EG-Vendor`, `X-EG-Limit` and `X-EG-Cursor` request headers, never the URL. |
|
package/dist/index.js
CHANGED
|
@@ -521,9 +521,10 @@ async function cveSummary() {
|
|
|
521
521
|
async function searchCVEs(a) {
|
|
522
522
|
const tool = "search_cves";
|
|
523
523
|
try {
|
|
524
|
+
// #1983: the free-text search travels percent-encoded in X-EG-Search, never in the URL. Cloud
|
|
525
|
+
// Run keeps every request URL in its trace spans for 30 days and no request header; core-backend
|
|
526
|
+
// (cve/handler.go listSearchTerm) reads the header first and decodes it with url.PathUnescape.
|
|
524
527
|
const q = new URLSearchParams();
|
|
525
|
-
if (a.search)
|
|
526
|
-
q.set("search", a.search);
|
|
527
528
|
if (a.severity)
|
|
528
529
|
q.set("severity", a.severity);
|
|
529
530
|
if (a.min_cvss !== undefined)
|
|
@@ -531,7 +532,7 @@ async function searchCVEs(a) {
|
|
|
531
532
|
if (a.sort)
|
|
532
533
|
q.set("sort", a.sort);
|
|
533
534
|
q.set("limit", String(a.limit ?? 20));
|
|
534
|
-
const r = await api(`/api/v1/public/cves?${q.toString()}
|
|
535
|
+
const r = await api(`/api/v1/public/cves?${q.toString()}`, a.search ? { headers: { "X-EG-Search": encodeURIComponent(a.search) } } : undefined);
|
|
535
536
|
if (!r.ok)
|
|
536
537
|
return failed(tool, r);
|
|
537
538
|
const head = okHead(tool, r.status);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echelongraph-mcp",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.1",
|
|
4
4
|
"mcpName": "io.echelongraph/echelongraph-mcp",
|
|
5
5
|
"description": "EchelonGraph CVE and internet-exposure data as an MCP server: CVEs with EchelonGraph multi-source scores, CISA-KEV and EPSS, plus a per-CVE internet-exposure footprint derived from Shodan data. Shodan data is owned by Shodan, which holds its copyright (© Shodan). Free and keyless, for Claude, Cursor and any MCP client.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
]
|
|
18
18
|
}
|
|
19
19
|
],
|
|
20
|
-
"version": "2.5.
|
|
20
|
+
"version": "2.5.1",
|
|
21
21
|
"remotes": [
|
|
22
22
|
{
|
|
23
23
|
"type": "streamable-http",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
{
|
|
29
29
|
"registryType": "npm",
|
|
30
30
|
"identifier": "echelongraph-mcp",
|
|
31
|
-
"version": "2.5.
|
|
31
|
+
"version": "2.5.1",
|
|
32
32
|
"transport": {
|
|
33
33
|
"type": "stdio"
|
|
34
34
|
},
|