DuckDuckGo Search
DuckDuckGo Search is a community-built MCP server, published to PyPI as duckduckgo-mcp-server and normally launched with uvx, that gives an assistant web search and page-fetching against DuckDuckGo without an API key or account. No vendor stands behind it. When we started it under our clean-environment probe, it crashed before the MCP handshake finished.
How we started it
uvx duckduckgo-mcp-serverSkip it until you have read its startup code, or at least run it somewhere you control the working directory. The idea is sound and the price is right: keyless search is the one thing every agent wants and almost every provider charges for. But a server that reads a .env file out of whatever directory it happens to be launched from, and dies with a stack trace when it cannot, is telling you something about how carefully it handles the rest of its runtime. On a normal desktop with a readable home directory it will probably start fine.
Use it if
Skip it if
The bill for your context window
There is no Context Tax to report here, and that is not a compliment. Because the server never completed initialize, we recorded a tools count of 0 and a tools/list payload of 0 bytes, so nothing about its real token weight is measured. Judging from the project's description, this is a small surface: search plus fetch-page, the sort of thing that lands well under the middle of the pack rather than anywhere near the batch's heaviest server. If you get it booting, the number we could not take is the one worth taking yourself.
Setup reality
The run line is uvx duckduckgo-mcp-server over stdio, no auth, no API key, no env vars. That is the appeal and it is genuine. The catch is what happens before the handshake: pydantic-settings tries to load a .env file relative to the current working directory, and our probe account could not open the one sitting there, so Python raised PermissionError and the process exited with code 1 before initialize completed. The harness scraped no env-var names from the failure, because the crash is about file access rather than a missing credential. Fixing it is not exotic. Launch the server with a cwd your user owns, or one with no .env in it at all, and the loader has nothing to trip over.
Questions people ask
Does the DuckDuckGo MCP server need an API key?
No. It scrapes DuckDuckGo's public endpoints, so there is no key, no account and no billing. The cost shows up as rate limiting and as result quality that can change without notice when the HTML changes.
Why did it fail to start when you measured it?
Python raised PermissionError on '.env' inside pydantic-settings before the MCP initialize completed, and the process exited with code 1. Our probe user could not read the .env file in the working directory it was launched from. It is a cwd problem, not a missing credential.
Will it boot on my machine?
Probably, if you launch it from a directory your own user can read. The failure we hit comes from settings loading at import time, so it depends entirely on where the process starts, not on your OS or your MCP client.
Is there an official DuckDuckGo MCP server?
Not from DuckDuckGo. This one is community maintained, which is why nobody is on the hook when the scraping breaks. Treat it as a useful hack you have read, rather than a dependency you can page someone about.
Other search servers we started
| Server | Vendor | Boots | Context tax |
|---|---|---|---|
| Brave Search (archived) | Anthropic (archived) | ✗ | ~0 tokens |
| Exa | Exa Labs | ✓ | ~534 tokens |
| Tavily | Tavily | ✓ | ~1,924 tokens |
How this page is made: the server is spawned as an unprivileged user with a clean environment and no credentials, then asked for its tools, resources and prompts over stdio. Token figures are estimates at four characters per token, not a tokenizer count. One run, one machine. Corrections: contact the desk.