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
Installation
You can install the server using pip:
pip install duckduckgo-mcp-server-sse
Startup
You can start the server using the following command:
duckduckgo-mcp-server-sse --host <your-host> --port <your-port>
--host: The host to bind the server to. Defaults to0.0.0.0.--port: The port to run the server on. Defaults to8000.
For example:
duckduckgo-mcp-server-sse --host 127.0.0.1 --port 8080
Settings in CLINE
Add the following configuration, adjusting the host and port to match your server setup:
{
"mcpServers": {
"ddg-search-sse": {
"disabled": false,
"timeout": 60,
"type": "sse",
"url": "http://127.0.0.1:8000/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 stringmax_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.
Metadata
Release files for duckduckgo-mcp-server-sse 0.1.1.post1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| duckduckgo_mcp_server_sse-0.1.1.post1.tar.gz | 22.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| duckduckgo_mcp_server_sse-0.1.1.post1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.5 kB
Release files / duckduckgo_mcp_server_sse-0.1.1.post1.tar.gz
| Download URL | duckduckgo_mcp_server_sse-0.1.1.post1.tar.gz |
|---|---|
| Size | 22.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b2b3d9a550c28dd4a1e8cd6bfdb0e8d83d8bdde26baafe8f136f9f20406c48a
|
|
BLAKE2b-256 checksum How to use checksums |
4d4c4f4a5099df424486579109f1c4587030b38f3ee4284fc35653820c7ed22c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.12
|
Release files / duckduckgo_mcp_server_sse-0.1.1.post1-py3-none-any.whl
| Download URL | duckduckgo_mcp_server_sse-0.1.1.post1-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5c2a4261956e0af31b5a76cf798183fdc5a7b698abdf9c4f78b1acb7ccd6926
|
|
BLAKE2b-256 checksum How to use checksums |
bdb76aa9afd56bc7ab1c4d6bf66c638035908636df33e6c12d4ad8827bd3ac49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.12
|