DuckDuckGo Web Search

by kouui

Not rated
GitHub

About

Enables web search capabilities through DuckDuckGo, retrieving search results with titles, URLs, and snippets while offering optional content fetching with HTML-to-markdown conversion for real-time internet information access.

Details

Author
kouui
Repository
kouui/web-search-duckduckgo
Categories
Productivity, Developer Tools, Design, AI, Search, Infrastructure
Tags
#web

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.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name DuckDuckGo Web Search
    Command (node, npx, python, etc.) uv
    Arguments
    • Argument 1 --directory
    • Argument 2 /path/to/web-search-duckduckgo
    • Argument 3 run
    • Argument 4 main.py

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

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.

    {
"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

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

search_and_fetch

Search the web and fetch the content of the URLs. Parameters: query (string), limit (optional integer, default: 3, maximum: 10)

fetch

Fetch the content of a specific URL. Parameters: url (string)

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

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

Linux

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

Macos

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

Windows

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

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.

    {
"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

    {
        "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).

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.