Skip to main content
Glama
ai-integr8tor

Tavily MCP Server

Tavily MCP Server

GitHub Repo stars npm

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/mcp

After adding, you'll need to complete the authentication flow:

  1. Run claude to start Claude Code

  2. Type /mcp to open the MCP server management

  3. Select 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

Install MCP Server

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:

    1. Metadata discovery

    2. Client registration

    3. Preparing authorization

    4. Request authorization and obtain the authorization code

    5. Token request

    6. 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-auth

Note:

  • 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 the Authorization header, 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_default in 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_default key is set, the default key in your personal account will be used. If no default key is set, the first available key will be used.

Local MCP

Prerequisites 🔧

Before you begin, ensure you have:

  • Tavily API key

    • If you don't have a Tavily API key, you can sign up for a free account here

  • Claude Desktop or Cursor

  • 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 git

    • On Linux:

      • Debian/Ubuntu: sudo apt install git

      • RedHat/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 ✨

Available Tools

5 tools
tavily_crawlC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe root URL to begin the crawl
limitNoTotal number of links the crawler will process before stopping
formatNoThe format of the extracted web page content. markdown returns content in markdown format. text returns plain text and may increase latency.markdown
max_depthNoMax depth of the crawl. Defines how far from the base URL the crawler can explore.
max_breadthNoMax number of links to follow per level of the tree (i.e., per page)
instructionsNoNatural language instructions for the crawler. Instructions specify which types of pages the crawler should return.
select_pathsNoRegex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*)
extract_depthNoAdvanced extraction retrieves more data, including tables and embedded content, with higher success but may increase latencybasic
allow_externalNoWhether to return external links in the final response
select_domainsNoRegex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$)
include_faviconNoWhether to include the favicon URL for each result

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance on when to use this tool versus 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of URLs to extract content from
queryNoQuery to rerank content chunks by relevance
formatNoOutput formatmarkdown
extract_depthNoUse 'advanced' for LinkedIn, protected sites, or tables/embedded contentbasic
include_imagesNoInclude images from pages
include_faviconNoInclude favicon URLs

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe root URL to begin the mapping
limitNoTotal number of links the crawler will process before stopping
max_depthNoMax depth of the mapping. Defines how far from the base URL the crawler can explore
max_breadthNoMax number of links to follow per level of the tree (i.e., per page)
instructionsNoNatural language instructions for the crawler
select_pathsNoRegex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*)
allow_externalNoWhether to return external links in the final response
select_domainsNoRegex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesA comprehensive description of the research task
modelNoDefines 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

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tool names follow a consistent 'tavily_verb' pattern (crawl, extract, map, research, search), making them predictable and easy to understand.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides 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.
    72
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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,899
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform real-time web searches, extract data from web pages, map website structures, and crawl websites using the Tavily API.
    92
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides web search capabilities using the Tavily API, enabling AI models to search the internet and retrieve up-to-date information.

Latest Blog Posts

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