Skip to main content
Glama
zopalz

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