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 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`: the search text, severity, minimum CVSS, sort and limit | The URL query string. |
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.0",
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.0",
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.0",
31
+ "version": "2.5.1",
32
32
  "transport": {
33
33
  "type": "stdio"
34
34
  },