项目简介

本项目是一个实现了 Model Context Protocol (MCP) 协议的服务器,旨在为大型语言模型 (LLM) 客户端提供Web搜索和网页内容提取的功能。通过部署此服务器,LLM应用可以方便地获取最新的网络信息,并从指定网页中提取文本内容,从而增强其上下文理解和信息处理能力。

主要功能点

  • Web搜索工具 (Search_web): 允许LLM客户端通过关键词在互联网上进行搜索,并返回包含答案和来源的搜索结果。底层使用 Tavily API 进行搜索,并可配置使用 Searxng 作为备选方案。
  • 网页内容提取工具 (Extract_webpage): 允许LLM客户端提供URL列表,服务器将提取这些网页的文本内容并返回。同样使用 Tavily API 进行网页内容提取。
  • 标准MCP协议支持: 完全遵循 MCP 协议规范,能够与任何兼容 MCP 协议的客户端进行通信。
  • SSE传输协议: 使用 Server-Sent Events (SSE) 作为默认的通信协议,实现轻量级和高效的实时数据传输。
  • 易于部署: 提供 Docker Compose 部署方式,方便用户快速搭建和运行服务。

安装步骤

  1. 安装 Docker 和 Docker Compose: 确保您的系统已安装 Docker 和 Docker Compose。
  2. 下载仓库代码: 将 GitHub 仓库 mcp-web-search 克隆到本地。
  3. 配置环境变量:
    • 复制仓库根目录下的 'docker-compose.yml' 文件。
    • 创建 '.env' 文件在与 'docker-compose.yml' 同级的目录下,并根据需要设置以下环境变量:
      • 'TAVILY_API_KEY': 必需。您的 Tavily API 密钥。您需要在 Tavily 官网 注册并获取 API 密钥。
      • 'RESULT_NUMBER': 可选。Web 搜索返回的最大结果数,默认为 5。
      • 'SEARXNG_FALLBACK': 可选。是否启用 Searxng 作为 Tavily API 的备选方案。设置为 'true' 或 'false'。默认为 'false'。
      • 'SEARXNG_URL': 可选。如果启用 Searxng 备选方案,则需要设置 Searxng 实例的 URL。
      • 'RELEVANCE_LIMIT': 可选。Searxng 搜索结果的相关性阈值,默认为 '0.1'。
      • 'EXTRACT_DEPTH': 可选。网页内容提取的深度,可选值为 'basic' 或 'advanced',默认为 'advanced'。
  4. 启动服务: 在 'docker-compose.yml' 文件所在目录,执行命令 'docker-compose up -d' 启动服务。服务默认监听 '8960' 端口。

服务器配置 (MCP客户端)

对于需要连接此 MCP 服务器的客户端(例如 LibreChat),您需要配置服务器连接信息。以下是 LibreChat 客户端的配置示例(配置在 'librechat.yaml' 文件中):

{
  "mcpServers": {
    "web-search": {
      "type": "sse",
      "url": "http://<您的服务器地址>:8960/sse"
    }
  }
}

配置参数说明:

  • 'server name': 'web-search' (可自定义,用于在客户端中标识此服务器)
  • 'type': 'sse' (指定使用 SSE 协议连接)
  • 'url': 'http://<您的服务器地址>:8960/sse' (替换 '<您的服务器地址>' 为实际部署 MCP 服务器的 IP 地址或域名)

基本使用方法

  1. 将 MCP 服务器添加到客户端: 根据客户端的文档,将上述服务器配置信息添加到客户端的 MCP 服务器列表中。
  2. 重启客户端: 重启客户端以连接到 MCP 服务器并发现可用的工具。
  3. 创建或配置 Agent: 在客户端中创建或选择一个 Agent,并将 'Search_web' 和 'Extract_webpage' 工具添加到该 Agent 的工具列表中。
  4. 使用 Agent: 在与 Agent 的对话中,您可以指示 Agent 使用 "Search_web" 工具进行网络搜索,或使用 "Extract_webpage" 工具提取网页内容。例如,您可以向 Agent 发送指令 "请搜索一下今天的天气" 或 "请提取以下网址的内容:[URL1], [URL2]"。

信息

分类

网页与API