Tavily MCP Server
Enables building a knowledge graph assistant by combining Tavily's web search and extraction with Neo4j's graph database capabilities.
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 MCP Serversearch 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.
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
5 toolstavily_crawlC
Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth.
| 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?
With no annotations provided, the description must disclose behavioral traits. It only mentions 'crawl' and 'extracts content' with configurable depth and breadth. It omits details such as rate limits, respect for robots.txt, handling of dynamic content, or the nature of the extraction process. This is insufficient for safe invocation.
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 long, each serving a purpose: the first states the core action, the second adds key differentiators (configurable depth and breadth). No wasted words; highly 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?
Despite having no output schema and 11 parameters, the description is extremely brief. It fails to explain return values, parameter effects (e.g., limit, max_depth), or operational behavior (e.g., whether it respects robots.txt). For a complex tool, this is insufficiently complete.
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 input schema has 100% coverage with descriptions for all 11 parameters. Therefore, the baseline is 3. The description adds no additional meaning beyond what the schema provides, so no improvement or deduction.
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 'crawl' and the resource 'a website starting from a URL', with added detail about extracting content and configurable depth/breadth. This distinguishes it from siblings like tavily_extract (which likely extracts specific data) and tavily_search, but it does not explicitly differentiate.
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 its siblings (tavily_extract, tavily_map, tavily_research, tavily_search). The description does not specify prerequisites, exclusion criteria, or alternative scenarios. The agent is left to infer usage from the tool name.
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 | List of URLs to extract content from | |
| query | No | Query to rerank content chunks by relevance | |
| format | No | Output format | markdown |
| extract_depth | No | Use 'advanced' for LinkedIn, protected sites, or tables/embedded content | basic |
| include_images | No | Include images from pages | |
| include_favicon | No | Include favicon URLs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic outcome (returns raw content). It does not disclose rate limits, authentication needs, or handling of dynamic content, which are important for agent decision-making.
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 that efficiently conveys the tool's core function. While concise, it could be more structured or include a brief note on key features without adding verbosity.
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 6 parameters and no output schema, the description is too minimal. It does not mention optional parameters like query, format, depth, or include images, leaving the agent with incomplete context about the tool's capabilities.
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 input schema has 100% coverage with descriptions for all 6 parameters, so the baseline is 3. The tool description adds no additional parameter-level meaning beyond what the schema already provides.
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 extracts content from URLs and returns it in markdown or text format. However, it does not explicitly differentiate from sibling tools like search or crawl, so it lacks sibling differentiation.
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 alternatives such as tavily_search or tavily_crawl. It only states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily_mapB
Map a website's structure. Returns a list of URLs found starting from the base URL.
| 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?
No annotations are present, and the description only mentions that it maps and returns URLs. It fails to disclose behavioral traits such as rate limits, authentication requirements, or whether the operation is read-only (non-destructive).
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 long, front-loaded with the core purpose, and contains no extraneous information. Every word adds value.
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?
With no output schema, the description only hints at the return format (list of URLs) without detail. For a tool with 8 parameters and no annotations, the description is minimally complete but could provide more context on behavior and output structure.
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 coverage is 100%, so parameters are fully described in the schema. The description adds no additional meaning beyond the schema, meeting the baseline of 3.
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 maps a website's structure and returns a list of URLs from the base URL. However, it does not distinguish from sibling tools like tavily_crawl, which likely performs a similar crawling function.
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 provided on when to use this tool versus alternatives (e.g., tavily_crawl, tavily_extract). There are no explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily_researchB
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 or complete a task. Returns a detailed response based on the research findings. Rate limit: 20 requests per minute.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | A comprehensive description of the research task | |
| model | No | Defines the degree of depth of the research. 'mini' is good for narrow tasks with few subtopics. 'pro' is good for broad tasks with many subtopics. 'auto' automatically selects the best model. | auto |
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 a rate limit of 20 requests per minute and that it returns a detailed response, which adds useful behavioral context. However, it does not disclose if it calls external APIs, costs, or determinism.
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 at three sentences, conveying key information efficiently. However, it lacks structural elements like bullet points that could improve readability.
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 two parameters and no output schema, the description is adequate but could be more complete. It does not describe the return format, provide examples, or note differences from similar tools like tavily_search.
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 coverage is 100%, so the description adds limited value for parameters. The tool-level rate limit note is helpful but not parameter-specific. The description does not expand on the meaning of the 'input' or 'model' parameters beyond what the schema provides.
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 performs comprehensive research on a topic or question, gathering information from multiple sources. However, it does not explicitly differentiate itself from sibling tools like tavily_search, which also gathers information, leaving some ambiguity.
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 advises using the tool 'when you need to gather information from multiple sources to answer a question,' providing clear usage context. However, it lacks guidance on when not to use it or alternatives among sibling tools.
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 | 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. Must be a full country name (e.g., 'United States', 'Japan', 'Germany'). ISO country codes (e.g., 'us', 'jp') are not supported. Available only if topic is general. See https://docs.tavily.com/documentation/api-reference/search for the full list of supported countries. | |
| 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 | |
| exact_match | No | Only return results containing the exact phrase(s) in quotes in your query | |
| max_results | No | The maximum number of search results to return | |
| search_depth | No | The depth of the search. 'basic' for generic results, 'advanced' for more thorough search, 'fast' for optimized low latency with high relevance, 'ultra-fast' for prioritizing latency above all else | 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?
Without annotations, the description should disclose behavioral constraints like rate limits or auth needs; it only states 'returns snippets and source URLs,' missing safety implications or performance characteristics.
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?
Two sentences with no waste; front-loaded verb and use case. Highly concise and structured.
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?
With 15 parameters including date filters, domain controls, and search depth, the description fails to overview these capabilities. The agent gets minimal context about the tool's full range.
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 coverage is 100% with detailed parameter descriptions, so the description adds no extra parameter meaning beyond that. Baseline of 3 is appropriate.
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 searches the web for current information, with examples like news and facts. It distinguishes from sibling tools by using 'search' as the verb, though no explicit differentiation is given.
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 advises use for information beyond the knowledge cutoff, implying timeliness, but lacks when-not-to-use or alternatives to sibling tools like tavily_crawl or tavily_extract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: crawling a site, extracting content from URLs, mapping site structure, conducting comprehensive research, and performing web searches. No overlap or ambiguity.
All tool names follow a consistent 'tavily_verb' pattern (crawl, extract, map, research, search), making them predictable and easy to understand.
Five tools cover the core functionalities of a web research server without being excessive or insufficient. Each tool serves a distinct need in the information retrieval workflow.
The set covers the main operations for web research: search, crawl, extract, and map. However, it lacks tools for managing results (e.g., saving, filtering) or handling scheduling, which are minor gaps.
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
Web search, URL content extraction to Markdown, site mapping, and recursive web crawler.
Web search, news, page retrieval, sitemaps, and trending topics through Search1API.
Web data tools for AI agents: pages as markdown, search, maps, commerce, jobs, AI answers.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides AI-powered web search capabilities using Tavily's search API, enabling LLMs to perform sophisticated web searches, get direct answers to questions, and search recent news articles.72MIT
- 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.20,899MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform real-time web searches, extract data from web pages, map website structures, and crawl websites using the Tavily API.92MIT
- FlicenseNot gradedqualityCmaintenanceProvides web search capabilities using the Tavily API, enabling AI models to search the internet and retrieve up-to-date information.
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/ai-integr8tor/tavily-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server