README
🚀 通过DuckDuckGo搜索的MCP服务器
一个提供DuckDuckGo网络搜索功能的模型上下文协议(MCP)服务器,具备内容抓取和解析的额外功能,可助力用户高效获取网络信息。
🚀 快速开始
本服务器是一个提供DuckDuckGo网络搜索功能的模型上下文协议(MCP)服务器,具有内容抓取和解析的额外功能。
✨ 主要特性
- 网络搜索:使用DuckDuckGo进行高级速率限制和结果格式化
- 内容抓取:获取并解析网页内容,实现智能文本提取
- 速率限制:内置搜索和内容抓取的速率保护机制
- 错误处理:全面的错误捕获和日志记录
- 大语言模型友好的输出:经过格式化的结果,专为大型语言模型设计
📦 安装指南
通过Smithery安装
要自动通过Smithery安装DuckDuckGo搜索服务器:
npx -y @smithery/cli install @nickclyde/duckduckgo-mcp-server --client claude
通过uv安装
直接从PyPI使用uv安装:
uv pip install duckduckgo-mcp-server
💻 使用示例
在Claude Desktop上运行
- 下载Claude Desktop
- 创建或编辑Claude Desktop配置:
- 在macOS上:
~/Library/Application Support/Claude/claude_desktop_config.json - 在Windows上:
%APPDATA%\Claude\claude_desktop_config.json
- 在macOS上:
添加以下配置:
{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"]
}
}
}
- 重启Claude Desktop
开发
对于本地开发,可以使用MCP CLI:
# 使用MCP Inspector运行
mcp dev server.py
# 为测试安装到Claude Desktop
mcp install server.py
可用工具
搜索工具
async def search(query: str, max_results: int = 10) -> str
在DuckDuckGo上执行网络搜索并返回格式化结果。
参数:
query:搜索查询字符串max_results:要返回的最大结果数(默认值为10)
返回: 包含标题、URL和摘录的格式化字符串。
内容抓取工具
async def fetch_content(url: str) -> str
从网页抓取并解析内容。
参数:
url:要抓取内容的网页地址
返回: 清理后的格式化文本内容。
📚 详细文档
功能细节
速率限制
- 搜索:每分钟最多30次请求
- 内容抓取:每分钟最多20次请求
- 自动队列管理和等待时间
结果处理
- 移除广告和无关内容
- 清理DuckDuckGo重定向URL
- 格式化结果以优化大语言模型的使用体验
- 适当截断长内容
错误处理
- 全面错误捕获和报告
- 详细日志记录通过MCP上下文
- 在速率限制或超时情况下实现优雅降级
🔧 技术细节
贡献
欢迎提出问题和拉取请求!一些改进方向包括:
- 文档:改进现有文档,添加更多解释和教程。
- 代码质量:审查和优化代码库,提升代码质量。
- 功能扩展:探索新功能并将其合并到项目中。
访问GitHub仓库查看贡献指南和其他详细信息。
📄 许可证
本项目的许可信息可以在LICENSE文件中找到。
Scan to contact