DuckDuckGo MCP Server
Not yet source-checkedMCP server that gives Claude and other LLMs DuckDuckGo web search plus URL content fetching, with no API key required.
Machine-drafted from the vendor's site · not yet source-checkedProfile updated Link checked How we rate
In short
DuckDuckGo MCP Server adds free, no-API-key web search and URL fetching to Claude and other LLMs. It is an open-source Python tool for developers needing lightweight, cost-free live data access.
Developers and hobbyists who want to give Claude Desktop or a custom MCP agent free, no-account web search and lightweight URL reading without wiring up a paid SERP API.
Production agents doing high-volume research, or workflows that need Google-grade result quality, structured SERP metadata, or guaranteed uptime and SLAs.
DuckDuckGo MCP Server is a lightweight, MIT-licensed Model Context Protocol server written in Python that plugs web search and page-scraping capabilities into any MCP-aware client — Claude Desktop, Claude Code, Cursor, Continue, or a custom agent using an MCP SDK. It exposes two tools: a search tool that hits DuckDuckGo's public HTML endpoint with configurable result count, region, and SafeSearch level, and a fetch tool that pulls a URL and returns cleaned, paginated text extracted from the page's HTML so the model can reason over content that was not in its training data.
The project is one of the most popular community MCP servers (around 1.4k GitHub stars) largely because it removes the two biggest friction points of giving an LLM live search: no Bing/Serper/SerpAPI account to provision, and no per-query cost. It ships with sensible defaults — 30 searches/minute and 20 fetches/minute of built-in rate limiting to stay under DuckDuckGo's soft blocks, SSRF protection that refuses private/loopback targets, and an optional `[browser]` extra that swaps in a headless browser backend when DDG's fingerprint filter starts returning empty results. Installation is a one-liner with `uv pip install duckduckgo-mcp-server` plus a few JSON lines in your client's MCP config; SSE, streamable-HTTP, and Docker transports are also documented for remote deployments.
Typical workflows: giving Claude Desktop the ability to answer questions about events after its knowledge cutoff, letting a coding agent look up current library docs before writing code, powering a research subagent that searches then fetches the top N results, or acting as the search leg of a home-grown deep-research loop where a planner model iterates queries against the tool.
This is the MCP server I recommend first when someone asks how to get Claude on the live web without a bill. It is not the strongest search backend you can wire up — a paid Serper or Tavily connector will beat it on quality and reliability — but the ergonomics of 'uv pip install, paste four lines into your config, done' are hard to argue with, and the built-in rate limits mean beginners are unlikely to get themselves blacklisted.
— The AI Tool Bible editorial team
Pros
- ✅ Zero configuration and zero cost — no API keys, accounts, or billing setup
- ✅ MIT-licensed and self-hostable, so nothing about your query stream leaves your machine except the DuckDuckGo request itself
- ✅ Two clean tools (search + fetch) that map onto the way agents actually use the web — search, then read the interesting hit
- ✅ Built-in per-minute rate limits and SSRF guardrails ship enabled by default
- ✅ Works out of the box with Claude Desktop, Claude Code, and any other MCP client via stdio, SSE, or streamable HTTP
- ✅ Optional browser backend for when DuckDuckGo's bot detection starts serving empty pages
- ✅ Small, focused Python codebase that is easy to fork and modify
Cons
- ⚠️ DuckDuckGo's public endpoint is rate-limited and fingerprint-filtered — heavy or bursty use will get you empty results or temporary blocks even with the browser backend
- ⚠️ Search quality is DDG-quality: solid for general queries, weaker than Google/Bing for long-tail technical or academic lookups
- ⚠️ The fetch tool extracts plain text and drops most structure, so it is not a substitute for a real scraping/RAG pipeline on complex pages
- ⚠️ No caching or deduplication layer — every call re-hits DDG, which matters when an agent loops
- ⚠️ Community-maintained by a single developer; support and roadmap depend on the maintainer's availability
Facts
- Open source
- Yes (license: MIT)
- GitHub stars
- 1,554 (checked Oct 29, 2026)
- Last GitHub push
- Sep 4, 2026
- First commit
- Feb 2025
- Package downloads (30 d)
- 72,062 · pypi duckduckgo-mcp-server · checked Oct 10, 2026
Where this tool sits
Use cases
Frequently asked
- Does DuckDuckGo MCP Server require an API key or cost money?
- No, it is free and open source under the MIT license. It uses DuckDuckGo's public endpoint without API keys, so there are no per-query costs. Self-hosting only incurs the compute resources you use to run the server.
- Which applications and clients are compatible with this server?
- It works with any MCP-aware client, including Claude Desktop, Claude Code, Cursor, Continue, or custom agents using an MCP SDK. It supports SSE, streamable-HTTP, and Docker transports for both local and remote deployments.
- What are the main limitations of using this tool?
- It is not ideal for production agents needing high-volume research, Google-grade result quality, structured SERP metadata, or guaranteed uptime SLAs. It is best suited for developers and hobbyists who need free, lightweight search capabilities without paid API accounts.
- How difficult is it to install and configure?
- Installation is simple, requiring a one-liner command with `uv pip install duckduckgo-mcp-server` and a few JSON lines in your client's MCP config. It ships with sensible defaults for rate limiting and security, making it easy to set up quickly.
- What specific features does the server provide for web interaction?
- It exposes two tools: a search tool that hits DuckDuckGo's HTML endpoint with configurable results, and a fetch tool that pulls URLs and returns cleaned, paginated text. It includes built-in rate limiting and SSRF protection to prevent private target access.