duckduckgo mcp server
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
To install DuckDuckGo Search Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @nickclyde/duckduckgo-mcp-server --client claude
uv
Install directly from PyPI using uv
:
uv pip install duckduckgo-mcp-server
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%Claudeclaude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"]
}
}
}
For local development, you can use the MCP CLI:
# Run with the MCP Inspector
mcp dev server.py
# Install locally for testing with Claude Desktop
mcp install server.py
async def search(query: str, max_results: int = 10) -> str
Performs a web search on DuckDuckGo and returns formatted results.
Parameters:
- query
: Search query string
- max_results
: Maximum number of results to return (default: 10)
Returns: Formatted string containing search results with titles, URLs, and snippets.
async def fetch_content(url: str) -> str
Fetches and parses content from a webpage.
Parameters:
- url
: The webpage URL to fetch content from
Returns: Cleaned and formatted text content from the webpage.
Issues and pull requests are welcome! Some areas for potential improvement:
This project is licensed under the MIT License.
[
{
"description": " Search DuckDuckGo and return formatted results. Args: query: The search query string max_results: Maximum number of results to return (default: 10) ctx: MCP context for logging ",
"inputSchema": {
"properties": {
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"query": {
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "searchArguments",
"type": "object"
},
"name": "search"
},
{
"description": " Fetch and parse content from a webpage URL. Args: url: The webpage URL to fetch content from ctx: MCP context for logging ",
"inputSchema": {
"properties": {
"url": {
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "fetch_contentArguments",
"type": "object"
},
"name": "fetch_content"
}
]