DuckDuckGo Search MCP Server

Search the web with DuckDuckGo and extract webpage content through AI assistants — privacy-friendly, no API key required.

May 4, 2026
GitHub starsPyPI versionPyPI downloads

Overview

The DuckDuckGo MCP Server enables AI assistants to search the web using DuckDuckGo with privacy-respecting search and intelligent content extraction. It provides search results formatted for LLM consumption, webpage content parsing with anti-bot detection, SafeSearch filtering, and region localization — all without tracking or requiring an API key.

Popular Community Server:

Developed by nickclyde with 1,100+ stars on GitHub. Python-based, installable via uv.

Key Features

🦆

Privacy-First Search

Search without tracking, profiling, or storing personal data. Results formatted for AI consumption.

📄

Content Extraction

Fetch and parse webpage content with intelligent text extraction and configurable length limits.

🛡️

SafeSearch & Region

Configurable SafeSearch filtering (strict/moderate/off) and region localization for relevant results.

🔄

Bot Detection Bypass

Optional curl-based fetch backend that impersonates Chrome browser TLS handshake to bypass Cloudflare filters.

⏱️

Rate Limiting

Built-in protection: 30 searches per minute, 20 content fetches per minute with automatic queue management.

🆓

No API Key Required

Free to use without registration or authentication. Supports SSE and Streamable HTTP transports.

Available Tools

Quick Reference

ToolPurposeCategory
searchSearch DuckDuckGo with region and result countSearch
fetch_contentFetch and parse webpage contentContent

Detailed Usage

search

Search DuckDuckGo with configurable region and result count. Results are formatted for LLM consumption.

use_mcp_tool({
  server_name: "ddg-search",
  tool_name: "search",
  arguments: {
    query: "Rust programming language features",
    max_results: 10,
    region: "us-en"
  }
});

Region codes: us-en, cn-zh, jp-ja, de-de, fr-fr, wt-wt (no region).

fetch_content

Fetch and parse content from a webpage with optional start offset and length limit. Supports multiple fetch backends.

use_mcp_tool({
  server_name: "ddg-search",
  tool_name: "fetch_content",
  arguments: {
    url: "https://www.rust-lang.org/learn",
    max_length: 5000,
    backend: "httpx"
  }
});

Backend options: httpx (default), curl (TLS impersonation), auto (try httpx, fall back to curl).

Installation

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

Configuration

Configure SafeSearch and default region via environment variables:

VariableValuesDescription
DDG_SAFE_SEARCHSTRICT, MODERATE, OFFContent filtering level
DDG_REGIONus-en, cn-zh, jp-ja, etc.Default search region

Example with SafeSearch enabled:

{
  "mcpServers": {
    "ddg-search": {
      "command": "uvx",
      "args": ["duckduckgo-mcp-server"],
      "env": {
        "DDG_SAFE_SEARCH": "STRICT",
        "DDG_REGION": "us-en"
      }
    }
  }
}

Fetch Backend:

Install with pip install "duckduckgo-mcp-server[browser]" or uvx --with "duckduckgo-mcp-server[browser]" to enable the curl-based fetch backend that bypasses Cloudflare bot detection.

Sources