DuckDuckGo Search MCP Server
Provides web search and content fetching capabilities using DuckDuckGo, enabling users to search the web and retrieve clean text content from web pages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DuckDuckGo Search MCP Serversearch for latest artificial intelligence news"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DuckDuckGo Search MCP Server
A Model Context Protocol (MCP) server that provides web search and content fetching capabilities using DuckDuckGo.
Features
Web Search: Search DuckDuckGo with customizable result limits
Content Fetching: Extract and parse text content from web pages
Rate Limiting: Built-in rate limiting to prevent API abuse
Clean Text Extraction: Removes navigation, scripts, and styling for clean content
Dual Transport: Supports both stdio and streamable-http transports
Installation
Standard Installation
# Clone or download the repository
cd ddg-search-mcp
# Install dependencies
pip install -r src/requirements.txt
# Run the server
python src/server.pyDocker Installation
# Build the image
docker build -t ddg-search-mcp .
# Run with stdio transport
docker run -i ddg-search-mcp
# Run with HTTP transport
docker run -e MCP_TRANSPORT=streamable-http -p 8000:8000 ddg-search-mcpConfiguration
Environment Variables
MCP_TRANSPORT: Set to stdio (default) or streamable-http will run http server, port 8000
Rate Limiting
Search: 30 requests per minute (default)
Fetch: 20 requests per minute (default)
Modify the requests_per_minute parameter in server.py to adjust these limits.
Tools
search
Search DuckDuckGo and return formatted results.
Parameters:
query(string, required): The search querymax_results(integer, optional): Maximum results to return (default: 10, max: 50)
Example:
{
"query": "python async programming",
"max_results": 5
}Returns: Formatted search results with title, URL, and snippet for each result.
fetch_content
Fetch and parse clean text content from a webpage.
Parameters:
url(string, required): The webpage URL (must start with http:// or https://)
Example:
{
"url": "https://example.com/article"
}Returns: Cleaned text content from the webpage (max 8000 characters), with scripts, styles, and navigation elements removed.
Usage with MCP Clients
Claude Desktop
Add to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"ddg-search": {
"command": "python",
"args": ["/path/to/src/server.py"]
}
}
}Using Docker with Claude Desktop
{
"mcpServers": {
"ddg-search": {
"command": "docker",
"args": ["run", "-i", "ddg-search-mcp"]
}
}
}Notes
DuckDuckGo may occasionally block automated requests; the rate limiter helps prevent this
Fetched content excludes scripts, styles, navigation, headers, and footers
Maximum content length is 8000 characters per fetch
All HTTP requests include a standard browser User-Agent
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/khshanovskyi/duckduckgo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server