Data as of

DuckDuckGo Search MCP Server for Windsurf: Setup & Config

Windsurf: Give MCP assistants DuckDuckGo search and webpage text retrieval.

What you can do with DuckDuckGo Search in Windsurf

Choose it for DuckDuckGo discovery plus controlled page extraction in one MCP server.

  • Read long webpages in bounded text segments.
  • Apply administrator-controlled SafeSearch filtering.

Before you start: DuckDuckGo Search in Windsurf

  • uvx available to the MCP client
  • An MCP-compatible client

The README documents this default stdio launch. SSE and streamable HTTP are alternatives. Install the browser extra to enable curl-based fallback when search endpoints block httpx.

DuckDuckGo Search Windsurf configuration

  1. Choose Windsurf configuration scope

    For DuckDuckGo Search MCP Server, open macOS/Linux: ~/.codeium/windsurf/mcp_config.json Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json. Merge into mcpServers; remote endpoints use serverUrl.

  2. Add DuckDuckGo Search MCP Server to Windsurf

    Use the duckduckgo-mcp-server entry below in mcpServers. Keep DuckDuckGo Search MCP Server's documented stdio connection fields and your other Windsurf entries.

  3. Check DuckDuckGo Search MCP Server in Windsurf

    DuckDuckGo Search MCP Server: Refresh MCP in Windsurf settings and inspect Cascade’s tools.

Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json

Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

JSON
{
  "mcpServers": {
    "duckduckgo-mcp-server": {
      "command": "uvx",
      "args": [
        "duckduckgo-mcp-server"
      ],
      "env": {
        "DDG_SAFE_SEARCH": "<optional STRICT, MODERATE, or OFF filtering level>",
        "DDG_REGION": "<optional default region and language code>"
      }
    }
  }
}

DuckDuckGo Search tools available to Windsurf

DuckDuckGo Search's stored tool list documents 2 tools; compare it with Windsurf's connected tool list, because the stored list is not a live check.

search

After refreshing DuckDuckGo Search in Windsurf settings, check Cascade's tool list for search.

fetch_content

After refreshing DuckDuckGo Search in Windsurf settings, check Cascade's tool list for fetch_content.

Extract readable webpage text with offset, length, and HTTP-backend options.

DuckDuckGo Search: full stored tool descriptions

Troubleshooting DuckDuckGo Search in Windsurf

  • Check uvx duckduckgo-mcp-server (from uv, for Python tools) on the machine running Windsurf's MCP integration for DuckDuckGo Search MCP Server; refresh MCP and inspect Cascade's tools.
  • Check DDG_REGION, DDG_SAFE_SEARCH for DuckDuckGo Search MCP Server; do not bypass a Windsurf permission error with a broad administrator token.
  • DuckDuckGo Search MCP Server uses stdio here: Windsurf must keep the configured process running; protocol output belongs on stdout and diagnostics on stderr.
  • Known limitation: Browser fallback requires an additional dependency.
  • Known limitation: Search and fetch operations have separate rate limits.
  • Known limitation: Some sites block the default HTTP backend.
  • General Windsurf troubleshooting lives in the /clients/windsurf guide.

DuckDuckGo Search MCP Server — details. Windsurf guide

Frequently asked questions

Windsurf reads DuckDuckGo Search MCP Server under mcpServers in ~/.codeium/windsurf/mcp_config.json on macOS/Linux; Windows uses %USERPROFILE%\.codeium\windsurf\mcp_config.json.

Windsurf's duckduckgo-mcp-server example uses stdio.

DuckDuckGo Search MCP Server's Windsurf configuration invokes uvx duckduckgo-mcp-server (from uv, for Python tools).

Windsurf's DuckDuckGo Search MCP Server example references DDG_REGION, DDG_SAFE_SEARCH. Check these names if startup or authentication fails; the example alone does not distinguish required from optional values.

DuckDuckGo Search MCP Server's stored list contains 2 tools, including search, fetch_content. Compare those names with Windsurf's connected tool list; the stored list is not a live check.

DuckDuckGo can reject httpx based on its TLS fingerprint. The browser extra enables the curl backend used for fallback.

Search is limited to 30 requests per minute, while content fetching is limited to 20.