DuckDuckGo MCP Server
by zopalz
README.md
# DuckDuckGo MCP Server
A simple Model Context Protocol (MCP) server that provides web search, image search, and image download capabilities using the [duckduckgo_search](https://github.com/deedy5/ddgs) library.
## Features
- **Web Search**: Search the web using DuckDuckGo with customizable region and result limits
- **Image Search**: Search for images with filters for size and type
- **Image Download**: Download images from URLs to your local machine
## Installation
### Using uv (Recommended)
1. Install [uv](https://github.com/astral-sh/uv) if you haven't already:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
2. Clone this repository or download the files
3. Create a virtual environment and install dependencies:
```bash
uv venv
uv pip install -r requirements.txt
```
### Using pip
1. Clone this repository or download the files
2. Install dependencies:
```bash
pip install -r requirements.txt
```
## Usage
### Running the Server
With uv (from the project directory):
```bash
uv run python server.py
```
Or activate the virtual environment first:
```bash
source .venv/bin/activate # On Windows: .venv\Scripts\activate
python server.py
```
With standard Python:
```bash
python server.py
```
### Configuring in Claude Desktop
Add this configuration to your Claude Desktop config file:
**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
**Linux**: `~/.config/Claude/claude_desktop_config.json`
Using uv (recommended):
```json
{
"mcpServers": {
"duckduckgo-search": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/websearch_mcp",
"run",
"python",
"server.py"
]
}
}
}
```
Using Python directly with virtual environment:
```json
{
"mcpServers": {
"duckduckgo-search": {
"command": "/absolute/path/to/websearch_mcp/.venv/bin/python",
"args": ["/absolute/path/to/websearch_mcp/server.py"]
}
}
}
```
## Available Tools
### web_search
Search the web using DuckDuckGo.
**Parameters:**
- `query` (required): The search query
- `max_results` (optional): Maximum number of results (default: 10)
- `region` (optional): Region code (default: "wt-wt" for worldwide)
- Examples: "us-en", "uk-en", "de-de", "fr-fr"
**Example:**
```
Search the web for "Python MCP servers" with max 5 results
```
### image_search
Search for images using DuckDuckGo.
**Parameters:**
- `query` (required): The image search query
- `max_results` (optional): Maximum number of results (default: 10)
- `size` (optional): Image size filter
- Options: "small", "medium", "large", "wallpaper"
- `type` (optional): Image type filter
- Options: "photo", "clipart", "gif", "transparent", "line"
**Example:**
```
Search for "cute puppies" images, large size, photo type, max 5 results
```
### download_image
Download an image from a URL to your local machine.
**Parameters:**
- `url` (required): The URL of the image to download
- `filename` (optional): Custom filename for the downloaded image
- `download_dir` (optional): Directory to save the image (default: "./downloads")
**Example:**
```
Download image from https://example.com/image.jpg to ./my-images/
```
## Dependencies
- [duckduckgo_search](https://github.com/deedy5/ddgs) - DuckDuckGo search library
- [mcp](https://pypi.org/project/mcp/) - Model Context Protocol SDK
- [httpx](https://www.python-httpx.org/) - HTTP client for downloading images
## License
See LICENSE file for details.
## Notes
- Images are downloaded to `./downloads` by default
- The download directory will be created automatically if it doesn't exist
- Web search respects DuckDuckGo's rate limits
- All searches are anonymous (no tracking)
TDQS
A4/5.0
Scored across 3 tools
Disambiguation5/5
Each tool has a distinct purpose: web_search for web results, image_search for image results, and download_image for saving images locally. No overlap.
Naming Consistency5/5
All tools follow the same verb_noun snake_case pattern: download_image, image_search, web_search.
Tool Count5/5
Three tools are well-scoped for a search server covering web search, image search, and image downloading. Not too few or too many.
Completeness4/5
Core search and download functionality is covered. Minor gaps exist (e.g., no video or news search), but the surface is sufficient for basic DuckDuckGo tasks.
Maintenance
ActivityInactive
ResponsivenessNo issues