# 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:
```bash
pip install duckduckgo-mcp-server-sse
```
### Startup
You can start the server using the following command:
```bash
duckduckgo-mcp-server-sse --host <your-host> --port <your-port>
```
- `--host`: The host to bind the server to. Defaults to `0.0.0.0`.
- `--port`: The port to run the server on. Defaults to `8000`.
For example:
```bash
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:
```json
{
"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
```python
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
```python
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.
Raw data
{
"_id": null,
"home_page": null,
"name": "duckduckgo-mcp-server-sse",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "duckduckgo, http, mcp, search, sse, web-search",
"author": null,
"author_email": "Nick Clyde <nick@clyde.tech>, wildoranges <zkd18cjb@mail.ustc.edu.cn>",
"download_url": "https://files.pythonhosted.org/packages/4d/4c/4f4a5099df424486579109f1c4587030b38f3ee4284fc35653820c7ed22c/duckduckgo_mcp_server_sse-0.1.1.post1.tar.gz",
"platform": null,
"description": "# DuckDuckGo Search MCP Server (SSE)\n\nA Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing, running over HTTP (SSE).\n\n## Features\n\n- **Web Search**: Search DuckDuckGo with advanced rate limiting and result formatting\n- **Content Fetching**: Retrieve and parse webpage content with intelligent text extraction\n- **Rate Limiting**: Built-in protection against rate limits for both search and content fetching\n- **Error Handling**: Comprehensive error handling and logging\n- **LLM-Friendly Output**: Results formatted specifically for large language model consumption\n\n## Usage\n\n### Installation\n\nYou can install the server using pip:\n\n```bash\npip install duckduckgo-mcp-server-sse\n```\n\n### Startup\n\nYou can start the server using the following command:\n\n```bash\nduckduckgo-mcp-server-sse --host <your-host> --port <your-port>\n```\n\n- `--host`: The host to bind the server to. Defaults to `0.0.0.0`.\n- `--port`: The port to run the server on. Defaults to `8000`.\n\nFor example:\n\n```bash\nduckduckgo-mcp-server-sse --host 127.0.0.1 --port 8080\n```\n\n### Settings in CLINE\n\nAdd the following configuration, adjusting the host and port to match your server setup:\n\n```json\n{\n \"mcpServers\": {\n \"ddg-search-sse\": {\n \"disabled\": false,\n \"timeout\": 60,\n \"type\": \"sse\",\n \"url\": \"http://127.0.0.1:8000/sse\",\n \"headers\": {\n \"Accept\": \"application/json, text/event-stream\"\n }\n }\n }\n}\n```\n\n## Available Tools\n\n### 1. Search Tool\n\n```python\nasync def search(query: str, max_results: int = 10) -> str\n```\n\nPerforms a web search on DuckDuckGo and returns formatted results.\n\n**Parameters:**\n- `query`: Search query string\n- `max_results`: Maximum number of results to return (default: 10)\n\n**Returns:**\nFormatted string containing search results with titles, URLs, and snippets.\n\n### 2. Content Fetching Tool\n\n```python\nasync def fetch_content(url: str) -> str\n```\n\nFetches and parses content from a webpage.\n\n**Parameters:**\n- `url`: The webpage URL to fetch content from\n\n**Returns:**\nCleaned and formatted text content from the webpage.\n\n## Features in Detail\n\n### Rate Limiting\n\n- Search: Limited to 30 requests per minute\n- Content Fetching: Limited to 20 requests per minute\n- Automatic queue management and wait times\n\n### Result Processing\n\n- Removes ads and irrelevant content\n- Cleans up DuckDuckGo redirect URLs\n- Formats results for optimal LLM consumption\n- Truncates long content appropriately\n\n### Error Handling\n\n- Comprehensive error catching and reporting\n- Detailed logging through MCP context\n- Graceful degradation on rate limits or timeouts\n\n## Contributing\n\nIssues and pull requests are welcome! Some areas for potential improvement:\n\n- Additional search parameters (region, language, etc.)\n- Enhanced content parsing options\n- Caching layer for frequently accessed content\n- Additional rate limiting strategies\n\n## License\n\nThis project is licensed under the MIT License.\n",
"bugtrack_url": null,
"license": null,
"summary": "MCP Server (SSE) for searching via DuckDuckGo",
"version": "0.1.1.post1",
"project_urls": {
"Homepage": "https://github.com/wildoranges/duckduckgo-mcp-server-sse",
"Issues": "https://github.com/wildoranges/duckduckgo-mcp-server-sse/issues"
},
"split_keywords": [
"duckduckgo",
" http",
" mcp",
" search",
" sse",
" web-search"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "bdb76aa9afd56bc7ab1c4d6bf66c638035908636df33e6c12d4ad8827bd3ac49",
"md5": "c9dbf49a25ca63f31f6ee97a104a980b",
"sha256": "c5c2a4261956e0af31b5a76cf798183fdc5a7b698abdf9c4f78b1acb7ccd6926"
},
"downloads": -1,
"filename": "duckduckgo_mcp_server_sse-0.1.1.post1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c9dbf49a25ca63f31f6ee97a104a980b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 6895,
"upload_time": "2025-07-16T06:03:21",
"upload_time_iso_8601": "2025-07-16T06:03:21.956084Z",
"url": "https://files.pythonhosted.org/packages/bd/b7/6aa9afd56bc7ab1c4d6bf66c638035908636df33e6c12d4ad8827bd3ac49/duckduckgo_mcp_server_sse-0.1.1.post1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4d4c4f4a5099df424486579109f1c4587030b38f3ee4284fc35653820c7ed22c",
"md5": "0f39a432c4c9b20fb6329947aa90d108",
"sha256": "0b2b3d9a550c28dd4a1e8cd6bfdb0e8d83d8bdde26baafe8f136f9f20406c48a"
},
"downloads": -1,
"filename": "duckduckgo_mcp_server_sse-0.1.1.post1.tar.gz",
"has_sig": false,
"md5_digest": "0f39a432c4c9b20fb6329947aa90d108",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 22647,
"upload_time": "2025-07-16T06:03:23",
"upload_time_iso_8601": "2025-07-16T06:03:23.496793Z",
"url": "https://files.pythonhosted.org/packages/4d/4c/4f4a5099df424486579109f1c4587030b38f3ee4284fc35653820c7ed22c/duckduckgo_mcp_server_sse-0.1.1.post1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-16 06:03:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "wildoranges",
"github_project": "duckduckgo-mcp-server-sse",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "duckduckgo-mcp-server-sse"
}