Fixed
-
Hardened HTTP mode no longer rejects every request on non-default ports: With
MCP_HTTP_HARDENenabled andMCP_HTTP_ALLOWED_HOSTSleft unset, the default DNS-rebinding Host allowlist contained only the bare hostnames127.0.0.1andlocalhost. Because the transport matches the rawHostheader — port included — with an exact list-membership check, any bind to a port other than 80 caused every request (including the initialinitialize) to fail with403. The bind port is now threaded into the defaults, so the allowlist also accepts127.0.0.1:PORT,localhost:PORT, and[::1]:PORT(plus[::1]to mirror the SDK's own localhost default). An explicitMCP_HTTP_ALLOWED_HOSTSstill overrides these defaults unchanged. (BUG-012, #172) -
SEARXNG_TIMEOUT_MSis now validated and clamped: Non-integer, unit-suffixed (e.g.5000ms), decimal, non-positive, or otherwise malformed values are now rejected with a warning and fall back to the default10000. The value is also capped at the 32-bitsetTimeoutceiling (2147483647); a larger delay was previously clamped by Node to 1 ms, so an over-large timeout fired almost immediately instead of waiting. (BUG-013, #171) -
Corrected the HTTP transport example and refreshed the docs: README and
CONFIGURATION.mdwere synced with the current feature set and a misleading Streamable HTTP transport example was fixed. (#165)
Security
MCP_RATE_*environment variables are now validated: Malformed values for the HTTP rate-limit settings —MCP_RATE_WINDOW_MS,MCP_RATE_INIT_MAX, andMCP_RATE_SESSION_MAX— are rejected with a warning and fall back to safe defaults instead of being applied verbatim, so a typo can no longer silently disable or misconfigure rate limiting. (SEC-025, #170)
Full Changelog: v1.11.0...v1.11.1