tavily-proxy-mcp

tavily-proxy-mcp

A proxy MCP server that connects to Tavily's official Streamable HTTP MCP, managing multiple API keys and automatically switching to the next one when the current key's quota is exhausted.

Category
访问服务器

README

tavily-proxy-mcp

一个本地 stdio MCP 代理。它连接 Tavily 官方 Streamable HTTP MCP,并在当前 API Key 额度耗尽后,按配置顺序惰性初始化并切换到下一个 Key。

工作方式

Agent ──stdio──> tavily-proxy-mcp ──HTTP MCP──> mcp.tavily.com
                         │
                         └── 本地 Key 状态缓存
  • Tavily 工具名称、描述、Schema 和返回结果由官方 MCP 动态提供。
  • 同一时刻只初始化一个 Key,不会在启动时连接全部 Key。
  • 正常请求始终使用当前 Key,不做轮询。
  • 明确的额度耗尽、无效 Key 或短期限流会触发切换。
  • 网络错误、5xx、参数错误和取消不会触发切换。
  • 多个请求同时发现额度耗尽时,只会初始化一次下一个 Key。

MCP 配置

发布后使用 npx 运行:

{
  "mcpServers": {
    "tavily": {
      "command": "npx",
      "args": ["-y", "tavily-proxy-mcp"],
      "env": {
        "TAVILY_API_KEYS": "tvly-key1,tvly-key2,tvly-key3"
      }
    }
  }
}

Key 按环境变量中的顺序使用。空白项会被忽略,重复 Key 会被去除。

环境变量

变量 必填 默认值 说明
TAVILY_API_KEYS 是 无 逗号分隔的 Tavily API Keys
TAVILY_MCP_URL 否 https://mcp.tavily.com/mcp/ 上游 Tavily MCP 地址
TAVILY_PROXY_STATE_PATH 否 操作系统标准状态目录 状态缓存文件
TAVILY_RESET_GRACE_SECONDS 否 900 月初预计重置时间的缓冲秒数
TAVILY_PROXY_LOG_LEVEL 否 info error、warn、info 或 debug

Key 状态与重置

本地状态只保存 Key 的 SHA-256 指纹,不保存明文 Key。

默认状态文件位置:

  • macOS:~/Library/Application Support/tavily-proxy-mcp/state.json
  • Linux:$XDG_STATE_HOME/tavily-proxy-mcp/state.json,未设置时使用 ~/.local/state/tavily-proxy-mcp/state.json
  • Windows:%LOCALAPPDATA%\tavily-proxy-mcp\state.json

可以通过 TAVILY_PROXY_STATE_PATH 指定其他位置。

standby → active → exhausted
                 → cooldown
                 → disabled

Tavily 官方说明月度额度在每月第一天重置,但 Usage API 当前不返回精确 reset_at。本项目按“下一个 UTC 月第一天 + 安全缓冲”估算恢复时间。到期后会调用 Tavily Usage API 验证额度,验证成功后才重新启用该 Key。

HTTP 429 会进一步区分:

  • 明确的 rate limit:短时 cooldown。
  • 明确的 credits/quota exhausted:等待月度重置。
  • 含义不明确:查询 Usage API 消除歧义。

开发

项目使用 pnpm 管理依赖,需要 Node.js 22 或更高版本。

pnpm install
pnpm check
pnpm build
pnpm start

开发时可使用:

TAVILY_API_KEYS=tvly-your-key pnpm dev

质量门禁包含 ESLint、Prettier、TypeScript、Vitest 和生产构建。

安全

  • 不要将 API Key 提交到仓库。
  • stdout 专用于 MCP 协议;日志只写入 stderr。
  • 日志会脱敏 tvly- Key。
  • 默认状态目录和常见环境文件已加入 .gitignore。

故障排查

TAVILY_API_KEYS must contain at least one key

没有注入有效 Key。检查 MCP 客户端配置中的 env。

所有 Key 均不可用

错误会包含最早预计恢复时间。检查 Tavily Dashboard 中的额度与 Key 状态。

官方 MCP 不可达

网络错误不会使 Key 失效,也不会切换到下一个 Key。恢复网络后重试。

状态文件损坏

损坏文件会被重命名为 state.json.corrupt-<timestamp>,代理随后以空状态启动。

查看详细日志

设置:

TAVILY_PROXY_LOG_LEVEL=debug

日志仍不会输出完整 API Key。

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选