MCP Directory

DuckDuckGo Search

Popular no-API-key MCP server for DuckDuckGo web search plus page fetching and parsing.

Verified
stdio (local)
No auth
Python

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
uvx duckduckgo-mcp-server

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "duckduckgo-search": {
      "command": "uvx",
      "args": [
        "duckduckgo-mcp-server"
      ]
    }
  }
}

Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.

Before you start

  • Python 3 and the uv package manager (provides the uvx launcher); pip install is also supported
  • No API key or account required

About DuckDuckGo Search

DuckDuckGo Search MCP is a popular community server that gives any MCP client web search and webpage fetching with no API key and no account. It queries DuckDuckGo for results and can retrieve and clean the content of a chosen page, returning LLM-friendly text.

The search tool returns titles, URLs, and snippets (ads and DuckDuckGo redirect URLs are stripped), while fetch_content downloads a page and parses it into readable text with character-based pagination so large pages can be read in chunks. Built-in rate limiting (30 searches/min, 20 fetches/min) keeps usage within DuckDuckGo's tolerances.

Written in Python and distributed on PyPI, it is typically launched with uvx duckduckgo-mcp-server over stdio, with SSE and streamable-HTTP transports also available via flags. It is a common drop-in for adding free web search to Claude Desktop and other clients without signing up for a search API.

Tools & capabilities (2)

search

Search DuckDuckGo and return cleaned results (title, URL, snippet); params include query, max_results, and region.

fetch_content

Fetch and parse a webpage into readable text with pagination via start_index/max_length and optional fetch backend.

When to use it

  • Use it when you want web search in an LLM client without registering for an API key.
  • Use it when you need the model to read the full text of a specific page it found.
  • Use it when you want a free, privacy-leaning alternative to paid search APIs.
  • Use it when working through large pages that need to be paginated for the model's context window.
  • Use it when you need region- or safesearch-aware results configured at startup.

Quick setup

  1. 1Install uv (which provides uvx), or install the package with pip.
  2. 2Add the server to your MCP client config with command `uvx` and args `["duckduckgo-mcp-server"]`.
  3. 3Optionally set DDG_SAFE_SEARCH and DDG_REGION environment variables.
  4. 4Restart the MCP client.
  5. 5Verify by asking the model to search the web and then fetch one of the result pages.

Security notes

No API key is needed, but DuckDuckGo may rate-limit or block heavy automated querying, so use it at modest volume. Fetched page content is arbitrary untrusted web text and should not be treated as trusted instructions.

DuckDuckGo Search FAQ

Do I need an API key or DuckDuckGo account?

No. It works against DuckDuckGo with no credentials, which is its main appeal for free web search.

Is it rate limited?

Yes. The server self-limits to about 30 searches per minute and 20 content fetches per minute to stay within DuckDuckGo's tolerances.

How do I run it?

The common way is `uvx duckduckgo-mcp-server` over stdio. SSE and streamable-HTTP transports are available via command-line flags for other clients.

Why do some pages fail to fetch?

Some sites block automated requests; the server offers an alternate curl-based backend with TLS impersonation to improve success against bot detection.

Can I change region or safesearch at query time?

Region can be passed per search; SafeSearch is configured at startup via DDG_SAFE_SEARCH and is not changed by the model mid-session.

Alternatives to DuckDuckGo Search

Official MCP reference server that fetches a URL and returns its content as clean Markdown, with chunking.

Verified
stdio (local)
No auth
Python
2 tools
Updated 8 days agoRepo

Official Firecrawl MCP server — scrape, crawl, map, search, and structured extraction for any LLM client.

Verified
stdio (local)
API key
TypeScript
8 tools
Updated 6 days agoRepo

Exa's neural web search and crawling MCP server — runs locally via npx or as a hosted remote endpoint.

Verified
stdio (local)
API key
TypeScript
6 tools
Updated 7 days agoRepo