使用说明
项目简介
DuckDuckGo Search Server 是一个实现了 Model Context Protocol (MCP) 的服务器,旨在为大型语言模型 (LLM) 提供通过 DuckDuckGo 进行网页搜索和抓取网页内容的功能。它允许LLM客户端(如 Claude Desktop)调用预设的工具,从而获取互联网上的实时信息,增强LLM的知识库和上下文理解能力。
主要功能点
- 网页搜索 (Web Search): 通过 DuckDuckGo 搜索引擎执行关键词搜索,并返回结构化的搜索结果,方便LLM理解和使用。
- 内容抓取 (Content Fetching): 根据提供的URL抓取网页内容,提取关键文本信息,去除HTML标签和无关元素,为LLM提供干净、可用的网页文本。
- 速率限制 (Rate Limiting): 内置速率限制机制,防止因频繁请求触发DuckDuckGo的服务限制,保证服务的稳定性和可靠性。
- 错误处理 (Error Handling): 提供全面的错误处理和日志记录,方便开发者监控和调试。
- LLM友好输出 (LLM-Friendly Output): 搜索和抓取结果都经过优化,格式化为LLM易于理解和处理的文本格式。
安装步骤
方法一:通过 Smithery 安装 (适用于 Claude Desktop 自动安装)
- 确保已安装 Smithery CLI。
- 运行以下命令,即可自动安装 DuckDuckGo Search Server 并配置 Claude Desktop 客户端:
npx -y @smithery/cli install @nickclyde/duckduckgo-mcp-server --client claude
方法二:通过 'uv' 手动安装 (通用安装方法)
- 确保已安装 Python 环境,并安装了 'uv' 包管理器 (推荐使用 'uv',也可以使用 'pip')。
- 运行以下命令,安装 'duckduckgo-mcp-server' Python 包:
或者使用 'pip':uv pip install duckduckgo-mcp-serverpip install duckduckgo-mcp-server
服务器配置 (Claude Desktop 客户端)
如果使用 Claude Desktop 作为 MCP 客户端,需要编辑 Claude Desktop 的配置文件 'claude_desktop_config.json',添加以下服务器配置信息。
配置文件路径:
- macOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%\Claude\claude_desktop_config.json'
配置内容 (JSON 格式):
{ "mcpServers": { "ddg-search": { // 服务器名称,客户端配置中引用此名称 "command": "uvx", // 运行命令,uvx 用于运行已安装的 Python 包的可执行文件 "args": ["duckduckgo-mcp-server"] // 命令参数,这里指定运行 duckduckgo-mcp-server 包提供的服务器程序 } } }
配置说明:
- '"ddg-search"': 为该 MCP 服务器自定义的名称,在 Claude Desktop 客户端配置中会使用这个名称来引用此服务器。
- '"command": "uvx"': 指定运行服务器的命令。'uvx' 是 'uv' 包管理器提供的可以直接运行已安装 Python 包中可执行文件的命令。 如果您使用 'pip' 安装,可能需要将 'command' 设置为 Python 解释器的路径,例如 '"command": "/path/to/python"',并相应调整 'args'。但使用 'uvx' 通常更方便。
- '"args": ["duckduckgo-mcp-server"]': 指定传递给 'uvx' 命令的参数。'duckduckgo-mcp-server' 是指要运行的 Python 包提供的可执行程序入口点。
配置完成后,重启 Claude Desktop 使配置生效。
基本使用方法
- 启动 MCP 服务器:按照上述安装步骤配置 Claude Desktop 后,当 Claude Desktop 启动时,会自动尝试连接并启动配置的 MCP 服务器。 如果您手动安装,并且不使用 Claude Desktop,则需要手动运行 'duckduckgo-mcp-server' 命令来启动服务器 (具体启动命令取决于您的安装方式,例如直接运行 'uvx duckduckgo-mcp-server' 或 'python -m duckduckgo_mcp_server.server')。
- 在支持 MCP 协议的 LLM 客户端 (如 Claude Desktop) 中,当需要进行网页搜索或抓取网页内容时,LLM 可以调用服务器提供的以下工具:
- 'search(query: str, max_results: int = 10)': 执行 DuckDuckGo 搜索。'query' 参数为搜索关键词,'max_results' 参数指定返回的最大结果数(默认为10)。
- 'fetch_content(url: str)': 抓取指定 URL 的网页内容。'url' 参数为要抓取的网页地址。
注意: 具体的工具调用方式取决于 LLM 客户端的实现。通常,在 LLM 的交互界面中,您可以使用自然语言指令触发工具调用,例如 “使用搜索工具搜索 ‘最新AI技术发展’”,或者 “使用内容抓取工具获取 ‘https://example.com’ 的内容”。 LLM 客户端会将这些指令转换为对 MCP 服务器工具的调用,并将结果返回给用户。
信息
分类
网页与API