项目简介

本项目是一个实现了Model Context Protocol (MCP) 协议的服务器,专注于提供网络搜索功能。它利用DuckDuckGo搜索引擎,允许LLM客户端通过调用预设的工具来执行网络搜索,并能选择抓取搜索结果页面的内容,为LLM提供更丰富的上下文信息。

主要功能点

  • 网络搜索: 使用DuckDuckGo搜索引擎进行关键词搜索。
  • 结果提取: 从搜索结果中提取标题、URL和摘要信息。
  • 内容抓取 (可选): 抓取搜索结果URL指向的网页内容,并转换为Markdown格式。
  • 并行处理: 支持并行抓取多个URL,提高处理速度。
  • 错误处理: 能够优雅地处理搜索和抓取过程中的超时及其他错误。
  • 结果数量可配置: 允许用户设置返回的最大搜索结果数量。
  • MCP 兼容: 完全兼容MCP协议,可以与任何MCP客户端配合使用。

安装步骤

  1. 安装 'uvx' 包管理器 (如果尚未安装): 请根据您的操作系统和Python环境安装 'uvx' 包管理器。 通常可以使用 'pip install uvx' 命令安装。

服务器配置

要将此MCP服务器与MCP客户端(例如 Claude)配合使用,您需要在客户端的配置文件中添加服务器配置信息。 以下是配置示例,您需要根据实际情况进行调整。

配置示例 (claude_desktop_config.json):

{
    "mcpServers": {
        "web-search-duckduckgo": {
            "command": "uvx",  // 启动服务器的命令,这里使用 uvx 包管理器
            "args": [
                "--from",  // 指定从 Git 仓库安装
                "git+https://github.com/kouui/web-search-duckduckgo.git@main", // 仓库地址和分支
                "main.py" //  要执行的服务器主程序文件
            ]
        }
    }
}

注意: 如果上述配置无法直接工作,您可能需要先将仓库克隆到本地计算机,然后使用以下配置,并将 '/path/to/web-search-duckduckgo' 替换为您本地仓库的实际路径。

{
    "mcpServers": {
        "web-search-duckduckgo": {
            "command": "uv", // 启动服务器的命令,这里使用 uv 包管理器
            "args": [
                "--directory", // 指定工作目录为本地仓库路径
                "/path/to/web-search-duckduckgo", // 替换为您的本地仓库路径
                "run",        // uv 命令的子命令,表示运行
                "main.py"     // 要执行的服务器主程序文件
            ]
        }
    }
}

基本使用方法

配置完成后,在您的MCP客户端中,您可以使用以下工具来与此服务器交互:

  • 'search_and_fetch': 执行网络搜索并抓取结果页面内容。

    • 参数:
      • 'query': 搜索关键词 (字符串)
      • 'limit': 返回的最大结果数量 (整数,可选,默认为3,最大为10)
  • 'fetch': 抓取指定URL的网页内容。

    • 参数:
      • 'url': 要抓取的网页URL (字符串)

在LLM应用中,您可以指示LLM客户端调用这些工具,例如:

  • "请使用 'web-search-duckduckgo:search_and_fetch' 工具搜索 '最新的AI技术发展' 并返回最多5个结果。"
  • "请使用 'web-search-duckduckgo:fetch' 工具抓取并总结 'https://example.com/ai-report' 这篇文章。"

服务器会将搜索结果或抓取的内容以JSON-RPC响应的形式返回给客户端,LLM应用可以利用这些信息进行后续处理。

信息

分类

网页与API