tavily-rotator-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tavily-rotator-mcpsearch for the latest news on AI regulations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
简体中文 | English
tavily-rotator-mcp
本地 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)的工具清单、参数、默认值对齐:
工具 | 说明 |
| 网络搜索(/search,含时间范围、域名过滤、新闻/财经主题等) |
| 提取 URL 正文(/extract) |
| 整站爬取(/crawl,深度/广度/数量可配) |
| 网站结构地图(/map) |
| 深度研究报告(/research,异步任务自动轮询,约 1-5 分钟) |
| 查看 key 池状态(成功/失败/冷却剩余),0 credit |
更新 / 卸载
uv tool install --force . # 升级
uv tool uninstall tavily-rotator-mcp注意
key 仅用于向 Tavily API 发送
Authorization请求头,不会被记录或发送到其他任何地方通过轮换器使用多个免费账号会放大免费额度——这处于 Tavily 服务条款的灰色地带,个人轻度使用无妨,别拿它做商业用途
许可证
Available Tools
6 toolstavily_crawlC
Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| limit | No | ||
| format | No | markdown | |
| max_depth | No | ||
| max_breadth | No | ||
| instructions | No | ||
| select_paths | No | ||
| extract_depth | No | basic | |
| allow_external | No | ||
| select_domains | No | ||
| include_favicon | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| query | No | ||
| format | No | markdown | |
| extract_depth | No | basic | |
| include_images | No | ||
| include_favicon | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| limit | No | ||
| max_depth | No | ||
| max_breadth | No | ||
| instructions | No | ||
| select_paths | No | ||
| allow_external | No | ||
| select_domains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| model | No | auto | |
| output_length | No | standard | |
| citation_format | No | numbered | |
| exclude_domains | No | ||
| include_domains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
tavily_searchB
Search the web for current information on any topic. Use for news, facts, or data beyond your knowledge cutoff. Returns snippets and source URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| topic | No | general | |
| country | No | ||
| end_date | No | ||
| start_date | No | ||
| time_range | No | ||
| exact_match | No | ||
| max_results | No | ||
| search_depth | No | basic | |
| include_images | No | ||
| exclude_domains | No | ||
| include_domains | No | ||
| include_favicon | No | ||
| chunks_per_source | No | ||
| include_image_descriptions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It discloses that the tool performs a web search and returns snippets and source URLs, which is meaningful. However, it does not mention auth requirements, rate limits, latency, or limitations of the search results, leaving some important behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words. The core action is front-loaded, use cases are stated, and the return value is given in a compact second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and the parameter names are fairly self-explanatory, this is a high-complexity tool with 15 parameters and no annotation safety profile. The description is too sparse to fully guide an agent on parameter selection, date/format expectations, or how search_depth and domain filters change behavior. It is adequate for choosing the tool but not for invoking it confidently with all options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides almost no parameter-level guidance. The phrase 'any topic' loosely communicates that the query can be broad, but it does not explain the topic enum, date formats, search_depth, domain filters, or any of the other 14 parameters. With 15 params and zero schema descriptions, the description must compensate far more than it does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb and resource: 'Search the web for current information on any topic.' It also states what it returns ('snippets and source URLs'), which gives a clear sense of the operation. However, it does not explicitly differentiate from sibling tools like tavily_research or tavily_extract, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for use: for news, facts, or data beyond the model's knowledge cutoff. This tells an agent when the tool is relevant. It stops short of naming alternatives or stating when not to use it, so it lacks explicit exclusions.
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.
6 tool updates
v0.3.0- First observed
tavily_crawl - First observed
tavily_extract - First observed
tavily_map - First observed
tavily_pool_status - First observed
tavily_research - First observed
tavily_search
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Firecrawl — web search, scraping, and biomedical/arXiv paper search.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Official SerpApi MCP server for Google, Bing, and other search engines.
Related MCP Servers
- AlicenseBqualityDmaintenanceA local MCP server that exposes Tavily search as a tool and rotates across multiple API keys for reliability.1MIT
- AlicenseAqualityDmaintenanceA 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.513 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Tavily search and web data tools, enabling search, extract, crawl, and map operations through a simple HTTP or stdio interface.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server exposing 8 Tavily tools (web search, fetch, crawl, map, QnA, context, and deep research) via Streamable HTTP for AI assistants to perform live web retrieval and research.1-