AI搜索服务器

一个基于Tavily API的AI驱动的搜索服务器,为AI助手提供全面的网络搜索和信息检索功能。

  • by it-beard
  • JavaScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 it-beard/tavily-server

使用说明

Tavily MCP服务器

一种模型上下文协议(MCP)服务器,使用Tavily API提供人工智能搜索功能。该服务器使AI助手能够执行全面的网络搜索,并检索相关的最新信息。

特性

  • 人工智能驱动的搜索功能
  • 支持基本和高级搜索深度
  • 丰富的搜索结果,包括标题、URL和内容片段
  • 人工智能生成的搜索结果摘要
  • 结果评分和响应时间跟踪
  • 具有缓存功能的全面搜索历史存储
  • MCP资源,实现灵活的数据访问

先决条件

  • Node.js(v16或更高版本)
  • npm(节点包管理器)
  • Tavilly API密钥(在 Tavily的网站)
  • MCP客户端(例如,Cline、Claude Desktop或您自己的实现)

安装

  1. 克隆存储库:
git clone https://github.com/it-beard/tavily-server.git
cd tavily-mcp-server
  1. 安装依赖项:
npm install
  1. 构建项目:
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客户端,请参阅其文档以了解正确的配置文件位置和格式。服务器配置应包括:

  1. 运行服务器的命令(通常 node)
  2. 已编译服务器文件的路径
  3. 环境变量,包括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<{
    title: string;
    url: string;
    content: string;
    score: number;
  }>;
  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无效
  • 存储读/写错误

贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢