Tavily MCP Server
OfficialThe Tavily MCP Server enhances AI systems with tools for web search, content extraction, mapping, and crawling capabilities:
Perform real-time, customizable web searches using Tavily's AI search engine with options for query parameters, time ranges, result count, domain filtering, and topic specification (general/news)
Extract and process content from specified URLs with control over extraction depth and image inclusion
Map website structures systematically
Combine these tools to comprehensively gather, explore, and analyze web data
Can be combined with Neo4j MCP server as mentioned in the tutorial for building a knowledge graph assistant
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 MCP Serversearch for latest AI research papers on arXiv"
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.
Tavily MCP Server
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
📚 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>Note: When using the remote MCP, you can specify default parameters for all requests by including a DEFAULT_PARAMETERS header containing a JSON object with your desired defaults. Example:
{"include_images":true, "search_depth": "basic", "max_results": 10}Related MCP server: Tavily MCP Server
Connect to Claude Code
Claude Code is Anthropic's official CLI tool for Claude. You can add the Tavily MCP server using the claude mcp add command. There are two ways to authenticate:
Option 1: API Key in URL
Pass your API key directly in the URL. Replace <your-api-key> with your actual Tavily API key:
claude mcp add --transport http tavily https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key>Option 2: OAuth Authentication Flow
Add the server without an API key in the URL:
claude mcp add --transport http tavily https://mcp.tavily.com/mcpAfter adding, you'll need to complete the authentication flow:
Run
claudeto start Claude CodeType
/mcpto open the MCP server managementSelect the Tavily server and complete the authentication process
Tip: Add --scope user to either command to make the Tavily MCP server available globally across all your projects:
claude mcp add --transport http --scope user tavily https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key>Once configured, you'll have access to the Tavily search, extract, map, and crawl tools.
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": {}
}
}
}Remote MCP Server OAuth Flow
The Tavily Remote MCP server supports secure OAuth authentication, allowing you to connect and authorize seamlessly with compatible clients.
How to Set Up OAuth Authentication
A. Using MCP Inspector:
Open the MCP Inspector and click "Open Auth Settings".
Select the OAuth flow and complete these steps:
Metadata discovery
Client registration
Preparing authorization
Request authorization and obtain the authorization code
Token request
Authentication complete
Once finished, you will receive an access token that lets you securely make authenticated requests to the Tavily Remote MCP server.
B. Using other MCP Clients (Example: Cursor):
You can configure your MCP client to use OAuth without including your Tavily API key in the URL. For example, in your mcp.json:
{
"mcpServers": {
"tavily-remote-mcp": {
"command": "npx mcp-remote https://mcp.tavily.com/mcp",
"env": {}
}
}
}If you need to clear stored OAuth credentials and reauthenticate, run:
rm -rf ~/.mcp-authNote:
OAuth authentication is optional. You can still use API key authentication at any time by including your Tavily API key in the URL query parameter (
?tavilyApiKey=...) or by setting it in theAuthorizationheader, as described above.
Selecting Which API Key Is Used for OAuth
After successful OAuth authentication, you can control which API key is used by naming it mcp_auth_default:
If you set a key named
mcp_auth_defaultin your personal account, that key will be used for the auth flow.If you are part of a team that has a key named
mcp_auth_default, that key will be used for the auth flow.If you have both a personal key and a team key named
mcp_auth_default, the personal key will be prioritized.If no
mcp_auth_defaultkey is set, thedefaultkey in your personal account will be used. If nodefaultkey is set, the first available key will be used.
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
Running with NPX
npx -y tavily-mcp@latest Default Parameters Configuration ⚙️
You can set default parameter values for the tavily-search tool using the DEFAULT_PARAMETERS environment variable. This allows you to configure default search behavior without specifying these parameters in every request.
Example Configuration
export DEFAULT_PARAMETERS='{"include_images": true}'Example usage from Client
{
"mcpServers": {
"tavily-mcp": {
"command": "npx",
"args": ["-y", "tavily-mcp@latest"],
"env": {
"TAVILY_API_KEY": "your-api-key-here",
"DEFAULT_PARAMETERS": "{\"include_images\": true, \"max_results\": 15, \"search_depth\": \"advanced\"}"
}
}
}
}Identifying the End User (Optional)
You can optionally identify the end user on whose behalf requests are being made by setting the TAVILY_HUMAN_ID environment variable. When set, Tavily MCP forwards it as the X-Human-Id header on every API call, enabling per-user analytics.
This is entirely optional — leave it unset and behavior is unchanged.
{
"mcpServers": {
"tavily-mcp": {
"command": "npx",
"args": ["-y", "tavily-mcp@latest"],
"env": {
"TAVILY_API_KEY": "your-api-key-here",
"TAVILY_HUMAN_ID": "your-user-id"
}
}
}
}Privacy note: Tavily hashes human_id server-side (SHA-256) before storage, so the raw value is never persisted. Even so, prefer opaque identifiers (e.g. an internal user ID) over raw PII like emails when possible.
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 | |
| 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) | |
| limit | No | Total number of links the crawler will process before stopping | |
| 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.*) | |
| select_domains | No | Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$) | |
| allow_external | No | Whether to return external links in the final response | |
| extract_depth | No | Advanced extraction retrieves more data, including tables and embedded content, with higher success but may increase latency | basic |
| 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 |
| 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 | |
| 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 | |
| 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 |
| include_favicon | No | Whether to include the favicon URL for each result | |
| query | No | User intent query for reranking extracted chunks based on relevance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool 'retrieves and processes raw content' but doesn't disclose critical behavioral traits: whether it requires authentication, rate limits, error handling, pagination, or what the response structure looks like. The description adds minimal context beyond the basic operation.
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 appropriately sized with two concise sentences. The first sentence states the core functionality, and the second provides use cases. There's no wasted text, though it could be slightly more front-loaded with sibling differentiation.
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 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral constraints. For a web extraction tool with multiple configuration options and no structured output documentation, the description should provide more context about the extraction results and limitations.
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 6 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions general purpose but no parameter semantics. Baseline 3 is appropriate when schema does the heavy lifting.
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: 'retrieves and processes raw content from specified URLs' with specific verbs and resource. It mentions use cases like 'data collection, content analysis, and research tasks' which helps understanding. However, it doesn't explicitly differentiate from sibling tools like tavily-crawl or tavily-search, which likely have overlapping web-related functionality.
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 guidance on when to use this tool versus its siblings (tavily-crawl, tavily-map, tavily-search). It mentions the tool is 'ideal for data collection, content analysis, and research tasks' but doesn't specify contexts where alternatives might be better. There's no explicit when/when-not guidance or named alternatives.
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 | |
| 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) | |
| limit | No | Total number of links the crawler will process before stopping | |
| 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.*) | |
| select_domains | No | Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$) | |
| allow_external | No | Whether to return external links in the final response |
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 |
|---|---|---|---|
| query | Yes | Search query | |
| search_depth | No | The depth of the search. It can be 'basic' or 'advanced' | basic |
| topic | No | The category of the search. This will determine which of our agents will be used for the search | general |
| 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 | |
| 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 | |
| start_date | No | Will return all results after the specified start date. Required to be written in the format YYYY-MM-DD. | |
| end_date | No | Will return all results before the specified end date. Required to be written in the format YYYY-MM-DD | |
| max_results | No | The maximum number of search results to return | |
| include_images | No | Include a list of query-related images in the response | |
| include_image_descriptions | No | Include a list of query-related images and their descriptions in the response | |
| include_raw_content | No | Include the cleaned and parsed HTML content of each search result | |
| 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 | |
| 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 | |
| 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. | |
| 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?
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.
4 tool updates
v1.0.0- First observed
tavily-crawl - First observed
tavily-extract - First observed
tavily-map - First observed
tavily-search
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: crawling (tavily-crawl) focuses on structured exploration from a base URL, extraction (tavily-extract) retrieves raw content from specific URLs, mapping (tavily-map) analyzes site structure, and search (tavily-search) provides real-time web results. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent 'tavily-' prefix with a descriptive action suffix (crawl, extract, map, search), using a uniform hyphenated style. This predictable pattern enhances readability and reduces confusion, with no deviations in naming conventions.
With 4 tools, the server is well-scoped for its web-related domain, covering key operations like crawling, extraction, mapping, and search without bloat. Each tool earns its place by addressing a distinct aspect of web interaction, making the count appropriate and manageable.
The tool set provides complete coverage for web-based tasks, including discovery (crawl, map), content retrieval (extract, search), and analysis. There are no obvious gaps; agents can perform end-to-end workflows from finding sites to extracting and analyzing content without dead ends.
Maintenance
Related MCP Connectors
The Octagon MCP server provides specialized AI-powered financial research and analysis by integrating with the Octagon Market Intelligence API. It enables users to analyze public market data (SEC filings, earnings transcripts, financial metrics, and stock data for 8000+ companies), private market data (3M+ companies, 500k+ funding rounds, 2M+ M&A/IPO transactions), and conduct deep research including web scraping capabilities. The server also features autonomous research agents that search hundreds of sources and return fully cited reports in approximately one minute.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
The Dappier MCP server connects LLMs and AI agents to real-time, rights-cleared, proprietary data from trusted sources across various domains. It provides specialized knowledge through real-time web search, financial stock market and crypto data access, AI-powered content recommendations from premium publishers, and structured outputs with sub-300ms response times, enabling AI systems to respond to current events and trends.
Related MCP Servers
- AlicenseBqualityDmaintenanceThis server allows users to perform web searches using Perplexity AI, providing a tool for retrieving search results through a simple API interface.177 npm3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with real-time web search, intelligent data extraction from web pages, website mapping, and web crawling capabilities through Tavily's API. Enables comprehensive web research and content analysis through natural language interactions.15,547 npmMIT
- AlicenseBqualityDmaintenanceProvides AI assistants with real-time web search capabilities and intelligent data extraction from web pages through Tavily's advanced search API.215,547 npmMIT
- AlicenseAqualityCmaintenanceProvides AI assistants with real-time web search capabilities, intelligent data extraction from web pages, website mapping, and web crawling through Tavily's API.415,547 npmMIT