Skip to main content
Glama
sumitchatterjee13

Tavily Cursor MCP Server

Tavily Cursor MCP Server

A custom Tavily MCP server with underscore-named tools for Cursor compatibility.

Why This Exists

The official Tavily MCP server uses hyphenated tool names (tavily-search, tavily-extract) which Cursor's CallMcpTool interface doesn't properly recognize. This custom server uses underscore naming (tavily_search, tavily_extract) to work seamlessly with Cursor.

Related MCP server: tavily-mcp

Features

  • tavily_search - Web search with Tavily API

  • tavily_extract - Extract clean content from URLs

  • tavily_search_qna - Direct question answering

  • tavily_search_context - Generate context for RAG applications

Installation

  1. Clone or download this directory to your local machine

  2. Install dependencies:

    cd tavily-cursor-mcp
    npm install
  3. Make the script executable (Mac/Linux):

    chmod +x index.js
  4. Add to your Cursor mcp.json:

    {
      "mcpServers": {
        "tavily_cursor": {
          "command": "node",
          "args": ["/absolute/path/to/tavily-cursor-mcp/index.js"],
          "env": {
            "TAVILY_API_KEY": "your-tavily-api-key-here"
          }
        }
      }
    }

    Important: Replace /absolute/path/to/tavily-cursor-mcp/ with the actual full path to this directory.

Option 2: NPM Global Installation

  1. Install globally:

    cd tavily-cursor-mcp
    npm install -g .
  2. Add to your Cursor mcp.json:

    {
      "mcpServers": {
        "tavily_cursor": {
          "command": "tavily-cursor-mcp",
          "env": {
            "TAVILY_API_KEY": "your-tavily-api-key-here"
          }
        }
      }
    }

Configuration

Cursor MCP Configuration Location

  • Windows: %APPDATA%\Cursor\User\globalStorage\mcp.json

  • Mac: ~/.cursor/mcp.json or workspace .cursor/mcp.json

  • Linux: ~/.cursor/mcp.json or workspace .cursor/mcp.json

Get Your Tavily API Key

  1. Go to https://tavily.com

  2. Sign up or log in

  3. Get your API key from the dashboard

  4. Replace your-tavily-api-key-here in the config with your actual key

Usage in Cursor

After installation and configuration, restart Cursor completely. Then use in Agent mode:

Use tavily_search to find the latest AI developments
Use tavily_extract to get the content from https://example.com
Use tavily_search_qna to answer: What is the capital of France?

Available Tools

Search the web using Tavily API.

Parameters:

  • query (required): Search query

  • search_depth: "basic" or "advanced" (default: "basic")

  • topic: "general" or "news" (default: "general")

  • days: Number of days back for news search (default: 3)

  • max_results: Max results to return (default: 5, max: 20)

  • include_images: Include images (default: false)

  • include_answer: Include AI-generated answer (default: false)

  • include_raw_content: Include raw HTML (default: false)

tavily_extract

Extract clean content from URLs.

Parameters:

  • urls (required): Array of URLs to extract from

tavily_search_qna

Get direct answers to questions.

Parameters:

  • query (required): The question to answer

  • search_depth: "basic" or "advanced" (default: "basic")

tavily_search_context

Generate context for RAG applications.

Parameters:

  • query (required): Search query

  • search_depth: "basic" or "advanced" (default: "basic")

  • max_results: Max results (default: 5)

Troubleshooting

Tools not showing up in Cursor

  1. Make sure you've completely quit and restarted Cursor (not just closed the window)

  2. Verify the path in mcp.json is correct and absolute

  3. Check that Node.js is installed: node --version (should be >= 18.0.0)

  4. Verify your Tavily API key is correct

"TAVILY_API_KEY environment variable is required" error

Make sure your API key is set in the env section of your mcp.json configuration.

Tools discovered but not usable

This was the original problem! This server fixes it by using underscores instead of hyphens in tool names.

Testing

You can test the server directly:

TAVILY_API_KEY=your-key-here node index.js

Then use the MCP Inspector or send MCP protocol messages via stdin.

License

MIT

Available Tools

4 tools
tavily_extractA

Extract clean content from one or more URLs. Returns the main content from web pages, removing ads and navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesArray of URLs to extract content from

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that content is 'clean' with ads and navigation removed, which adds some context, but lacks details on error handling, rate limits, authentication needs, or output format. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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, front-loaded with the core purpose and followed by a clarifying detail. Every sentence earns its place by specifying the action, resource, and behavioral outcome without redundancy or unnecessary information.

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's moderate complexity (extracting content from URLs) and lack of annotations and output schema, the description is partially complete. It covers the purpose and basic behavior but omits details on output structure, error cases, and usage constraints, which are important for effective tool invocation.

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% description coverage, with the 'urls' parameter documented as 'Array of URLs to extract content from'. The description adds no additional meaning beyond this, such as URL format requirements or limits on array size. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Extract clean content') and resource ('from one or more URLs'), with explicit mention of what is extracted ('main content from web pages') and what is removed ('ads and navigation'). It distinguishes from sibling tools (tavily_search, tavily_search_context, tavily_search_qna) by focusing on extraction rather than search or Q&A functionality.

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 implies usage for extracting main content from URLs, but does not explicitly state when to use this tool versus alternatives like the sibling search tools. No guidance is provided on exclusions or prerequisites, such as URL validity or content type limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tavily_search_contextC

Generate context for RAG applications. Returns search results optimized for context generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query
search_depthNoSearch depthbasic
max_resultsNoMaximum number of results

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 carries the full burden of behavioral disclosure. It states the tool returns 'search results optimized for context generation,' which implies a read-only operation focused on retrieval, but lacks details on permissions, rate limits, error handling, or the format of returned results. This is a significant gap for a tool with behavioral implications.

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 highly concise and front-loaded, consisting of two clear sentences that directly state the tool's purpose and output. There is no wasted language or redundancy, making it efficient and easy to parse.

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's complexity (involving search and context generation), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'optimized for context generation' entails, how results differ from other search tools, or what the return format looks like, leaving gaps for effective agent use.

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 description adds no parameter-specific information beyond what the input schema provides. Since schema description coverage is 100%, the schema already documents all parameters (query, search_depth, max_results) with descriptions and defaults. The description doesn't compensate with additional context, so it meets 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's purpose: 'Generate context for RAG applications' and 'Returns search results optimized for context generation.' It specifies the verb ('Generate'), resource ('context'), and optimization goal ('for RAG applications'), but doesn't explicitly differentiate from sibling tools like tavily_search or tavily_search_qna, which likely serve similar search-related purposes.

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. It mentions the tool is 'optimized for context generation,' but doesn't specify scenarios where this is preferred over other search tools like tavily_search or tavily_extract, nor does it outline any prerequisites or exclusions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tavily_search_qnaB

Get a direct answer to a question using Tavily's Q&A optimized search. Returns a concise answer to specific questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe question to answer
search_depthNoSearch depthbasic

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Returns a concise answer,' which gives some output behavior, but lacks details on rate limits, authentication needs, error handling, or what 'concise' entails (e.g., length, format). For a search tool with no annotation coverage, this leaves significant gaps in understanding operational traits.

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 front-loaded and efficient: two sentences that directly state the tool's function and output without unnecessary details. Every sentence earns its place by covering purpose and behavior concisely, making it easy to parse and understand quickly.

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's moderate complexity (search with parameters), no annotations, and no output schema, the description provides basic purpose and output info but lacks depth. It doesn't cover error cases, response format beyond 'concise answer,' or integration with sibling tools. This is adequate as a minimum viable description but has clear gaps for effective agent use.

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 description coverage is 100%, with clear descriptions for both parameters ('query' as 'The question to answer' and 'search_depth' as 'Search depth' with enum values). The description adds no additional parameter semantics beyond what the schema provides, such as explaining 'search_depth' choices or query formatting. Baseline 3 is appropriate since the schema does the heavy lifting.

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's purpose: 'Get a direct answer to a question using Tavily's Q&A optimized search.' It specifies the action ('Get a direct answer') and resource ('question'), but doesn't explicitly differentiate from sibling tools like 'tavily_search' or 'tavily_search_context' beyond mentioning 'Q&A optimized search.' This makes it clear but not fully sibling-distinctive.

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 implies usage context with 'to specific questions' and mentions 'Q&A optimized search,' suggesting it's for direct answers rather than broader searches. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'tavily_search' or 'tavily_extract,' nor does it specify exclusions or prerequisites. The guidance is present but limited to implication.

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.

  1. 4 tool updates
    • First observedtavily_extract
    • First observedtavily_search
    • First observedtavily_search_context
    • First observedtavily_search_qna

TDQS

A3.5/5.0
Disambiguation4/5

The tools are mostly distinct, with clear primary functions: extraction, general search, context generation, and Q&A. However, tavily_search and tavily_search_context could be slightly confusing as both involve search, though their descriptions differentiate them well.

Naming Consistency5/5

All tools follow a consistent 'tavily_verb' pattern, using snake_case uniformly. The naming is predictable and readable, with no deviations in style or convention.

Tool Count5/5

With 4 tools, this server is well-scoped for its purpose of web search and content extraction. Each tool serves a specific, non-redundant function, making the count appropriate and manageable.

Completeness4/5

The toolset covers core web search and extraction workflows effectively, including content retrieval, general search, context generation, and direct Q&A. A minor gap might be the lack of advanced filtering or customization options, but agents can work around this for most use cases.

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

Appeared in Searches

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/sumitchatterjee13/tavily-cursor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server