Skip to main content
Glama
kouui

DuckDuckGo Web Search MCP Server

by kouui
README.md
# DuckDuckGo Web Search MCP Server

This project provides an MCP (Model Context Protocol) server that allows you to search the web using the DuckDuckGo search engine and optionally fetch and summarize the content of the found URLs.

## Features

*   **Web Search:** Search the web using DuckDuckGo.
*   **Result Extraction:** Extracts titles, URLs, and snippets from search results.
*   **Content Fetching (Optional):** Fetches the content of the URLs found in the search results and converts it to markdown format using jina api.
*   **Parallel Fetching:** Fetches multiple URLs concurrently for faster processing.
*   **Error Handling:** Gracefully handles timeouts and other potential errors during search and fetching.
*   **Configurable:** Allows you to set the maximum number of search results to return.
* **Jina API**: using jina api to convert html to markdown.
* **MCP Compliant**: This server is designed to be used with any MCP-compatible client.

## Usage

1.  **Prerequisites:**
    *   `uvx` package manager


2. **Claude Desktop Configuration**
    * If you are using Claude Desktop, you can add the server to the `claude_desktop_config.json` file.
    ```json
    {
        "mcpServers": {
            "web-search-duckduckgo": {
                "command": "uvx",
                "args": [
                    "--from",
                    "git+https://github.com/kouui/web-search-duckduckgo.git@main",
                    "main.py"
                ]
            }
        }
    }
    ```
    
    **the above configuration is not working, you might need to clone the repository to local pc and use the following configuration**

    ```json
    {
        "mcpServers": {
            "web-search-duckduckgo": {
                "command": "uv",
                "args": [
                    "--directory",
                    "/path/to/web-search-duckduckgo",
                    "run",
                    "main.py"
                ]
            }
        }
    }
    ```

3. **Tool**
    *   In your MCP client (e.g., Claude), you can now use the following tools:

    *   **`search_and_fetch`:** Search the web and fetch the content of the URLs.

        *   `query`: The search query string.
        *   `limit`: The maximum number of results to return (default: 3, maximum: 10).


    *   **`fetch`:** Fetch the content of a specific URL.

        *   `url`: The URL to fetch.


## License

This project is licensed under the MIT License. (Add a license file if you want to specify a license).

TDQS

B3.3/5.0

Scored across 2 tools

Disambiguation4/5

The two tools have distinct primary purposes: 'search_and_fetch' performs web searches and returns results, while 'fetch' scrapes HTML content from a given URL. However, there is some potential for confusion because 'fetch' accepts a 'url' argument but its description mentions 'search query string' (likely a documentation error), which could blur the boundary between searching and fetching.

Naming Consistency4/5

The tool names follow a consistent verb-based pattern ('fetch' and 'search_and_fetch'), with clear action-oriented naming. The minor deviation is that 'search_and_fetch' uses an 'and' conjunction, but overall the naming is readable and predictable.

Tool Count3/5

With only 2 tools, the server feels thin for a web search and scraping domain. While it covers basic search and fetch operations, more tools (e.g., for advanced search filtering, caching, or handling different content types) would provide better scope. It's borderline but not severely lacking.

Completeness3/5

The server covers core web search and content fetching workflows, but there are notable gaps. For example, it lacks tools for managing search history, refining queries, handling pagination, or supporting different output formats beyond markdown. Agents can work around these, but the surface is not fully comprehensive.

Maintenance

ActivityInactive
ResponsivenessNo issues