这是一个使用Tavily API提供网络搜索、内容提取和网络爬虫功能的模型上下文协议(MCP)服务器。该服务器旨在与Klavis AI无缝集成,作为自定义MCP服务器。
tavily_search)在互联网上搜索当前信息和可靠的来源,具有可配置的深度和过滤选项。
功能:
tavily_extract)从一个或多个URL中提取主要内容,可选地提取图像。
功能:
tavily_crawl)以可配置的深度和广度爬取网站,以收集全面的内容。
功能:
克隆并导航到项目:
cd tavily
安装依赖项:
选项A:使用pip进行可编辑安装(推荐):
pip install -e .
选项B:使用uv(现代Python包管理器):
uv sync
设置环境变量:
在项目根目录创建一个.env文件:
TAVILY_API_KEY=your_tavily_api_key_here
服务器使用环境变量进行配置:
| 变量 | 默认值 | 描述 |
|---|---|---|
TAVILY_API_KEY | 必需 | 您的Tavily API密钥 |
TAVILY_BASE_URL | https://api.tavily.com | Tavily API基础URL |
TAVILY_TIMEOUT_S | 20 | 请求超时时间(秒) |
TAVILY_CONNECT_TIMEOUT_S | 5 | 连接超时时间(秒) |
TAVILY_MAX_RETRIES | 2-3 | 最大重试次数 |
TAVILY_CONCURRENCY | 8 | 最大并发请求 |
TAVILY_CACHE_TTL_S | 120 | 缓存TTL(秒) |
TTAVILY_MAX_RESULTS_CAP | 10 | 最大搜索结果 |
TAVILY_CRAWL_MAX_PAGES | 50 | 最大爬取页面数 |
LOG_LEVEL | INFO | 日志级别 |
使用MCP dev命令启动MCP服务器:
mcp dev server.py
服务器通过标准I/O运行,并与MCP客户端兼容。
tavily_search搜索互联网上的查询并返回总结结果。当您需要当前信息或可靠来源时使用。
参数:
query (str): 搜索查询文本search_depth (str): "basic" 或 "advanced"max_results (int): 1-10 结果include_answer (bool): 包含合成答案include_raw_content (bool): 包含原始内容片段days (int, 可选): 新鲜度过滤(0-365天)topic (str, 可选): 主题焦点返回值: SearchResponse,包括答案、结果、响应时间和自动参数。
tavily_extract从一个或多个URL中提取主要内容。当您已经知道URL并且需要清理过的文本和可选图像时使用。
参数:
urls (str 或 List[str]): 要从中提取的URLinclude_images (bool): 在结果中包含图像返回值: ExtractResponse,包括提取的内容和可选图像。
tavily_crawl从单个起始URL开始爬取,直到最大深度/广度/限制,返回提取的页面。用于站点探索和内容收集。
参数:
url (str): 开始爬取的根URLmax_depth (int): 爬取深度(1-3)max_breadth (int): 每层链接数量(≥1)limit (int): 最大页面数(1-500)instructions (str, 可选): 自然语言指导select_paths (List[str], 可选): 包括路径模式select_domains (List[str], 可选): 包括域名模式exclude_paths (List[str], 可选): 排除路径模式exclude_domains (List[str], 可选): 排除域名模式allow_external (bool): 包括外部域名include_images (bool): 在结果中包含图像categories (List[str], 可选): 内容类别extract_depth (str): "basic" 或 "advanced"format (str): "markdown" 或 "text"include_favicon (bool): 包括favicon URL返回值: CrawlResponse,包括爬取的页面和元数据。
服务器为不同场景提供了标准化的错误消息:
ERR_UNAUTHORIZED: 检查TAVILY_API_KEYERR_RATE_LIMIT: 达到速率限制,请稍后再试ERR_UPSTREAM_<状态>: 上游API错误带上下文ERR_BAD_REQUEST: 参数无效ERR_PAYMENT_REQUIRED: 计费或配额问题tavily/
├── app.py # FastMCP应用程序设置
├── server.py # 服务器入口点
├── pyproject.toml # 依赖项和配置
├── tools/ # 核心功能
│ ├── client.py # HTTP客户端配置
│ ├── search.py # 网络搜索实现
│ ├── extract.py # 内容提取
│ ├── crawl.py # 网络爬虫
│ ├── types.py # Pydantic数据模型
│ └── errors.py # 错误处理
└── mcp_venv/ # 虚拟环境
tools/client.py)tools/types.py)tools/errors.py)mcp[cli]>=1.2.0: MCP Python SDKhttpx>=0.27.0: HTTP客户端pydantic>=2.6.0: 数据验证python-dotenv>=1.0.1: 环境变量加载tenacity>=8.2.3: 重试逻辑pytest
该项目遵循Python最佳实践,包括:
此项目是Klavis AI生态系统的一部分,并遵循相同的许可条款。
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)对于以下相关的问题:
此项目根据MIT许可证授权 - 详情见LICENSE文件。