Tavily MCP 负载均衡与上下文服务服务器

项目简介

  • 该仓库实现了一个 MCP 服务器端应用,支持通过 MCP 标准的 JSON-RPC 交互进行工具调用、工具列表获取等操作,并提供 stdio、SSE、以及 streamableHTTP 三种通信方式以实现与 LLM 客户端的集成。
  • 服务端包含工具路由器、密钥池和使用统计等模块,具备日志持久化、配额管理、错误分类与重试等机制,便于在多密钥环境下进行高可用的上下文服务提供。

主要功能点

  • MCP 协议支持
    • 处理 MCP 标准请求:初始化、工具列表、工具调用等,通过 MCP 标准的 JSON-RPC 流进行响应。
    • 支持多种传输方式:stdio、SSE、streamableHTTP,方便不同场景的客户端接入。
  • 工具与路由
    • ToolRouter 提供 listTools 和 callTool 能力,能够对外暴露 tavily-search、tavily-extract、tavily-crawl、tavily-map 等工具的调用接口。
    • 针对不同工具实现了参数清洗、默认参数合并、时间范围规范化等逻辑,确保调用 Tavily 服务的稳定性。
  • 会话与治理
    • 支持会话、能力声明和错误处理,提供日志记录与告警能力。
    • 具备简单的密钥池管理(KeyPool),按权重和可用性进行密钥选择与冷却管理,实现多密钥负载均衡。
  • 数据与监控
    • 使用 SQLite 持久化存储 API Key、配额、日志等数据,支持简单的 Web 界面(在配置开关开启时可用)。
    • 提供健康端点、统计广播、WebSocket 通道等,方便运维监控。
  • 安全与可扩展性
    • 对 MCP 客户端的请求在服务端进行日志化与错误分类,支持重试、限流以及禁用不可用 Key 的机制。
    • 设计上模块化,便于未来扩展更多工具、更多传输协议和更多的身份鉴权机制。

安装与运行

  • 项目简介
    • 该实现包含 MCP 服务器核心、工具路由、HTTP 服务、SSE/streamableHTTP 端点、以及后台调度与日志系统等完整组件。
  • 主要依赖与运行环境
    • Node.js 环境,SQLite 数据库,依赖的 MCP 库用于处理 JSON-RPC 请求。
  • 安装步骤
    • 克隆仓库并进入项目目录
    • 安装依赖:npm install
    • 根据需要配置环境变量(如数据库密钥、初始 API Key、管理员密码等)
    • 启动服务:根据仓库提供的快速开始说明,使用 npm 脚本启动网关/API 服务与 MCP 服务器组件
  • 服务器配置(MCP 客户端需要)
    • 说明:MCP 客户端在连接到 MCP 服务器前,需要知道服务器的启动信息以便正确连接并进行初始化交互。下面给出符合仓库实现的配置示例描述。
    • 服务器名称(server name):tavily-mcp-loadbalancer
    • 启动命令(command):node
    • 启动参数(args)示例:dist/index.js(若直接使用源码运行,请改为实际打包后的入口,例如 dist/index.js;若使用 Docker 镜像,请使用镜像启动命令)
    • 注释:该配置用于 MCP 客户端在首次连接时了解服务器标识,并通过初始化、工具列表、工具调用等交互完成对接。具体环境变量(数据库密钥、初始密钥等)需要在部署时一并提供。
  • 基本使用方法
    • 客户端连接 MCP 服务器后发送初始化请求以获取协议版本与服务能力
    • 调用 tools/list 获取可用工具清单,使用 tools/call 调用具体工具
    • 也可以通过 streamableHTTP 的 /mcp 接口进行按需请求,或通过 /sse 订阅状态和统计更新
    • 服务器提供健康与状态端点,便于运维检测服务健康状况

运行示例要点(简述)

  • MCP stdio 服务器通过工具路由暴露工具能力
  • streamableHTTP 提供基于 JSON-RPC 的请求/响应模式
  • SSE/WebSocket 提供状态和统计的实时推送
  • 支持多密钥负载均衡、限流与错误处理,确保高可用性

运行后可观察的关键端点

  • MCP stdio 服务入口(通过 MCP 客户端连接):通过工具清单与调用接口进行交互
  • SSE 接口:/sse
  • streamableHTTP:/mcp
  • 健康检查:/health
  • 管理后台(若开启 Web UI):基于配置在 Web UI 中进行密钥与日志管理

维护与扩展

  • 服务器端以插件式方式组织工具与路由,便于新增工具或修改参数映射
  • 日志与监控机制可在部署时按需扩展,便于大规模密钥池管理与审计

服务器信息