DuckDuckGo Search MCP Server
Web search via DuckDuckGo and page reading for the agent with no API keys, with built-in rate limiting
Install
claude mcp add ddg-search uvx duckduckgo-mcp-serverThis is third-party code. Review the repository files before installing.
What it does
The server gives the agent DuckDuckGo search with region and SafeSearch settings. A separate tool loads result pages, strips markup and returns plain text, the main block or Markdown in chunks. Long result URLs are swapped for short tokens to save context. Requests are rate limited, fetched pages are cached in memory, and requests to internal addresses are blocked by default.
Who it is for. For anyone who wants simple web search in an agent without signing up for paid search APIs.
Good fit when
- The agent needs fresh web search and you have no search API key
- You need to read docs or an article by URL
- You want local search for Claude Desktop or Claude Code
Not a fit when
- You need high query volumes or stable results for production
- You need Russian web search on par with Yandex
Example request
Search the web for what changed in the latest Django release and read the release notesLimitations
The server parses DuckDuckGo's HTML results rather than an official API, so it can break when the search engine changes. DuckDuckGo blocks plain HTTP clients, so reliable search needs the [browser] extra that mimics Chrome's TLS handshake. Defaults are 30 searches and 20 fetches per minute. DuckDuckGo availability from Russia is not guaranteed.
How to disable. Run claude mcp remove ddg-search or delete the ddg-search block from the MCP config.
MCP
- Transport
- stdio, sse, http
- Authentication
- not required
| Environment variables | |
|---|---|
| DDG_SAFE_SEARCH | STRICT, MODERATE or OFF. |
| DDG_REGION | Default region, for example us-en or wt-wt. |
| DDG_SEARCH_BACKEND | auto, httpx or curl. |
Security check
- Accesses the network and loads arbitrary pages
- Page content may carry prompt injection
README in short
The README shows running via uvx, a Claude Desktop config and a Claude Code command. It describes three tools, search, fetch_content and expand_link, plus variables for region, SafeSearch, limits, cache and page parsing mode. The server runs over stdio, SSE and Streamable HTTP, with settings for reverse proxies and corporate CA bundles. HTTP backends and SSRF protection are explained separately. MIT licensed.
FAQ
Do I need an API key?
No, the server works without keys or sign-up.
Why does search return nothing?
DuckDuckGo rejects the plain HTTP client. Install the [browser] extra so the server can fall back to the alternative client.
Related
CLI, skill and Python library for browser control: the agent clicks, fills forms and reads pages over CDP
A skill that gathers the last 30 days of discussion on a topic from Reddit, X, YouTube, HN, Polymarket and GitHub into one brief
The Chrome DevTools team's official MCP server: the agent drives a live Chrome, reads network and console, and records performance traces
A fast Rust CLI for agent browser automation: accessibility snapshots with element refs, an MCP server and skills