返回市场
塔维利服务器

塔维利服务器

作者:it-beard7 星标更新:2024-12-14

项目介绍

Tavily MCP Server

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

特性

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

预备条件

  • Node.js(v16或更高版本)
  • npm(Node包管理器)
  • Tavily 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配置

如果您使用的是Cline(用于Claude的VSCode扩展),请创建或修改位于以下位置的MCP设置文件:

  • macOS: ~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Windows: %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 Desktop配置

如果您使用的是Claude Desktop应用程序,请修改位于以下位置的配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

使用上述相同的配置格式。

其他MCP客户端

对于其他MCP客户端,请查阅其文档以了解正确的配置文件位置和格式。服务器配置应包括:

  1. 运行服务器的命令(通常是node
  2. 编译后的服务器文件路径
  3. 包括Tavily API密钥在内的环境变量

使用方法

工具

服务器提供了一个名为search的单一工具,具有以下参数:

必需参数

  • query(字符串):要执行的搜索查询

可选参数

  • search_depth(字符串):要么是“basic”(更快)或“advanced”(更全面)

示例用法

// 使用MCP SDK的示例
const result = await mcpClient.callTool("tavily", "search", {
  query: "最新的人工智能发展",
  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    # 主服务器实现
├── data/           # 持久存储目录
│   └── searches.json  # 搜索历史和缓存存储
├── build/          # 编译后的JavaScript文件
├── package.json    # 项目依赖项和脚本
└── tsconfig.json   # TypeScript配置

可用脚本

  • 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 '添加一些惊人的功能'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 打开拉取请求

许可证

该项目根据MIT许可证发布 - 查看LICENSE文件以获取详细信息。

致谢