Skip to main content

MCP Server (SSE) for searching via DuckDuckGo

Project description

DuckDuckGo Search MCP Server (SSE)

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

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

Usage

Startup

To manage this project, it's better to use uv.

  1. Clone this repository
git clone https://github.com/wildoranges/duckduckgo-mcp-server-sse
cd duckduckgo-mcp-server-sse
  1. Start the server (One-time execution)
uv run python src/duckduckgo_mcp_server/server.py
  1. Or, you can create a venv to run
uv sync
source .venv/bin/activate
python src/duckduckgo_mcp_server/server.py
  1. You can modify server.py to change the host and port. default is 0.0.0.0:18000.

Settings in CLINE

Add the following configuration:

{
    "mcpServers": {
        "ddg-search-sse": {
            "disabled": false,
            "timeout": 60,
            "type": "sse",
            "url": "http://0.0.0.0:18000/sse",
            "headers": {
                "Accept": "application/json, text/event-stream"
            }
        }
    }
}

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

duckduckgo_mcp_server_sse-0.1.1.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

duckduckgo_mcp_server_sse-0.1.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file duckduckgo_mcp_server_sse-0.1.1.tar.gz.

File metadata

File hashes

Hashes for duckduckgo_mcp_server_sse-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f33d68f8e24aab193d709804cc9c173f8b38eb29e004d4b67d644dc6455738a9
MD5 28bde4bc5dddba99d9024f92e12adc62
BLAKE2b-256 7955d13125c9666efef5edc9f23aa4dee1915a17c653fdc70fb22de0299cfe05

See more details on using hashes here.

File details

Details for the file duckduckgo_mcp_server_sse-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for duckduckgo_mcp_server_sse-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2854fbe2cccd12506ac22fea08ccb65f9a9ba30ec0082c1161ebc5c2a40386a3
MD5 fd540beaf27a44a03afdf8472ca60cea
BLAKE2b-256 d951089930b7510548c13e923b754a3a597606e8931e607420c24ccaccaa0d09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page