Web_Search_MCP

Web_Search_MCP

🚀 Web_Search_MCP

Web_Search_MCP是一个使用Tavily API和MCP(模型上下文协议)构建的网络搜索工具服务器。本项目展示了如何运用Tavily API创建网络搜索工具,并将其与MCP集成,实现与AI系统的无缝交互,从而为语言模型或应用程序提供实时网络搜索功能。

🚀 快速开始

在运行项目之前,请确保您已经具备以下条件:

  • Python 3.8+:系统上安装了Python 3.8或更高版本。
  • Tavily API密钥:有效的Tavily API密钥,可通过注册Tavily网站获得。
  • uv:Python的uv包管理器。您可以通过以下命令进行安装:
pip install uv

安装步骤

  1. 创建项目目录:创建一个项目目录并导航到其中:
uv init Web_Search_MCP

*** 通过运行上述代码,uv会创建 pyproject.toml.venv 文件 *** 2. 创建项目文件:在 Web_Search_MCP 目录中创建文件 main.py.env。 3. 激活虚拟环境:导航到 .venv/Scripts/ 并激活虚拟环境 4. 复制代码:将代码复制到刚刚创建的 main.py.env 文件中。 5. 安装依赖项:使用 uv 安装所需的Python包:

uv add "mcp[cli]" python-dotenv langchain-community tavily-python

配置

  1. .env 文件
    • Web_Search_MCP 目录中创建一个名为 .env 的文件。
    • 将您的Tavily API密钥添加到 .env 文件中,格式如下:
TAVILY_API_KEY='your_tavily_api_key'

用您的实际Tavily API密钥替换 your_tavily_api_key

  1. claude_desktop_config.json
    • Web_Search_MCP 目录中创建一个名为 claude_desktop_config.json 的文件。
    • 将以下内容粘贴到文件中:
{
"proxy": null,
"model_name": " Claude 2",
"temperature": 0.1,
"max_tokens": 1000,
"tools": [
{
"type": "function_calling",
"tool_name": "search_web",
"description": "Use this tool to search the web and obtain relevant information."
}
]
}
  • 保存文件。

运行

  1. 安装依赖项:在项目目录中打开终端,运行:
pip install -r requirements.txt
  1. 启动服务器:运行以下命令启动服务器:
uvicorn main:app --reload
  1. 访问接口:打开浏览器,访问 http://localhost:8000

✨ 主要特性

该项目的核心在于 search_web 工具,它提供了以下功能:

  • 网络搜索:接受搜索查询作为输入,并使用Tavily API从网络中获取相关搜索结果。
  • 详细结果:提供来自搜索结果的详细信息,包括网站内容、URL、相关性评分、内容类型以及直接答案(如果有)。
  • 格式化输出:以结构良好的JSON格式返回搜索结果。输出包括状态指示器(successerror)、成功时的结果数组和时间戳。
  • 错误处理:在搜索过程中优雅地处理错误,并以JSON格式返回详细的错误信息。
  • 异步处理:搜索工具基于异步,可以同时处理多个请求。

🔧 技术细节

Web_Search_MCP 项目利用了以下关键组件:

  • Tavily API:一个强大的搜索API,提供实时、全面的网络搜索结果,包括答案、原始内容和相关元数据。
  • FastMCP:FastMCP 类使用Python类型提示和文档字符串来自动生成工具定义,使得创建和维护MCP工具变得简单易行。
  • Langchain:特别是Langchain提供的 TavilySearchResults 工具,用于高效地与Tavily API交互。
  • Dotenv:一个库,用于从.env文件加载环境变量,安全地管理敏感信息,如API密钥。
  • uv:一个非常快速的Python包安装程序和解析器,用于管理和运行此项目。

💻 使用示例

工具使用

一旦服务器运行,它会暴露一个名为 search_web 的工具,根据模型上下文协议。

  • 工具名称search_web
  • 输入
    • query (str):要提交到网络的搜索查询。
  • 输出:一个结构化的JSON字符串,包含搜索结果。

示例 JSON 响应(成功)

{
"status": "success",
"results": [
{
"title": "...",
"url": "...",
"content": "text",
"score": 0.9,
"raw_content": "..."
},
{
"title": "...",
"url": "...",
"content": "text",
"score": 0.9,
"raw_content": "..."
}
],
"timestamp": 1708849844.064655
}
  • 0 关注
  • 0 收藏,17 浏览
  • system 提出于 2025-09-22 22:57

相似服务问题

相关AI产品