duckduckgo mcp server
A Model Context Protocol server that provides DuckDuckGo search functionality for Claude, enabling web search capabilities through a clean tool interface with rate limiting support.
A Model Context Protocol server that provides DuckDuckGo search functionality for Claude, enabling web search capabilities through a clean tool interface with rate limiting support.
English | 中文
A Model Context Protocol server for DuckDuckGo Search
This is a TypeScript-based MCP server that provides DuckDuckGo search functionality. It demonstrates core MCP concepts through:
duckduckgo_search
- Perform web searches using DuckDuckGo APIquery
(search query, max 400 characters)count
(number of results, 1-20, default 10)safeSearch
(safety level: strict/moderate/off, default moderate)# Install pnpm if not already installed
npm install -g pnpm
# Install project dependencies
pnpm install
Build the server:
pnpm run build
For development with auto-rebuild:
pnpm run watch
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
# online
{
"mcpServers": {
"duckduckgo-search": {
"command": "npx",
"args": [
"-y",
"duckduckgo-mpc-server"
]
}
}
}
# local
{
"mcpServers": {
"duckduckgo-search": {
"command": "node",
"args": [
"/path/to/duckduckgo-search/build/index.js"
]
}
}
}
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
pnpm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
[
{
"description": "Performs a web search using the DuckDuckGo, ideal for general queries, news, articles, and online content. Use this for broad information gathering, recent events, or when you need diverse web sources. Supports content filtering and region-specific searches. Maximum 20 results per request.",
"inputSchema": {
"properties": {
"count": {
"default": 10,
"description": "Number of results (1-20, default 10)",
"maximum": 20,
"minimum": 1,
"type": "number"
},
"query": {
"description": "Search query (max 400 chars)",
"maxLength": 400,
"type": "string"
},
"safeSearch": {
"default": "moderate",
"description": "SafeSearch level (strict, moderate, off)",
"enum": [
"strict",
"moderate",
"off"
],
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "duckduckgo_web_search"
}
]