这是一个提供基于DuckDuckGo网络搜索功能的Model Context Protocol (MCP)服务器,还附带了内容抓取和解析的额外功能,能为用户提供更全面的信息获取体验。
该MCP服务器可提供基于DuckDuckGo的网络搜索功能,同时具备内容抓取和解析能力。你可以按照以下步骤进行安装和使用。
使用Smithery可自动安装DuckDuckGo搜索服务器以供Claude Desktop使用,执行以下命令:
npx -y @smithery/cli install @nickclyde/duckduckgo-mcp-server --client claude
uv直接安装直接从PyPI使用uv进行安装,命令如下:
uv pip install duckduckgo-mcp-server
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json
在配置文件中添加以下内容:{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"]
}
}
}
在本地进行开发时,可使用MCP CLI:
# 使用MCP Inspector运行
mcp dev server.py
# 安装用于与Claude Desktop测试
mcp install server.py
result = await search("Python编程")
print(result)
输出结果可能类似于:
标题:Python编程 - 维基百科
链接:https://zh.wikipedia.org/wiki/Python_(编程语言)
摘录:Python是一种高级编程语言,以其易读性著称。
...
content = await fetch_content("https://www.example.com")
print(content)
输出结果可能类似于:
这是一个示例网页内容。欢迎来到我们的网站!
在实际开发中,你可以根据需求调整搜索参数和内容抓取方式,以满足不同场景的需求。例如,在搜索时可以设置更多的过滤条件和排序选项,在内容抓取时可以选择更适合的解析方式。
async def search(query: str, max_results: int = 10) -> str
在DuckDuckGo上执行网络搜索并返回格式化结果。 参数:
query:搜索查询字符串。max_results:要返回的最大结果数(默认值为10)。
返回:包含标题、链接和摘录的格式化字符串。async def fetch_content(url: str) -> str
从指定URL获取并解析网页内容,返回文本格式的结果。 参数:
url:要抓取的内容URL。
返回:提取的纯文本内容。该服务器基于DuckDuckGo的搜索API实现搜索功能,通过异步编程提高搜索效率。在内容抓取方面,采用了多种解析方式,以适应不同网页结构。同时,内置了速率限制和错误处理机制,保障服务器的稳定运行。
我们欢迎社区贡献,以下是一些可能的改进方向: