Labsco
nickclyde logo

DuckDuckGo Search

β˜… 1,300

from nickclyde

Perform web searches using the DuckDuckGo API, with features for fetching and parsing content.

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

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

Available Tools

1. Search Tool

Copy & paste β€” that's it
async def search(query: str, max_results: int = 10, region: str = "") -> 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)

  • region: (Optional) Region/language code to override the default. Leave empty to use the configured default region.

Region Code Examples:

  • us-en: United States (English)

  • cn-zh: China (Chinese)

  • jp-ja: Japan (Japanese)

  • de-de: Germany (German)

  • fr-fr: France (French)

  • wt-wt: No specific region

Returns: Formatted string containing search results with titles, URLs, and snippets.

Example Usage:

  • Search with default settings: search("python tutorial")

  • Search with specific region: search("latest news", region="jp-ja") for Japanese news

2. Content Fetching Tool

Copy & paste β€” that's it
async def fetch_content(
 url: str,
 start_index: int = 0,
 max_length: int = 8000,
 backend: Optional[str] = None,
) -> str

Fetches and parses content from a webpage.

Parameters:

  • url: The webpage URL to fetch content from

  • start_index: Character offset to start reading from (for pagination)

  • max_length: Maximum number of characters to return

  • backend: Optional per-call override of the default fetch backend ("httpx", "curl", or "auto"). When omitted, uses whatever was set via --fetch-backend at server startup.

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

Content Safety

SafeSearch Filtering: Configured at server startup via DDG_SAFE_SEARCH environment variable

  • Controlled by administrators, not modifiable by AI assistants

  • Filters inappropriate content based on the selected level

  • Uses DuckDuckGo's official kp parameter

Region Localization:

  • Default region set via DDG_REGION environment variable

  • Can be overridden per search request by AI assistants

  • Improves result relevance for specific geographic regions

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:

  • Enhanced content parsing options

  • Caching layer for frequently accessed content

  • Additional rate limiting strategies

License

This project is licensed under the MIT License.

Star History