MCP ExplorerExplorer

DuckDuckGo Search MCP Server

@nickclydeon 13 days ago
199 MIT License
FreeCommunity
Web Services
#web search#duckduckgo#content fetching#rate limiting#mcp#text extraction
A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.

Overview

What is DuckDuckGo Search MCP Server

The DuckDuckGo Search MCP Server is a Model Context Protocol server that provides web search capabilities through DuckDuckGo, focusing on enhanced content fetching and parsing features. It is designed for integration with large language models (LLMs) and aims to deliver user-friendly search experiences with intelligent result formatting.

Use cases

This server is particularly useful for applications that require web search functionalities, such as chatbots, virtual assistants, and research tools. It enables users to perform web searches and retrieve relevant content without ads or irrelevant information, making it suitable for both personal and professional use cases.

How to use

To use the DuckDuckGo Search MCP Server, users can install it via Smithery or directly from PyPI using ‘uv’. After installation, configuration is required in the Claude Desktop application, where the server is defined in a JSON format. Once configured, users can search and fetch content through the provided asynchronous functions.

Key features

Key features of the DuckDuckGo Search MCP Server include web search capabilities with advanced rate limiting, intelligent content fetching and parsing, comprehensive error handling, and LLM-friendly output formatting. It also ensures efficient management of requests to comply with rate limits.

Where to use

The DuckDuckGo Search MCP Server can be used in any application requiring web search functionalities, particularly those that leverage LLMs like Claude Desktop. Its robust design and built-in rate limiting make it ideal for platforms seeking to provide efficient and accurate search results.

Content

DuckDuckGo Search MCP Server

smithery badge

A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.

DuckDuckGo Server MCP server

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

Installing via Smithery

To install DuckDuckGo Search Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @nickclyde/duckduckgo-mcp-server --client claude

Installing via uv

Install directly from PyPI using uv:

uv pip install duckduckgo-mcp-server

Usage

Running with Claude Desktop

  1. Download Claude Desktop
  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:

{
  "mcpServers": {
    "ddg-search": {
      "command": "uvx",
      "args": [
        "duckduckgo-mcp-server"
      ]
    }
  }
}
  1. Restart Claude Desktop

Development

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

Available Tools

1. Search Tool

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

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.

Tools

search
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
fetch_content
Fetch and parse content from a webpage URL. Args: url: The webpage URL to fetch content from ctx: MCP context for logging

Comments