DuckDuckGo搜索服务

一个提供DuckDuckGo网络搜索功能、内容获取与解析的MCP服务器,具备速率限制和LLM友好输出等功能。

  • by npatil-dev
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 SoftwareHackerNick/duckduckgo-mcp-server

使用说明

DuckDuckGo搜索MCP服务器

一种模型上下文协议(MCP)服务器,通过DuckDuckGo提供网络搜索功能,并具有用于内容获取和解析的附加功能。

特性

  • 网络搜索:使用高级速率限制和结果格式搜索DuckDuckGo
  • 内容获取:通过智能文本提取检索和解析网页内容
  • 速率限制:内置对搜索和内容获取速率限制的保护
  • 错误处理:全面的错误处理和记录
  • LLM友好输出:专门为大型语言模型使用而格式化的结果

安装

通过Smithery安装

通过以下方式自动安装适用于Claude Desktop的DuckDuckGo搜索服务器 史密瑟里:

npx -y @smithery/cli install @nickclyde/duckduckgo-mcp-server --client claude

通过安装 uv

使用以下命令直接从PyPI安装 uv:

uv pip install duckduckgo-mcp-server

用法

使用Claude Desktop运行

  1. 下载 克劳德桌面
  2. 创建或编辑您的Claude Desktop配置:
    • 在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 在Windows上: %APPDATA%\Claude\claude_desktop_config.json

添加以下配置:

{
    "mcpServers": {
        "ddg-search": {
            "command": "uvx",
            "args": ["duckduckgo-mcp-server"]
        }
    }
}
  1. 重新启动克劳德桌面

发展

对于本地开发,您可以使用MCP CLI:

# Run with the MCP Inspector
mcp dev server.py

# Install locally for testing with Claude Desktop
mcp install server.py

可用工具

1.搜索工具

async def search(query: str, max_results: int = 10) -> str

在DuckDuckGo上执行网络搜索并返回格式化结果。

参数:

  • query:搜索查询字符串
  • max_results:要返回的最大结果数(默认值:10)

退货: 包含带有标题、URL和片段的搜索结果的格式化字符串。

2.内容获取工具

async def fetch_content(url: str) -> str

从网页中获取和解析内容。

参数:

  • url:从中获取内容的网页URL

退货: 已清理并格式化网页中的文本内容。

详细功能

速率限制

  • 搜索:每分钟限制30个请求
  • 内容获取:每分钟限制20个请求
  • 自动队列管理和等待时间

结果处理

  • 删除广告和无关内容
  • 清理DuckDuckGo重定向URL
  • 格式化结果以实现最佳LLM消耗
  • 适当截断长内容

错误处理

  • 全面的错误捕获和报告
  • 通过MCP上下文进行详细日志记录
  • 在速率限制或超时方面表现良好

贡献

欢迎问题和拉取请求!一些有待改进的领域:

  • 其他搜索参数(地区、语言等)
  • 增强的内容解析选项
  • 用于频繁访问内容的缓存层
  • 额外的限速策略

许可证

该项目根据MIT许可证获得许可。