MCP HubMCP Hub
nickclyde

duckduckgo-mcp-server

by: nickclyde

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

91created 22/02/2025
Visit
search
parsing

📌Overview

Purpose: The DuckDuckGo Search MCP server aims to provide efficient web search capabilities through DuckDuckGo along with enhanced content fetching and parsing features.

Overview: This Model Context Protocol (MCP) server enables users to perform web searches and retrieve content from DuckDuckGo, with built-in features that ensure compliance with rate limits and optimize results for large language models (LLMs).

Key Features:

  • Web Search: Implements advanced rate limiting and formatting, allowing users to search DuckDuckGo effectively and receive organized results.

  • Content Fetching: Facilitates the retrieval and parsing of webpage content with intelligent text extraction, making it easier to access relevant information.

  • Rate Limiting: Provides built-in protection mechanisms against excessive requests for both search and content fetching to prevent service disruption.

  • Error Handling: Features comprehensive mechanisms for error reporting and logging, ensuring reliability during operations.

  • LLM-Friendly Output: Formats results specifically for seamless integration and consumption by large language models.


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 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.

Result Processing

  • Removes ads and irrelevant content.
  • Cleans up DuckDuckGo redirect URLs.
  • Formats results for optimal LLM consumption.

Error Handling

  • Comprehensive error catching and reporting.
  • Detailed logging through MCP context.

Contributing

Issues and pull requests are welcome! Potential areas for improvement include:

  • Additional search parameters (region, language, etc.).
  • Enhanced content parsing options.
  • Caching layer for frequently accessed content.

License

This project is licensed under the MIT License.