Skip to content

v0.3.0

Choose a tag to compare

@nickclyde nickclyde released this 26 Apr 07:36
0d1d979

What's new

Configurable fetch_content backend (#39)

fetch_content can now use curl_cffi to impersonate a Chrome 131 TLS handshake, which passes through Cloudflare Bot Management and similar JA3/JA4-based filters that block stock Python TLS fingerprints. Three backends are available:

  • httpx (default, unchanged)
  • curl — Chrome TLS impersonation, requires the [browser] extra
  • auto — try httpx first, fall back to curl on 403 or Cloudflare challenge body

Server-wide via --fetch-backend, or per-call via the new backend argument on fetch_content. Install with:

pip install 'duckduckgo-mcp-server[browser]'

Big thanks to @AdeptusAstartes for the implementation.

--host and --port flags for network transports (#40)

When running with --transport sse or --transport streamable-http, you can now configure the bind address directly:

uvx duckduckgo-mcp-server --transport streamable-http --host 0.0.0.0 --port 7070

Defaults remain 127.0.0.1:8000. The flags are rejected when combined with --transport stdio. Thanks to @knivey for the report and @scot0357 for the original PR.

Tool docstring note on untrusted content (#37)

Both search and fetch_content docstrings now flag that results contain external web content and should be treated as untrusted input by the calling LLM.

Compatibility

No breaking changes. Default behavior is unchanged for existing users.