Tavily MCP服务器
一种模型上下文协议(MCP)服务器,使用Tavily API提供人工智能搜索功能。该服务器使AI助手能够执行全面的网络搜索,并检索相关的最新信息。
特性
- 人工智能驱动的搜索功能
- 支持基本和高级搜索深度
- 丰富的搜索结果,包括标题、URL和内容片段
- 人工智能生成的搜索结果摘要
- 结果评分和响应时间跟踪
- 具有缓存功能的全面搜索历史存储
- MCP资源,实现灵活的数据访问
先决条件
- Node.js(v16或更高版本)
- npm(节点包管理器)
- Tavilly API密钥(在 Tavily的网站)
- MCP客户端(例如,Cline、Claude Desktop或您自己的实现)
安装
- 克隆存储库:
git clone https://github.com/it-beard/tavily-server.git
cd tavily-mcp-server- 安装依赖项:
npm install- 构建项目:
npm run build配置
此服务器可以与任何MCP客户端一起使用。以下是常见客户端的配置说明:
临床配置
如果您使用的是Cline(Claude的VSCode扩展),请在以下位置创建或修改MCP设置文件:
- macOS:
~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - 窗户:
%APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json - Linux:
~/.config/Cursor/User/globalStorage/saoudrizwan.claude-dev\settings\cline_mcp_settings.json
添加以下配置(将路径和API密钥替换为您自己的):
{
"mcpServers": {
"tavily": {
"command": "node",
"args": ["/path/to/tavily-server/build/index.js"],
"env": {
"TAVILY_API_KEY": "your-api-key-here"
}
}
}
}Claude桌面配置
如果您使用的是Claude Desktop应用程序,请在以下位置修改配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
使用如上所示的相同配置格式。
其他MCP客户端
对于其他MCP客户端,请参阅其文档以了解正确的配置文件位置和格式。服务器配置应包括:
- 运行服务器的命令(通常
node) - 已编译服务器文件的路径
- 环境变量,包括Tavily API密钥
用法
工具
服务器提供了一个名为 search 具有以下参数:
所需参数
query(string):要执行的搜索查询
可选参数
search_depth(string):“基本”(更快)或“高级”(更全面)
示例用法
// Example using the MCP SDK
const result = await mcpClient.callTool("tavily", "search", {
query: "latest developments in artificial intelligence",
search_depth: "basic"
});资源
服务器为灵活的数据访问提供静态和动态资源:
静态资源
tavily://last-search/result:返回最近搜索查询的结果
- 保存到数据目录中的磁盘 - 服务器重启后仍能存活 - 如果未进行搜索,则返回“尚未执行搜索”错误
动态资源(资源模板)
tavily://search/{query}:访问任何查询的搜索结果
- 将{query}替换为URL编码的搜索词 - 例子: tavily://search/artificial%20intelligence - 如果之前进行了查询,则返回缓存结果 - 如果以前没有搜索过查询,则执行并存储新的搜索 - 通过资源接口返回与搜索工具相同的格式
与工具相比,MCP中的资源提供了一种访问数据的替代方法:
- 工具用于执行操作(如执行新搜索)
- 资源用于访问数据(如检索现有搜索结果)
- 资源URI可以稍后存储和访问
- 资源支持静态(固定)和动态(模板化)访问模式
响应格式
interface SearchResponse {
query: string;
answer: string;
results: Array;
response_time: number;
}永久存储
服务器为搜索结果实现了全面的持久存储:
存储位置
- 数据存储在
data目录 data/searches.json包含所有历史搜索结果- 数据在服务器重启之间持续存在
- 服务器启动时会自动初始化存储
存储功能
- 存储完整的搜索历史记录
- 缓存所有搜索结果以便快速检索
- 自动保存新的搜索结果
- 基于磁盘的持久性
- JSON格式,便于调试
- 存储操作的错误处理
- 自动目录创建
缓存行为
- 所有搜索结果都会自动缓存
- 对同一查询的后续请求返回缓存结果
- 缓存提高了响应时间并减少了API调用
- 缓存在服务器重启之间持续存在
- 跟踪上次搜索以快速访问
发展
项目结构
tavily-server/
├── src/
│ └── index.ts # Main server implementation
├── data/ # Persistent storage directory
│ └── searches.json # Search history and cache storage
├── build/ # Compiled JavaScript files
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configuration可用脚本
npm run build:编译TypeScript并使输出可执行npm run start:启动MCP服务器(构建后)npm run dev:以开发模式运行服务器
错误处理
服务器为常见问题提供详细的错误消息:
- API密钥无效
- 网络错误
- 搜索参数无效
- API速率限制
- 资源未找到
- 资源URI无效
- 存储读/写错误
贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 模型上下文协议(MCP) 对于服务器框架
- 美味API 用于提供搜索功能
