Server facts
DuckDuckGo Search MCP Server
Project
- Author
- nickclyde
- License
- MIT
- Category
- Search & Web Data
Tech
- Runtime / language
- pythonPython
- Transports
- stdio
- Remote available
- No
- Authentication
- Not specified
Activity
- GitHub stars
- 1,538
- Last commit
- Data as of
Tags
- Content Extraction
- Duckduckgo
- Python
- Web Search
Overview
DuckDuckGo Search MCP Server connects an assistant to web search and page reading through two focused tools. Search results include titles, links, and snippets, while content retrieval turns a selected page into cleaned text. This makes it useful for research that moves from finding sources to examining their contents. Administrators can choose a SafeSearch level and a default region; individual searches can override the regional setting without changing the administrator's content filter.
The server runs over stdio by default, with SSE and streamable HTTP available for other clients. A uvx launch is documented, alongside installation through uv. Search and content retrieval have separate request limits and queue handling. For websites that reject the default HTTP client's TLS fingerprint, an optional browser dependency supplies Chrome impersonation. Search uses automatic fallback by default, but that fallback needs the extra dependency installed. Page fetching keeps the lightweight backend unless configured otherwise.
Content requests support character offsets and length limits, so an assistant can read a long page in sections. The fetch tool also blocks private and other unsafe destination addresses by default and checks redirects again. Trusted internal deployments can disable that protection explicitly. These controls make the project more configurable than a bare search wrapper, although access still depends on upstream sites accepting the selected backend.
Install & configure
Requirements
- uvx available to the MCP client
- An MCP-compatible client
uvx duckduckgo-mcp-serverThe 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.
Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.
Config file · macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Use Settings → Developer → Edit Config when available. Do not assume a Linux configuration path; check the client documentation for your platform. Remote servers use the app’s connector flow when supported, not the local stdio file shown here. Merge this example with existing settings; do not overwrite unrelated servers.
{
"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>"
}
}
}
}Config file · Project: .cursor/mcp.json
User: ~/.cursor/mcp.json
The project path is relative to the workspace root. The tilde denotes your user home directory. Use Cursor’s MCP settings to confirm which configuration and scope your installed version is reading. Merge this example with existing settings; do not overwrite unrelated servers.
{
"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>"
}
}
}
}Config file · Workspace: .vscode/mcp.json
For user scope, use the “MCP: Open User Configuration” command if available. Do not guess a user configuration path across operating systems, profiles, containers, or remote workspaces; check the client documentation. Merge this example with existing settings; do not overwrite unrelated servers.
{
"servers": {
"duckduckgo-mcp-server": {
"type": "stdio",
"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>"
}
}
}
}Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json
Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
Open the MCP configuration through Windsurf’s settings when possible to confirm the active file. Paths can differ in managed or future releases; check the client documentation if this location is not present. Merge this example with existing settings; do not overwrite unrelated servers.
{
"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>"
}
}
}
}Config file · Project scope: .mcp.json at the repository root
The project file uses mcpServers. For user scope, use claude mcp add --scope user rather than assuming .mcp.json in your home directory is the user configuration. Check the client documentation for managed settings and storage details. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"duckduckgo-mcp-server": {
"type": "stdio",
"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>"
}
}
}
}Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.
Tools
Source: repository README. Tool descriptions are a documented snapshot, not a live capability check.
| Tool | What it does |
|---|---|
| search | Query DuckDuckGo for titles, links, and snippets, with result-count and regional controls. |
| fetch_content | Extract readable webpage text with offset, length, and HTTP-backend options. |
Names, permissions, and defaults can change. Check the current upstream documentation before granting access.
Use cases
- Find sources for an assistant-led research task.
- Read long webpages in bounded text segments.
- Search for results targeted to a particular country or language.
- Apply administrator-controlled SafeSearch filtering.
Strengths
- Combines source discovery and page text extraction.
- Supports stdio, SSE, and streamable HTTP.
- Includes private-address checks for content fetching.
- Offers an optional TLS-impersonating backend.
Limitations
- Browser fallback requires an additional dependency.
- Search and fetch operations have separate rate limits.
- Some sites block the default HTTP backend.
Frequently asked questions
Independent listing, not an affiliation or security review. Grant the least access needed and verify the upstream instructions before running code.