tavily-mcp
Provides real-time web search, data extraction, and website crawling capabilities to OpenAI models via the Tavily API.
Click on "Install 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-mcpsearch for latest AI news"
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.

The Tavily MCP server provides:
search, extract, map, crawl tools
Real-time web search capabilities through the tavily-search tool
Intelligent data extraction from web pages via the tavily-extract tool
Powerful web mapping tool that creates a structured map of website
Web crawler that systematically explores websites
基于原项目: 此项目基于 tavily-mcp 修改而来
📚 Helpful Resources
Tutorial on combining Tavily MCP with Neo4j MCP server
Tutorial on integrating Tavily MCP with Cline in VS Code
Remote MCP Server
Connect directly to Tavily's remote MCP server instead of running it locally. This provides a seamless experience without requiring local installation or configuration.
Simply use the remote MCP server URL with your Tavily API key:
https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key> Get your Tavily API key from tavily.com.
Alternatively, you can pass your API key through an Authorization header if the MCP client supports this:
Authorization: Bearer <your-api-key>Connect to Cursor
Click the ⬆️ Add to Cursor ⬆️ button, this will do most of the work for you but you will still need to edit the configuration to add your API-KEY. You can get a Tavily API key here.
once you click the button you should be redirect to Cursor ...
Step 1
Click the install button

Step 2
You should see the MCP is now installed, if the blue slide is not already turned on, manually turn it on. You also need to edit the configuration to include your own Tavily API key.

Step 3
You will then be redirected to your mcp.json file where you have to add your-api-key.
{
"mcpServers": {
"tavily-remote-mcp": {
"command": "npx -y mcp-remote https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key>",
"env": {}
}
}
}Connect to Claude Desktop
Claude desktop now supports adding integrations which is currently in beta. An integration in this case is the Tavily Remote MCP, below I will explain how to add the MCP as an integration in Claude desktop.
Step 1
open claude desktop, click the button with the two sliders and then navigate to add integrations.

Step 2
click Add integrations

Step 3
Name the integration and insert the Tavily remote MCP url with your API key. You can get a Tavily API key here. Click Add to confirm.

Step 4
Retrun to the chat screen and you will see the Tavily Remote MCP is now connected to Claude desktop.

OpenAI
Allow models to use remote MCP servers to perform tasks.
You first need to export your OPENAI_API_KEY
You must also add your Tavily API-key to
<your-api-key>, you can get a Tavily API key here
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[
{
"type": "mcp",
"server_label": "tavily",
"server_url": "https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key>",
"require_approval": "never",
},
],
input="Do you have access to the tavily mcp server?",
)
print(resp.output_text)Clients that don't support remote MCPs
mcp-remote is a lightweight bridge that lets MCP clients that can only talk to local (stdio) servers securely connect to remote MCP servers over HTTP + SSE with OAuth-based auth, so you can host and update your server in the cloud while existing clients keep working. It serves as an experimental stop-gap until popular MCP clients natively support remote, authorized servers.
{
"tavily-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key>"
]
}
}Related MCP server: AIE7-MCP
Local MCP
Prerequisites 🔧
Before you begin, ensure you have:
If you don't have a Tavily API key, you can sign up for a free account here
Node.js (v20 or higher)
You can verify your Node.js installation by running:
node --version
Git installed (only needed if using Git installation method)
On macOS:
brew install gitOn Linux:
Debian/Ubuntu:
sudo apt install gitRedHat/CentOS:
sudo yum install git
On Windows: Download Git for Windows
Tavily MCP server installation ⚡
Running with NPX
npx -y @bachstudio/tavily-mcpInstalling via Smithery
To install Tavily MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @bachstudio/tavily-mcp --client claudeAlthough you can launch a server on its own, it's not particularly helpful in isolation. Instead, you should integrate it into an MCP client. Below is an example of how to configure the Claude Desktop app to work with the tavily-mcp server.
Configuring MCP Clients ⚙️
This repository will explain how to configure VS Code, Cursor and Claude Desktop to work with the tavily-mcp server.
Configuring VS Code 💻
For one-click installation, click one of the install buttons below:
Manual Installation
First check if there are install buttons at the top of this section that match your needs. If you prefer manual installation, follow these steps:
Add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P (or Cmd + Shift + P on macOS) and typing Preferences: Open User Settings (JSON).
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "tavily_api_key",
"description": "Tavily API Key",
"password": true
}
],
"servers": {
"tavily": {
"command": "npx",
"args": ["-y", "@bachstudio/tavily-mcp"],
"env": {
"TAVILY_API_KEY": "${input:tavily_api_key}"
}
}
}
}
}Optionally, you can add it to a file called .vscode/mcp.json in your workspace:
{
"inputs": [
{
"type": "promptString",
"id": "tavily_api_key",
"description": "Tavily API Key",
"password": true
}
],
"servers": {
"tavily": {
"command": "npx",
"args": ["-y", "@bachstudio/tavily-mcp"],
"env": {
"TAVILY_API_KEY": "${input:tavily_api_key}"
}
}
}
}Configuring Cline 🤖
The easiest way to set up the Tavily MCP server in Cline is through the marketplace with a single click:
Open Cline in VS Code
Click on the Cline icon in the sidebar
Navigate to the "MCP Servers" tab ( 4 squares )
Search "Tavily" and click "install"
When prompted, enter your Tavily API key
Alternatively, you can manually set up the Tavily MCP server in Cline:
Open the Cline MCP settings file:
For macOS:
# Using Visual Studio Code code ~/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json # Or using TextEdit open -e ~/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonFor Windows:
code %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonAdd the Tavily server configuration to the file:
Replace
your-api-key-herewith your actual Tavily API key.{ "mcpServers": { "tavily-mcp": { "command": "npx", "args": ["-y", "@bachstudio/tavily-mcp"], "env": { "TAVILY_API_KEY": "your-api-key-here" }, "disabled": false, "autoApprove": [] } } }Save the file and restart Cline if it's already running.
When using Cline, you'll now have access to the Tavily MCP tools. You can ask Cline to use the tavily-search and tavily-extract tools directly in your conversations.
Configuring the Claude Desktop app 🖥️
For macOS:
# Create the config file if it doesn't exist
touch "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
# Opens the config file in TextEdit
open -e "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
# Alternative method using Visual Studio Code (requires VS Code to be installed)
code "$HOME/Library/Application Support/Claude/claude_desktop_config.json"For Windows:
code %APPDATA%\Claude\claude_desktop_config.jsonAdd the Tavily server configuration:
Replace your-api-key-here with your actual Tavily API key.
{
"mcpServers": {
"tavily-mcp": {
"command": "npx",
"args": ["-y", "@bachstudio/tavily-mcp"],
"env": {
"TAVILY_API_KEY": "your-api-key-here"
}
}
}
}2. Git Installation
Clone the repository:
git clone https://github.com/tavily-ai/tavily-mcp.git
cd tavily-mcpInstall dependencies:
npm installBuild the project:
npm run buildConfiguring the Claude Desktop app ⚙️
Follow the configuration steps outlined in the Configuring the Claude Desktop app section above, using the below JSON configuration.
Replace your-api-key-here with your actual Tavily API key and /path/to/tavily-mcp with the actual path where you cloned the repository on your system.
{
"mcpServers": {
"tavily": {
"command": "npx",
"args": ["/path/to/tavily-mcp/build/index.js"],
"env": {
"TAVILY_API_KEY": "your-api-key-here"
}
}
}
}Acknowledgments ✨
Model Context Protocol for the MCP specification
Anthropic for Claude Desktop
Available Tools
4 toolstavily-crawlA
A powerful web crawler that initiates a structured web crawl starting from a specified base URL. The crawler expands from that point like a graph, following internal links across pages. You can control how deep and wide it goes, and guide it to focus on specific sections of the site.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The root URL to begin the crawl | |
| limit | No | Total number of links the crawler will process before stopping | |
| format | No | The format of the extracted web page content. markdown returns content in markdown format. text returns plain text and may increase latency. | markdown |
| max_depth | No | Max depth of the crawl. Defines how far from the base URL the crawler can explore. | |
| max_breadth | No | Max number of links to follow per level of the tree (i.e., per page) | |
| instructions | No | Natural language instructions for the crawler. Instructions specify which types of pages the crawler should return. | |
| select_paths | No | Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*) | |
| extract_depth | No | Advanced extraction retrieves more data, including tables and embedded content, with higher success but may increase latency | basic |
| allow_external | No | Whether to return external links in the final response | |
| select_domains | No | Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$) | |
| include_favicon | No | Whether to include the favicon URL for each result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the crawler's graph-like expansion and control over depth/breadth, but omits behavioral details such as asynchronicity, rate limits, or side effects. It provides adequate but not comprehensive transparency.
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 long, front-loads the core purpose, and contains no redundant information. Every sentence contributes meaning.
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?
Despite 100% schema coverage and no output schema, the description is somewhat light for a complex 11-parameter tool. It does not mention the output format or any operational constraints (e.g., timeouts, error handling), leaving some gaps in completeness.
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 100%, so the baseline is 3. The description adds meaningful context beyond the schema by describing the crawler's graph expansion and ability to focus on sections, which enhances understanding of how parameters like max_depth and max_breadth work together.
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 it is a web crawler that starts from a base URL and expands like a graph, distinguishing it from sibling tools like extract, map, and search. It specifies the core action (initiates a structured crawl) and the resource (URL).
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 usage for structured web crawling but does not explicitly state when to use it versus alternatives (e.g., tavily-search). It lacks explicit when-not or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-extractC
A powerful web content extraction tool that retrieves and processes raw content from specified URLs, ideal for data collection, content analysis, and research tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to extract content from | |
| format | No | The format of the extracted web page content. markdown returns content in markdown format. text returns plain text and may increase latency. | markdown |
| extract_depth | No | Depth of extraction - 'basic' or 'advanced', if usrls are linkedin use 'advanced' or if explicitly told to use advanced | basic |
| include_images | No | Include a list of images extracted from the urls in the response | |
| include_favicon | No | Whether to include the favicon URL for each result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. However, it only says 'retrieves and processes raw content' without mentioning side effects, permissions, rate limits, or compliance matters like robots.txt. This is insufficient for a web extraction tool.
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, efficient sentence that clearly states the tool's purpose. However, it could be more structured, such as by separating the general function from usage context.
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 has 5 parameters and no output schema or annotations, the description lacks details about return values, error handling, or performance considerations. It fails to provide a complete picture for an agent to make informed decisions.
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 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for each parameter. It does not clarify format choices, depth implications, or image inclusion effects beyond what is listed.
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 the tool as a web content extraction tool that retrieves and processes raw content from specified URLs. It uses specific verbs and resources, and while it doesn't explicitly differentiate from siblings like tavily-crawl, the context suggests extraction is for individual URLs.
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 provides no explicit guidance on when to use this tool versus siblings. It only offers generic ideal use cases ('data collection, content analysis, and research tasks') without indicating when to choose extract over crawl, map, or search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-mapB
A powerful web mapping tool that creates a structured map of website URLs, allowing you to discover and analyze site structure, content organization, and navigation paths. Perfect for site audits, content discovery, and understanding website architecture.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The root URL to begin the mapping | |
| limit | No | Total number of links the crawler will process before stopping | |
| max_depth | No | Max depth of the mapping. Defines how far from the base URL the crawler can explore | |
| max_breadth | No | Max number of links to follow per level of the tree (i.e., per page) | |
| instructions | No | Natural language instructions for the crawler | |
| select_paths | No | Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*) | |
| allow_external | No | Whether to return external links in the final response | |
| select_domains | No | Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It mentions 'crawler' but does not disclose how it handles JavaScript, rate limits, robot.txt, or data retention. The description is insufficient for an agent to understand side effects or constraints.
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 concise, consisting of two sentences that efficiently convey the tool's value. However, it could be structured to front-load the core action more clearly.
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 8 parameters, no output schema, and no annotations, the description should explain the output structure (e.g., tree vs. list) and how the map is presented. It omits these critical details, making it incomplete for effective use.
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 100%, so baseline is 3. The description adds no additional meaning beyond the schema, simply restating the overall purpose without elaborating on parameters.
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 it creates a structured map of website URLs for discovering site structure, content organization, and navigation paths. It distinguishes from siblings (crawl, extract, search) by focusing on mapping and analysis.
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 provides some usage context ('Perfect for site audits, content discovery, and understanding website architecture') but lacks explicit guidance on when not to use or how it compares to siblings, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-searchB
A powerful web search tool that provides comprehensive, real-time results using Tavily's AI search engine. Returns relevant web content with customizable parameters for result count, content type, and domain filtering. Ideal for gathering current information, news, and detailed web content analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | The number of days back from the current date to include in the search results. This specifies the time frame of data to be retrieved. Please note that this feature is only available when using the 'news' search topic | |
| query | Yes | Search query | |
| topic | No | The category of the search. This will determine which of our agents will be used for the search | general |
| country | No | Boost search results from a specific country. This will prioritize content from the selected country in the search results. Available only if topic is general. Country names MUST be written in lowercase, plain English, with spaces and no underscores. | |
| end_date | No | Will return all results before the specified end date. Required to be written in the format YYYY-MM-DD | |
| start_date | No | Will return all results after the specified start date. Required to be written in the format YYYY-MM-DD. | |
| time_range | No | The time range back from the current date to include in the search results. This feature is available for both 'general' and 'news' search topics | |
| max_results | No | The maximum number of search results to return | |
| search_depth | No | The depth of the search. It can be 'basic' or 'advanced' | basic |
| include_images | No | Include a list of query-related images in the response | |
| exclude_domains | No | List of domains to specifically exclude, if the user asks to exclude a domain set this to the domain of the site | |
| include_domains | No | A list of domains to specifically include in the search results, if the user asks to search on specific sites set this to the domain of the site | |
| include_favicon | No | Whether to include the favicon URL for each result | |
| include_raw_content | No | Include the cleaned and parsed HTML content of each search result | |
| include_image_descriptions | No | Include a list of query-related images and their descriptions in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions 'real-time results' and 'customizable parameters' but omits important behavioral traits such as rate limits, result count limits, pagination, or whether the operation is read-only. The description implies a read operation but does not explicitly state it.
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 sentences, front-loaded with the primary purpose, and each sentence contributes value without repetition or fluff.
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 tool with 15 parameters and no output schema, the description is somewhat brief. It gives a high-level overview but lacks details on return format, result structure, or pagination behavior. The description is adequate but not comprehensive.
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 100%, so the schema already documents all parameters. The description adds general context by summarizing parameter categories (result count, content type, domain filtering), but does not provide additional meaning beyond what is in the schema.
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 the tool as a web search tool with real-time results and customizable parameters. However, it does not distinguish it from sibling tools like tavily-crawl, tavily-extract, or tavily-map, which may also perform web content retrieval.
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 explicit guidance on when to use this tool versus alternatives. The description states it is 'ideal for gathering current information, news, and detailed web content analysis,' but does not specify when to avoid it or mention any exclusions or prerequisites.
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. Dates show when Glama detected each change.
4 tool updates
v0.2.10- First observed
tavily-crawl - First observed
tavily-extract - First observed
tavily-map - First observed
tavily-search
TDQS
Tools are mostly distinct: search for web queries, crawl for graph-based site traversal, extract for pulling content from specific URLs, and map for site structure. There is potential confusion between crawl and map, but descriptions clarify that crawl follows links like a graph while map analyses structure.
All tools follow a consistent 'tavily-verb' naming pattern using snake_case. The verbs are clear and distinct: crawl, extract, map, search.
With only 4 tools, the server is lean but covers the core functionalities for web exploration and data extraction. It could benefit from a few more tools (e.g., for filtering or session management), but the current count is reasonable for a focused purpose.
The set covers search, crawl, extraction, and site mapping, which are essential for web research. However, missing advanced features like content summarization, scheduling, or batch processing, which limits its usefulness for complex workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA web search and extraction MCP server powered by Tavily, providing tools for AI-powered search, content extraction from URLs, and Q\&A with source citations.MIT
- FlicenseAqualityDmaintenanceMCP server that provides web search capabilities using the Tavily API.3-
- AlicenseNot gradedqualityBmaintenanceA cloud MCP server providing Tavily-powered tools for web search, extraction, crawling, mapping, and research, with multi-key load balancing, real-time quota tracking, and a web admin panel.MIT
- 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BACH-AI-Tools/tavily-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
