https://github.com/nickclyde/duckduckgo-mcp-server
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
https://github.com/nickclyde/duckduckgo-mcp-server
Last synced: 8 months ago
JSON representation
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
- Host: GitHub
- URL: https://github.com/nickclyde/duckduckgo-mcp-server
- Owner: nickclyde
- License: mit
- Created: 2025-02-22T21:19:19.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-02-22T21:45:46.000Z (9 months ago)
- Last Synced: 2025-02-22T21:46:38.592Z (9 months ago)
- Language: Python
- Size: 0 Bytes
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mcp-servers - duckduckgo-mcp-server - MCP server for web search using DuckDuckGo, enabling privacy-focused search within the MCP protocol. Includes both TypeScript and Python implementations. ([Read more](/details/duckduckgo-mcp-server.md)) `mcp` `duckduckgo` `web-search` `privacy` (Data Access & Integration MCP Servers)
- awesome-mcp-zh - nickclyde/duckduckgo-mcp-server
- best-of-mcp-servers - GitHub
- awesome-mcp-servers - nickclyde/duckduckgo-mcp-server - Web search using DuckDuckGo (Legend / 🔎 <a name="search"></a>Search)
- awesome-mcp-servers - **duckduckgo-mcp-server** - A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing. `python` `mcp` `server` `web` `go` `pip install git+https://github.com/nickclyde/duckduckgo-mcp-server` (🤖 AI/ML)
- awesome-mcp-servers - DuckDuckGo MCP Server - A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing. (Table of Contents / Search)
- toolsdk-mcp-registry - ❌ duckduckgo-mcp-server
- metorial-index - DuckDuckGo Search Server - Facilitates web search capabilities via DuckDuckGo, offering content fetching and parsing with a focus on formatting results for large language model integration. Includes advanced rate limiting features for both search requests and content retrieval. (APIs and HTTP Requests)
README
# DuckDuckGo Search MCP Server
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
## Features
- **Web Search**: Search DuckDuckGo with advanced rate limiting and result formatting
- **Content Fetching**: Retrieve and parse webpage content with intelligent text extraction
- **Rate Limiting**: Built-in protection against rate limits for both search and content fetching
- **Error Handling**: Comprehensive error handling and logging
- **LLM-Friendly Output**: Results formatted specifically for large language model consumption
## Installation
Install directly from PyPI using `uv`:
```bash
uv pip install duckduckgo-mcp-server
```
## Usage
### Running with Claude Desktop
1. Download [Claude Desktop](https://claude.ai/download)
2. Create or edit your Claude Desktop configuration:
- On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- On Windows: `%APPDATA%\Claude\claude_desktop_config.json`
Add the following configuration:
```json
{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"]
}
}
}
```
3. Restart Claude Desktop
### Development
For local development, you can use the MCP CLI:
```bash
# Run with the MCP Inspector
mcp dev server.py
# Install locally for testing with Claude Desktop
mcp install server.py
```
## Available Tools
### 1. Search Tool
```python
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.
### 2. Content Fetching Tool
```python
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.
## Features in Detail
### Rate Limiting
- Search: Limited to 30 requests per minute
- Content Fetching: Limited to 20 requests per minute
- Automatic queue management and wait times
### Result Processing
- Removes ads and irrelevant content
- Cleans up DuckDuckGo redirect URLs
- Formats results for optimal LLM consumption
- Truncates long content appropriately
### Error Handling
- Comprehensive error catching and reporting
- Detailed logging through MCP context
- Graceful degradation on rate limits or timeouts
## Contributing
Issues and pull requests are welcome! Some areas for potential improvement:
- Additional search parameters (region, language, etc.)
- Enhanced content parsing options
- Caching layer for frequently accessed content
- Additional rate limiting strategies
## License
This project is licensed under the MIT License.