Skip to main content
Glama
dragonheartcra

tavily-rotator-mcp

简体中文 | English

tavily-rotator-mcp

License: MIT Python 3.10+

本地 Tavily MCP server:把多把免费 Tavily key 池化,round-robin 轮询 + 故障转移, 直接调用 Tavily REST API(api.tavily.com),无状态、无外部依赖服务。

特性

  • 轮询:round-robin 分发请求,优先跳过冷却中的 key

  • 故障转移:429 限流冷却 60s;401/432/433(无效/配额用尽)冷却 1h 后自动再探测;单次请求内自动换 key 重试

  • 官方工具对齐:工具名、参数、默认值与官方托管 MCP(mcp.tavily.com)1:1 一致,模型用起来无差别

  • 中心配置:key 只配一次(一行命令或一个 JSON 文件),所有 agent 共享;加 key 不用改任何客户端

  • 命令行管理:tavily-rotator-mcp init / add / list,不用手动编辑配置文件

  • 零端口:stdio 传输,被宿主进程拉起,不监听端口

Related MCP server: tavily-proxy-mcp

安装

需要 uv(它会顺带帮你管理 Python,本机无需预装):

git clone https://github.com/dragonheartcra/tavily-rotator-mcp
cd tavily-rotator-mcp
uv tool install .

配置 key

方式 A:一行命令写入中心配置(推荐,配一次所有 agent 共享)

tavily-rotator-mcp init tvly-dev-xxxx tvly-dev-yyyy tvly-dev-zzzz
# 以后加新 key(自动去重):
tavily-rotator-mcp add tvly-dev-new
# 查看已配置的 key:
tavily-rotator-mcp list

方式 B:key 直接写进 MCP 配置(单 agent 一步到位,跟配官方 tavily MCP 一样直观)

{
  "mcpServers": {
    "tavily-rotator": {
      "type": "stdio",
      "command": "tavily-rotator-mcp",
      "env": {
        "TAVILY_KEYS": "tvly-dev-xxxx,tvly-dev-yyyy"
      }
    }
  }
}

方式 B 的 env 优先级高于中心配置文件,只对这一个客户端生效,适合临时测试或按 agent 隔离 key。两种方式都没配时,server 启动会直接报错并给出提示。

各客户端接入

ZCode / Cursor / Cline 等(JSON 配置):

{
  "mcpServers": {
    "tavily-rotator": {
      "type": "stdio",
      "command": "tavily-rotator-mcp"
    }
  }
}

Claude Code(CLI):

claude mcp add tavily-rotator -- tavily-rotator-mcp

工具列表

与官方托管 MCP(mcp.tavily.com)的工具清单、参数、默认值对齐:

工具

说明

tavily_search

网络搜索(/search,含时间范围、域名过滤、新闻/财经主题等)

tavily_extract

提取 URL 正文(/extract)

tavily_crawl

整站爬取(/crawl,深度/广度/数量可配)

tavily_map

网站结构地图(/map)

tavily_research

深度研究报告(/research,异步任务自动轮询,约 1-5 分钟)

tavily_pool_status

查看 key 池状态(成功/失败/冷却剩余),0 credit

更新 / 卸载

uv tool install --force .   # 升级
uv tool uninstall tavily-rotator-mcp

注意

  • key 仅用于向 Tavily API 发送 Authorization 请求头,不会被记录或发送到其他任何地方

  • 通过轮换器使用多个免费账号会放大免费额度——这处于 Tavily 服务条款的灰色地带,个人轻度使用无妨,别拿它做商业用途

许可证

MIT

Available Tools

6 tools
tavily_crawlC

Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo
formatNomarkdown
max_depthNo
max_breadthNo
instructionsNo
select_pathsNo
extract_depthNobasic
allow_externalNo
select_domainsNo
include_faviconNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states the basic action. It does not mention whether external links are followed, rate limits, robots.txt handling, authentication needs, or what the returned content includes, which are important for a crawler.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact in two sentences with no filler, and the core action and configurable aspect appear early. It loses a point because it does not structure key concepts for parameter understanding, but as a concise summary it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with zero schema coverage and no annotations, this description is drastically incomplete. It provides no information about parameter semantics, usage scenarios, return values, or edge cases, even though an output schema exists; an agent would likely need to introspect defaults or experiment to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meanings. It only vaguely references 'configurable depth and breadth' (mapping to max_depth/max_breadth), but it does not explain limit, format, instructions, select_paths, extract_depth, allow_external, select_domains, or include_favicon, leaving agents to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('crawl a website starting from a URL') and the core output ('extracts content from pages'), which is clearly distinct from search and map. However, it does not explicitly contrast with the sibling 'tavily_extract', leaving slight ambiguity about single-page vs multi-page extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like tavily_extract or tavily_research. It does not state conditions under which crawling is preferred, nor any exclusions, so an agent receives no selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tavily_extractC

Extract content from URLs. Returns raw page content in markdown or text format.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
queryNo
formatNomarkdown
extract_depthNobasic
include_imagesNo
include_faviconNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the output format and gives no details about rate limits, auth, error handling, redirects, or side effects. The existence of parameters like extract_depth and include_images is not disclosed, so behavioral expectations are unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence and is technically concise with no filler. However, it lacks structure: there is no front-loaded key advice, no breakdown of important parameters, and no example usage. It is under-specified rather than efficiently concise, given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 parameters including enums and booleans, and an output schema exists. The description is far from complete: it does not explain what 'raw page content' includes, how the query parameter affects extraction, the difference between basic and advanced depth, or image/favicon inclusion. An agent would need to infer a lot or rely on trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain any of the 6 parameters (urls, query, format, extract_depth, include_images, include_favicon). The description adds no value to the input schema, and since the schema lacks descriptions, the agent has no way to understand parameter semantics beyond the names and enums.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Extract' and the resource 'content from URLs', and mentions the output formats (markdown or text). It is distinct enough from tavily_search (which searches) but overlaps conceptually with tavily_crawl, though crawl likely implies full-site traversal. Still, the purpose is understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus the sibling tools (e.g., tavily_crawl for site traversal, tavily_search for search results). The description does not state any alternative conditions or exclusions, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tavily_mapC

Map a website's structure. Returns a list of URLs found starting from the base URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo
max_depthNo
max_breadthNo
instructionsNo
select_pathsNo
allow_externalNo
select_domainsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says the tool starts from a base URL and returns URLs; it does not disclose traversal limits, whether external domains are included, rate limits, or potential side effects of crawling a site.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but it is under-specified for an eight-parameter tool with no schema descriptions. Economical writing is good, but here it leaves out essential operational detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, absent annotations, and zero schema description coverage, the description is insufficient. It does not explain how the listed parameters control the crawl, the meaning of the output, or how this tool compares to tavily_crawl.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for eight undocumented parameters. It adds meaning only by clarifying the base URL and output; limit, max_depth, max_breadth, instructions, select_paths, allow_external, and select_domains remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear action ('Map a website's structure') and identifies the return value ('a list of URLs found starting from the base URL'). However, it doesn't explicitly differentiate itself from tavily_crawl, which is a close sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as tavily_crawl or tavily_search. The agent is left to infer that 'map' means enumerating URLs, with no explicit when-to-use or when-not-to-use information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tavily_pool_statusA

查看本地 key 池状态(成功/失败次数、冷却剩余秒数),不消耗 credit。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a key behavioral trait: this operation does not consume credit. This is valuable context beyond what annotations provide (no annotations are present). It also specifies what information is returned (success/failure counts, cooldown remaining seconds). It doesn't mention rate limits or whether the status is real-time, but for a status-check tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the core purpose (查看本地 key 池状态) and immediately adds the key differentiator (不消耗 credit). Every word earns its place; there is no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status-check tool with an output schema present, the description is complete. It tells the agent what the tool does, what it returns (success/failure counts, cooldown seconds), and that it's free of credit consumption. The output schema likely details the exact return structure, so no further description is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty. The description correctly indicates there are no inputs needed. With no parameters to document, the description fully covers the parameter semantics. The baseline for 0 params is 4, and the description adds clarity by explaining what the status check entails, so a 5 is justified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: checking the local key pool status, including success/failure counts and cooldown remaining seconds. It also explicitly notes that it does not consume credit, which distinguishes it from the sibling search/extract/crawl tools. The verb '查看' (view/check) is specific and the resource is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you need to check the status of the local key pool without consuming credit. It doesn't explicitly name alternatives or state when not to use it, but the sibling tools are clearly different operations (search, extract, crawl, map, research), so the usage context is reasonably clear. A brief mention of 'use this before other Tavily operations to verify key availability' would have made it a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tavily_researchA

Perform comprehensive research on a given topic or question. Use this tool when you need to gather information from multiple sources to answer a question. Returns a detailed response. Rate limit: 20 requests per minute. NOTE: this is an async task and may take 1-5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
modelNoauto
output_lengthNostandard
citation_formatNonumbered
exclude_domainsNo
include_domainsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and covers key operational traits: async execution, 1-5 minute latency, and a 20 requests-per-minute rate limit. These are not in the schema or annotations and are valuable. It does not mention errors, costs, or idempotency, but the most critical behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with each serving a distinct purpose: purpose, usage trigger, and behavioral warning. No filler or redundancy; the critical async and rate-limit info is placed last without distracting from the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main purpose, usage trigger, and critical behavioral constraints, and the presence of an output schema covers return values. However, it does not clarify the relationship to sibling tools or explain the meaning of optional parameters (e.g., output_length, citation_format, domain filters), leaving some operational gaps for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it provides zero parameter explanations. While parameter names (input, model, output_length, citation_format, include/exclude_domains) are somewhat self-explanatory, the description adds no meaning beyond the schema's own titles and enums, leaving the agent to infer usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair ('perform comprehensive research') and defines the input as a topic or question, with a clear output expectation. It hints at differentiation from siblings by emphasizing multiple sources, but does not explicitly name sibling distinctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an explicit trigger condition: 'when you need to gather information from multiple sources to answer a question.' This gives clear context, but it lacks negative guidance or explicit alternatives (e.g., when to prefer tavily_search or tavily_extract), so it does not fully meet the highest bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.3.0
    • First observedtavily_crawl
    • First observedtavily_extract
    • First observedtavily_map
    • First observedtavily_pool_status
    • First observedtavily_research
    • First observedtavily_search

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool serves a clear, distinct function: search for queries, extract for single URLs, crawl for site-wide content, map for URL discovery, research for multi-source synthesis, and pool_status for internal health. There is minimal overlap, and the descriptions clarify when to use each.

Naming Consistency5/5

All tools follow a consistent 'tavily_' prefix with lowercase snake_case verb/noun names. The naming pattern is predictable and clearly indicates the action (search, extract, crawl, map, research, pool_status), with no mixed conventions.

Tool Count5/5

With 6 tools, the server is well-scoped for a web research domain. Each tool adds distinct functionality, and the count is comfortably within the ideal range, neither sparse nor bloated.

Completeness4/5

The toolset covers the core web research lifecycle: search, extract, crawl, map, and comprehensive research. Minor gaps exist, such as advanced search parameters or bulk operations, but these are not essential for typical workflows. The inclusion of a pool status tool shows attention to operational needs.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A local MCP server that exposes Tavily search as a tool and rotates across multiple API keys for reliability.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    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.
    5
    13 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Tavily search and web data tools, enabling search, extract, crawl, and map operations through a simple HTTP or stdio interface.
    MIT