Repository navigation
fix(deps): bump @modelcontextprotocol/sdk to 1.31.0 (GHSA-6qxp-vccf-f47h) - #1698
Merged
Merged
Conversation
added 3 commits
October 7, 2026 09:29
# Conflicts: # CHANGELOG.md
# Conflicts: # CHANGELOG.md
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bumps
@modelcontextprotocol/sdkto the first patched release for GHSA-6qxp-vccf-f47h ("OAuth client could send credentials to an authorization server chosen by the MCP server") in both lockfiles that carry it, keeping backend and sidecar on the same version.@modelcontextprotocol/sdkpackage-lock.json(root; backendmcp-docs-client)@modelcontextprotocol/sdkmcp-docs/package-lock.jsonNo other package changes: the diff is the
version/resolved/integritylines of the SDK entry in each lockfile (6 lines per file), plus the CHANGELOG entry. 1.31.0 declares the same dependencies, peer dependencies and engines as 1.30.0, andnpm installin both locations left the lockfiles unchanged after the bump. The^1.30.0ranges inbackend/package.jsonandmcp-docs/package.jsonalready allow 1.31.0, so neitherpackage.jsonchanges and nooverridesare needed. I pinned 1.31.0, the patched version, rather than lettingnpm updatepull 1.32.1. 1.32.0 changes how the HTTP client handles redirects (it now follows only same-origin redirects), which is outside this fix.Compatibility notes
I read the release notes for 1.30.1 and 1.31.0 and ran
npm diffon the published packages.issuerfield;expectedIssueronClientCredentialsProvider/PrivateKeyJwtProvider). Neither the backend normcp-docsuses the SDK's OAuth support. The backend client authenticates with thex-mcp-docs-tokenheader viarequestInit, not with anauthProvider.client/streamableHttp.jsandclient/index.jsare unchanged between the two versions.mcp-docsrunsexpress.json()(100 kB default) and passesreq.bodyasparsedBody, so the body limit doesn't apply to it. The batch limit does apply, and the backend only sends single messages.createMcpExpressAppnow registers the JSON parser after Host validation, but we don't use it.McpServer,server.tool,StreamableHTTPServerTransport,isInitializeRequest(sidecar),Client,StreamableHTTPClientTransport(backend).Verification
mcp-docs:npm run typecheckclean;npm test→Test Files 10 passed (10),Tests 79 passed (79);npm run buildclean.mcp-docs-client.test.ts+mcp-docs-settings.test.ts:Test Files 2 passed (2),Tests 7 passed (7).npm run typecheckandnpm run lintclean.--maxWorkers=4):Test Files 445 passed (445),Tests 7143 passed | 3 skipped (7146).node dist/index.js, PORT 3199, Redis,MCP_DOCS_TOKENset) and connected to it with the backend's realmcp-docs-client(SDK 1.31.0, only the settings lookup mocked), using a throwaway script that I've since deleted:testConnection()→{"ok":true,"tools":["fetch_url","search_web","list_cached"]}fetchDocumentation('http://127.0.0.1:6379/')→ rejectedSSRF blocked: private IP addressfetchDocumentation('https://example.com/')→title "Example Domain", content returned{"ok":false,...,"error":"Streamable HTTP error: Error POSTing to endpoint: {\"error\":\"Unauthorized\"}"}