← Back to directory
D

DuckDuckGo Search MCP Server

Community
MCP server providing web search and content fetching via DuckDuckGo
Category
Other
Stars
★ 1.5k Very popular
Transport
stdio (local process)
Runtime
Python
Credentials
No credential needed
License
MIT
Last commit
Tools
2
74FMRS · B

This server provides practical web search and content fetching for AI assistants, with built-in rate limiting and filtering. However, it depends on DuckDuckGo and third-party sites, may be affected by TLS fingerprint blocking, and may require the optional browser backend. Suitable for personal and small-scale projects.

Strongest · Documentation 17/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
15/20
Maintenance
17/20
Documentation
17/20
Setup experience
14/20
Why each score
Reliability 11/20
The repository provides clear startup commands (uvx) and multiple tools (search, fetch_content), with README describing automatic fallback to curl backend for TLS fingerprint blocks and SSRF protection. Tests (test_server.py, test_e2e.py) and CI workflows exist but have not been executed; static review cannot verify all paths, and the curl_cffi dependency may introduce failure points, hence deductions.
Security and permissions 15/20
The fetch_content tool has built-in SSRF protection, rejecting private IPs and loopback addresses, and re-validates redirects. Supports CA certificate configuration and safe search environment variables, with least privilege. No obvious malicious behavior or credential theft risk, but confirmation of dangerous operations is not evident; overall security score is high.
Maintenance 17/20
Project is active with continuous commits and releases, MIT license clear, PyPI versions and downloads indicate good maintenance. Only 4 open issues, clear contribution guide, frequent dependency updates. No evident security response channel, but overall maintenance is strong.
Documentation 17/20
README is comprehensive, covering installation, configuration, tool parameters, region codes, error handling, backend options, SSRF protection, and development/test commands. There is SECURITY.md and PyPI links, but missing troubleshooting section and detailed cost info; documentation is high quality with minor gaps.
Setup experience 14/20
Installation and running via uvx is very simple, with explicit configuration examples for Claude Desktop and Claude Code, support for multiple transports and customization. However, the [browser] extra is needed for fallback functionality, and environment variable configuration may vary across platforms; overall setup steps are clear, but requiring browser backend adds extra steps.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessUses the network

Best for

  • Developers needing quick, API-key-free web search capabilities
  • Privacy-conscious users who prefer local search execution
  • AI application development with Claude Desktop or Claude Code

Not for

  • Enterprise applications requiring high-scale, reliable search APIs
  • Users needing advanced search features like custom ranking or filters
  • Accessing sites blocked by TLS fingerprinting without installing the optional browser backend

Required permissions

  • Outbound network access to DuckDuckGo and other websites
  • Reads environment variables for SafeSearch, region, and CA certificates
  • Optionally reads a CA certificate file (for TLS-intercepting proxies)

Risks and side effects

  • Search endpoints may occasionally return empty results or errors, especially when blocked
  • Content fetching may be subject to SSRF protection, blocking private or loopback addresses by default
  • Misuse could lead to rate limiting or IP blocking

Setup

Before you start

Runtime:Python

Other optional settings (9)
DDG_SAFE_SEARCH optional Sets SafeSearch filtering level (STRICT/MODERATE/OFF) via env in the client config at server startup.
DDG_REGION optional Sets the default region/language code (e.g. us-en, cn-zh) in the client config env.
DDG_CA_CERTS optional Path to a PEM CA bundle for verifying outbound TLS certificates behind TLS-intercepting proxies.
DDG_SEARCH_BACKEND optional Sets the search tool's fetch backend (auto/httpx/curl); auto is the default.
DDG_ALLOWED_HOSTS optional Comma-separated allow-list of hosts to avoid 421 errors behind reverse proxies or Docker.
DDG_ALLOWED_ORIGINS optional Comma-separated allow-list of origins to avoid 421 errors behind reverse proxies or Docker.
DDG_DISABLE_DNS_REBINDING_PROTECTION optional Set to 1 to disable DNS-rebinding protection; not recommended.
DDG_SSL_VERIFY optional Set to 0 to disable certificate verification entirely; insecure — prefer DDG_CA_CERTS.
DDG_ALLOW_PRIVATE_URLS optional Set to 1 to let fetch_content reach private/internal addresses; trusted local deployments only.
  1. Install uv if not already present.
  2. Run uvx duckduckgo-mcp-server.
  3. For Claude Desktop, add the MCP server configuration to your config file. For Claude Code, use claude mcp add ddg-search uvx duckduckgo-mcp-server.
claude_desktop_config.json
{
  "mcpServers": {
    "ddg-search": {
      "command": "uvx",
      "args": [
        "duckduckgo-mcp-server"
      ]
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "ddg-search": {
      "command": "uvx",
      "args": [
        "duckduckgo-mcp-server"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add ddg-search -- uvx duckduckgo-mcp-server

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

Add the ddg-search entry to your Claude Desktop config and restart; confirm that search and fetch_content appear in the tool list. Then ask it to search "python tutorial" — returned results with titles and URLs prove the connection works.

Troubleshooting

  1. If search returns no results, try installing the [browser] extra and using the curl backend
  2. For TLS certificate errors, specify a CA bundle via --ca-certs or DDG_CA_CERTS
  3. If behind a reverse proxy, set --allowed-hosts and --allowed-origins to avoid 421 errors
  4. Check rate limits: 30 requests/minute for search, 20 for content fetching

Things to try

Once connected, you can ask your AI assistant things like:

  • Search the web for "python tutorial" and give me the top 10 results
  • Use the search tool to find latest news with region jp-ja
  • Fetch and parse the content of https://example.com
  • Fetch https://example.com starting from character 8000 for pagination

Tools 2

search read-only
Performs a web search on DuckDuckGo and returns formatted results with titles, URLs, and snippets.
fetch_content read-only
Fetches and parses content from a webpage, returning cleaned and formatted text.

Use cases

Real-time web search within AI assistants
Fetching webpage content for summarization or analysis
Scenarios requiring region-specific or SafeSearch-filtered results

Supported clients

Claude Desktop
Claude Code

Listed from the project's documentation, not tested by this site.

Overview

A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing. It includes built-in rate limiting, error handling, SafeSearch filtering, and region localization. Results are formatted for LLM consumption. Supports multiple transports (stdio, SSE, streamable HTTP) and configurable backends to bypass bot detection.

Similar servers

Telegram MCP server powered by Telethon to let MCP clients read chats, manage groups, and send/modify messages, media, contacts, and settings.

★ 1.8k · Tools 76 Compare with this →

Source revision 8182af3f2295 Data synced 2026-10-12 Read the FMRS scoring method