项目简介
Tavily MCP API 服务是一个基于Model Context Protocol (MCP) 构建的后端应用。它通过标准化的JSON-RPC协议,将Tavily AI提供的强大网络搜索、内容提取、网站爬取和地图构建功能,以可调用的工具形式提供给LLM客户端。为了确保高可用性和性能,该服务内部实现了API密钥池管理、故障转移和请求排队机制,有效处理Tavily API的并发请求和配额限制。
主要功能点
- Tavily AI 工具集成:提供'tavily-search' (或 'search')、'tavily-extract'、'tavily-crawl' 和 'tavily-map' 等工具,让LLM能够执行实时网络搜索、从指定URL提取内容、对网站进行结构化爬取以及生成网站地图。
- API 密钥池管理:维护一个Tavily API密钥池,自动轮换使用密钥,并追踪每个密钥的错误率和配额,实现智能的负载分配和故障转移,确保API服务的稳定性。
- 请求排队与去重:通过内部请求队列和缓存机制,优化对Tavily API的调用,避免并发请求过多导致的问题,并减少重复请求,提高效率。
- 多种传输协议支持:
- Stdio (标准输入输出):适用于本地开发环境或作为命令行工具与LLM客户端集成。
- SSE (Server-Sent Events):提供HTTP接口,支持流式通信,适用于需要持久连接和实时更新的Web应用或分布式环境。
- 可观测性:提供详细的日志输出,帮助用户监控API密钥使用情况、请求延迟和错误信息。
安装步骤
-
环境准备:
- 确保您的系统已安装 'Node.js' (版本 18 或更高) 和 'npm' (或 'yarn')。
- 获取一个或多个 Tavily AI API Key。
-
克隆仓库:
git clone https://github.com/balazhaa/tavily-mcp-loadbalancer.git cd tavily-mcp-loadbalancer -
安装依赖:
npm install # 或 yarn install -
构建项目:
npm run build # 或 yarn build
服务器配置(MCP客户端连接信息)
该MCP服务器可以通过两种方式运行:Stdio(标准输入输出)或 SSE(Server-Sent Events)。MCP客户端通常通过启动外部进程来连接Stdio服务器。
通过 Stdio 启动 (推荐用于MCP客户端)
MCP客户端需要以下配置信息来启动并连接此MCP服务器。在启动服务器之前,您需要设置环境变量 'TAVILY_API_KEYS',它包含您的Tavily API密钥,多个密钥之间用逗号分隔。
例如,在Linux/macOS上:
export TAVILY_API_KEYS="your_tavily_api_key_1,your_tavily_api_key_2"
在Windows PowerShell上:
$env:TAVILY_API_KEYS="your_tavily_api_key_1,your_tavily_api_key_2"
这是一个MCP客户端配置示例(JSON格式):
{ "name": "Tavily MCP API 服务", "command": "node", "args": ["dist/index.js"], "env": { "TAVILY_API_KEYS": "your_tavily_api_key_1,your_tavily_api_key_2" }, "description": "通过MCP协议提供Tavily AI搜索、提取、爬取和地图工具,支持API密钥管理。", "tags": ["AI工具", "网络搜索", "Tavily"] }
注意: 上述 'env' 字段中的 'TAVILY_API_KEYS' 仅为示例,您需要在实际使用时将其替换为您的真实API密钥,或者确保在启动MCP客户端的环境中已经设置了该环境变量。
通过 SSE/HTTP 启动 (适用于独立部署或Web应用)
如果您选择通过HTTP (SSE) 方式运行,服务将在指定端口监听。同样,您需要设置 'TAVILY_API_KEYS' 环境变量,并且可以设置 'SUPERGATEWAY_PORT' 环境变量来指定监听端口(默认为 60002)。
# 设置环境变量,然后运行 export TAVILY_API_KEYS="your_tavily_api_key_1,your_tavily_api_key_2" export SUPERGATEWAY_PORT="60002" node dist/start.js
服务启动后,您可以通过 'http://localhost:60002/sse' 获取SSE连接端点,并通过 'http://localhost:60002/message' 发送MCP消息。
基本使用方法
当MCP服务器启动并与MCP客户端(如LLM代理或框架)成功连接后,LLM可以通过标准的MCP 'tools/call' 请求调用Tavily提供的工具。
例如,LLM客户端可能会发送一个请求来调用 'tavily-search' 工具: (此部分为概念性描述,实际调用由LLM客户端框架完成,无需手动执行)
-
LLM请求列出可用工具: 客户端发送 'tools/list' 请求,服务器将返回包括 'tavily-search'、'tavily-extract'、'tavily-crawl' 和 'tavily-map' 在内的工具列表及其'inputSchema'。
-
LLM调用搜索工具: LLM根据用户需求,选择 'tavily-search' 工具,并构造一个 'tools/call' 请求,包含 'query' 参数:
{ "jsonrpc": "2.0", "id": 123, "method": "tools/call", "params": { "name": "tavily-search", "arguments": { "query": "最新的AI技术发展趋势", "max_results": 5 } } } -
服务器执行搜索并返回结果: MCP服务器接收请求,通过API密钥池调用Tavily API执行搜索,并将格式化后的搜索结果作为响应返回给LLM客户端。LLM可以使用这些结果来回答用户的问题。
监控与维护
- 查看日志:服务器的所有日志(包括API密钥使用、错误和请求信息)都输出到 'stderr'。请检查运行服务器的终端或日志管理系统以获取详细信息。
- 健康检查 (仅SSE/HTTP模式):访问 'http://localhost:60002/health' 端点可以检查服务器的健康状态。
信息
分类
AI与计算