Tavily MCP 服务端实现(多传输、工具与 API 集成)
使用说明(Markdown 格式)
-
项目简介
- 本仓库实现了一个基于 MCP(Model Context Protocol)的服务器端,能够向 LLM 客户端提供工具(Tools)、资源和对接外部 API 的能力,并通过 JSON-RPC 进行通信。服务器支持多种传输方式,便于在不同部署场景中接入。
-
主要功能点
- 提供 Tools 列表与调用能力,LLM 可以通过工具执行外部功能(如网页搜索、内容提取、网页爬取、站点映射等)。
- 通过 TavilyClient 对 Tavily 的公开 API 进行对接,对外暴露统一的请求入口。
- 支持通过 stdio 传输(命令行/进程间通信)与 SSE(服务端事件流)两种传输模式,方便在不同环境中集成。
- 具备请求队列、并发控制、简单的缓存与 Key/访问控制的实现,提升并发请求下的稳定性。
- 提供健康检查、日志记录、错误处理与简单的异常保护,便于运维观测。
-
安装步骤
- 先把代码拉取到本地,确保已安装 Node.js 环境。
- 根据需要选择传输模式运行服务器:
- STDIO 模式:构建并运行以通过标准输入输出进行 MCP 通信的服务器。
- SSE 模式:启动 SSE 服务器,通过 HTTP 连接向 LLM 客户端推送消息。
- 配置 Tavily API Key:通过环境变量 TAVILY_API_KEYS 或 TAVILY_API_KEY 提供一个或多个 API Key(多个 Key 用逗号分隔)。
- 设置端口(如果使用 SSE 传输,需在环境变量中配置端口,例如 SUPERGATEWAY_PORT)。
-
服务器配置(MCP 客户端需要的配置信息) 说明:以下配置用于 MCP 客户端通过客户端启动器连接本 MCP 服务器。包含服务器名称、启动命令与参数,以及必要的环境变量。请根据实际部署路径与密钥替换占位符。
-
选项 A:STDIO 传输(推荐用于本地集成与开发) { "server_name": "tavily-mcp-stdio", "command": "node", "args": ["/path/to/dist/src/index.js"], "env": { "TAVILY_API_KEYS": "YOUR_API_KEY_1,YOUR_API_KEY_2", "SUPERGATEWAY_PORT": "60002" } // 说明:index.js 为编译后的服务端入口,TAVILY_API_KEYS 提供 Tavily 接入密钥,若使用 SSE 传输则 SUPERGATEWAY_PORT 供相关日志/监控使用 }
-
选项 B:SSE 传输(通过 HTTP SSE 与客户端交互) { "server_name": "tavily-mcp-sse", "command": "node", "args": ["/path/to/dist/src/start.js"], "env": { "TAVILY_API_KEYS": "YOUR_API_KEY_1", "SUPERGATEWAY_PORT": "60002" } // 说明:start.js 为 SSE 入口,HTTP SSE 端点将提供 /sse 和 /message 等交互接口 }
-
-
基本使用方法
- 启动服务器后,确保日志显示服务器已就绪并监听相应端口(若使用 SSE),或通过 STDIO 向 MCP 客户端提供服务。
- LLM 客户端与 MCP 服务器建立连接后,可以通过如下流程进行交互:获取 Tools 列表、调用具体 Tool、,以及通过初始化建立能力声明等。
- 监控与运维:关注健康端点、日志输出,以及 Key 的使用与轮换情况,确保密钥池不过载。
-
备注
- MCP 客户端将通过配置中的 command/args 启动服务器进程,且该服务器应暴露 Tool、初始化能力、以及对外提供的接口。
- 以上配置示例仅供参考,实际部署时请将路径、密钥、端口等字段替换为真实环境信息。