Fetching from the wire…
Public story · 2026-09-12 · high
The fix covers three exact hostnames, so localhost. with a trailing dot and subdomains like tenant.app.localhost still fail.
Why now: PR #2326, covered here on 2026-09-12, added the exemption.
MCP Inspector's config validation rejected every client metadata URL that wasn't HTTPS, with no carve-out for local testing. It also validated client.json straight off disk, so you couldn't edit around the check once it failed.
That mattered because every test server in the repo runs over plain HTTP. Reproducing a CIMD failure by hand meant standing up a self-signed HTTPS listener with NODE_TLS_REJECT_UNAUTHORIZED=0. Only then could you test anything else.
The exemption fix covers three literal values: localhost, 127.0.0.1, and [::1]. The SDK already exempts that same set elsewhere, so this isn't a new policy. A test in the PR pins the boundary directly: localhost. with a trailing dot still gets rejected, and so does tenant.app.localhost.
For anyone testing CIMD-based flows locally, that boundary matters before you hit it. A dev setup that routes through a subdomain fails the same HTTPS check this PR fixed for bare localhost. The three-literal list closes the bare-localhost case, not the subdomain one.
Each link below shares sources, entities, or timing with this story.
PR #29081, merged August 26 and in nightly v0.59.0-nightly.20260827, enforces RFC 9728 §7.7 and RFC 8414 constraints across MCP OAuth metadata discovery, dynamic client registration, and token exchange. It requires HTTPS for remote endpoints with HTTP allowed only for loopback...
NVD published this against kazuph/mcp-fetch through 1.6.3 on August 26. isSafeUrl reads the hostname from the parsed URL, which for yields the bracketed string, then tests it with net.isIP, which returns zero for a bracketed value. The entire private-address branch is skipped,...
Published September 7, @upstash/[redacted] adds a default 30-second timeout unless you set timeout: false on the client or the individual request (GitHub). Long-running documentation fetches that previously hung will now fail. It also adds abort signals, configurable transient...
PR #1220, merged September 2, adds four checks to the default OAuth discovery client: no redirects downgrading to plain HTTP, no redirects to localhost or private IP ranges, no initial call to a private IP, and an explicit-proxy opt-out from dial-time checking. SSRF hardening...
@e2b/python-sdk 2.46.2 and 2.46.4, released September 2, default to sharding envd traffic across four pools so high-concurrency long-running streams don't all contend for one connection's stream limit, tunable via E2B_ENVD_POOL_SHARDS set before SDK import. Anyone running many...
If you wrote an MCP server before July, it's on a protocol shape the maintainers have already removed. Not deprecated-with-a-migration-window. Removed from the spec. MCP lead maintainers David Soria Parra and Den Delimarsky published an updated roadmap on August 22, and the re...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.