chore(deps): update dependency @brightdata/mcp to v2.11.1 - #469
Conversation
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
🔒 MCP Security Scan Results
|
a5747b8 to
f0ae7d1
Compare
3eddbeb to
674490c
Compare
|
@renovatebot rebase |
9172b66 to
69e9ae5
Compare
Triage: build-containers blocked by genuine upstream CVEsLocal Grype scan (DB 2026-04-27) of the 2.9.5 image surfaces these HIGH findings (severity-cutoff: high, only-fixed: true):
These are genuine upstream CVEs, not false positives. The fix requires Recommendation: Hold this bump until upstream brightdata-com/brightdata-mcp updates the MCP SDK pin. |
48a090d to
3bad57a
Compare
f64e5c5 to
7cc9963
Compare
7cc9963 to
36adf9a
Compare
36adf9a to
6a5f89a
Compare
a26436e to
3c61fb7
Compare
…n spec.yaml
Renovate version bumps fail the build-containers Grype gate when the bumped
package pins or caps a transitive dependency to a vulnerable version. Add an
optional dependency-override mechanism to the spec.yaml schema, plumbed into the
generated Dockerfile.
- npx: spec.overrides ([]{package, version, reason}) is injected as an npm
"overrides" block in the generated package.json before the npm install step.
- uvx: spec.constraints ([]{spec, reason}) is written to a uv overrides
requirements file and passed to "uv tool install --overrides".
Both injection points match the install step by content (not line number) so
they stay robust to toolhive template formatting. Every entry requires a
non-empty reason (validation fails otherwise) so the justification for
circumventing an upstream pin is auditable in-repo.
Verified end-to-end against the CI build + Grype recipe:
- #469 @brightdata/mcp 2.9.5 + override @modelcontextprotocol/sdk 1.26.0:
resolves to SDK 1.26.0, grype --fail-on high --only-fixed passes.
- #527 mcp-clickhouse 0.3.0 + constraint fastmcp>=3.2.0: fastmcp 3.4.0,
import mcp_clickhouse OK, grype passes.
Refs #668
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3c61fb7 to
a7b032b
Compare
a7b032b to
14e0522
Compare
ac8031a to
8b29174
Compare
8b29174 to
040045c
Compare
…n spec.yaml (#669) * feat(dockhand): support transitive dependency overrides/constraints in spec.yaml Renovate version bumps fail the build-containers Grype gate when the bumped package pins or caps a transitive dependency to a vulnerable version. Add an optional dependency-override mechanism to the spec.yaml schema, plumbed into the generated Dockerfile. - npx: spec.overrides ([]{package, version, reason}) is injected as an npm "overrides" block in the generated package.json before the npm install step. - uvx: spec.constraints ([]{spec, reason}) is written to a uv overrides requirements file and passed to "uv tool install --overrides". Both injection points match the install step by content (not line number) so they stay robust to toolhive template formatting. Every entry requires a non-empty reason (validation fails otherwise) so the justification for circumventing an upstream pin is auditable in-repo. Verified end-to-end against the CI build + Grype recipe: - #469 @brightdata/mcp 2.9.5 + override @modelcontextprotocol/sdk 1.26.0: resolves to SDK 1.26.0, grype --fail-on high --only-fixed passes. - #527 mcp-clickhouse 0.3.0 + constraint fastmcp>=3.2.0: fastmcp 3.4.0, import mcp_clickhouse OK, grype passes. Refs #668 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(dockhand): harden dependency-override injection against template drift The injection anchors are matched against toolhive's generated Dockerfile, but the tests only exercised hand-written samples that mirror it, so drift in the real template would pass tests and silently ship an image with no overrides applied. - Match the uvx install step on the bare "uv tool install" verb instead of requiring the quoted package spec to follow immediately. toolhive's template conditionally emits its own flags in between (RuntimeConfig .BuildWith renders as "--with '<spec>'"), which the old anchor missed entirely. - Parse the package.json payload toolhive emits and add the overrides key to it, rather than rebuilding the file from hardcoded name/version constants. Any other field toolhive puts there is now preserved instead of silently dropped. - Add tests that inject into Dockerfiles generated by the pinned toolhive version, covering the uvx step both with and without build-time constraints. These fail on anchor drift; they catch the --with case the previous anchor could not. * fix(mcp-scan): reapply uvx dependency overrides during the security scan The security scan runs the package directly rather than the built image, so it never saw the overrides injected into the Dockerfile and exercised a different dependency set than the one that ships. Pass spec.constraints through to the scanner as a uv overrides requirements file (uv takes a file, not inline specifiers), written to a temp file for the duration of the scan. npx spec.overrides are not reapplied: npm honors "overrides" only from a package.json it installs into, and the scan has no project directory. That is safe for the intended use case, since swapping a vulnerable but working dependency changes neither startup nor the tool surface being analyzed, but log a note so a future startup-affecting override does not fail confusingly. * fix(adb-mysql-mcp-server): constrain mcp to <2 to fix broken build adb-mysql-mcp-server depends on mcp[cli]>=1.8.0 with no upper bound. mcp 2.0.0 removed the mcp.server.fastmcp module this server imports at startup, breaking both the container build and the smoke test canary in build-containers.yml. This is also the first spec.yaml to exercise the override mechanism, so CI now actually covers it end to end rather than only unit tests. * fix(dockhand): quote override values interpolated into the Dockerfile Override values were interpolated into RUN lines inside unescaped single quotes. A PEP 508 requirement legitimately contains single quotes in an environment marker, so fastmcp>=3.2.0; python_version < '3.14' was written to the overrides file as fastmcp>=3.2.0; python_version < 3.14 which is no longer a valid marker. Anything following the quote also ran as shell at image build time, so a spec value was able to execute arbitrary commands during the build. The npm path had the same flaw via the echoed package.json payload. - Add shellSingleQuote and use it for both the uv override specs and the npm package.json payload, escaping embedded quotes as '\''. - Reject control characters in override/constraint values. Quoting makes shell metacharacters inert, but a newline would still terminate the RUN instruction, and none of these fields has a legitimate use for one. - Cover quoted markers, embedded quotes, and injection attempts. These execute the emitted line through a real shell and compare the file it writes, rather than assuming how the line parses. * test(dockhand): extract repeated literals to satisfy goconst The new test cases pushed "1.26.0" and "injection attempt" past goconst's occurrence threshold, failing CI lint. --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Dan Barr <6922515+danbarr@users.noreply.github.com>
040045c to
bbf5f46
Compare
|
This is unblocked and should be safe to merge as-is. This bump was one of the three cases #668 was opened for. That mechanism landed in #669, and #833 applied it to The override survives this bump unchanged, because the pin does not move:
So the override is still both correct and necessary at 2.11.1, and the Grype gate should pass once this is rebased on current One thing to watch on future bumps: the override pins an exact version, so if a later release of |
This PR contains the following updates:
2.9.0→2.11.1Release Notes
brightdata/brightdata-mcp (@brightdata/mcp)
v2.11.1Compare Source
Fixed
page._snapshotForAI()withpage.ariaSnapshot({ mode: 'ai' }), restoring correct functionality ofscraping_browser_snapshotand all ref-based browser automation toolsv2.11.0Compare Source
Added
reddit_commentstool to collect Reddit post commentsv2.10.0Compare Source
Added
search_datasettool to search supported datasets by a filter and get matching records back directly via the fast search API (PR #142)list_dataset_fieldstool to discover a dataset's filterable fields (name, type, description) before building a filter (PR #142)v2.9.5Compare Source
v2.9.4Compare Source
v2.9.3Compare Source
v2.9.3
codetool group - your coding agent's companionweb_data_npm_package- look up any npm package by name and get backstructured metadata: latest version, README, dependencies, and more
(e.g.
@brightdata/sdk,express,fastify)web_data_pypi_package- look up any PyPI package by name and get backstructured metadata: latest version, README, dependencies, and more
(e.g.
langchain-brightdata,requests,numpy)GROUPS="code"- works with Claude Code, Cursor, Windsurf,and any MCP-powered coding agent
codegroup row to the tool groups table in READMEWhy this matters
Coding agents constantly need to answer questions like "what's the latest
version of X?" or "what does this package do?". Until now that meant
scraping registry pages or relying on stale training data. The
codegroupgives agents a single, reliable tool to query npm and PyPI directly —
structured data, no scraping, no blocking, always up to date.
v2.9.2Compare Source
v2.9.1Compare Source
Configuration
📅 Schedule: (UTC)
* 0-3 * * 1)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.