Tavily Cursor MCP Server
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 Cursor MCP Serversearch for recent advancements in quantum computing"
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 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
Option 1: Local Installation (Recommended)
Clone or download this directory to your local machine
Install dependencies:
cd tavily-cursor-mcp npm installMake the script executable (Mac/Linux):
chmod +x index.jsAdd 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
Install globally:
cd tavily-cursor-mcp npm install -g .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.jsonMac:
~/.cursor/mcp.jsonor workspace.cursor/mcp.jsonLinux:
~/.cursor/mcp.jsonor workspace.cursor/mcp.json
Get Your Tavily API Key
Go to https://tavily.com
Sign up or log in
Get your API key from the dashboard
Replace
your-tavily-api-key-herein 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 developmentsUse tavily_extract to get the content from https://example.comUse tavily_search_qna to answer: What is the capital of France?Available Tools
tavily_search
Search the web using Tavily API.
Parameters:
query(required): Search querysearch_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 answersearch_depth: "basic" or "advanced" (default: "basic")
tavily_search_context
Generate context for RAG applications.
Parameters:
query(required): Search querysearch_depth: "basic" or "advanced" (default: "basic")max_results: Max results (default: 5)
Troubleshooting
Tools not showing up in Cursor
Make sure you've completely quit and restarted Cursor (not just closed the window)
Verify the path in
mcp.jsonis correct and absoluteCheck that Node.js is installed:
node --version(should be >= 18.0.0)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.jsThen use the MCP Inspector or send MCP protocol messages via stdin.
License
MIT
Available Tools
4 toolstavily_extractA
Extract clean content from one or more URLs. Returns the main content from web pages, removing ads and navigation.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Array of URLs to extract content from |
TDQS
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.
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.
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.
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.
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.
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_searchB
Search the web using Tavily API. Returns relevant search results with URLs, content snippets, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query | |
| search_depth | No | Search depth - 'basic' for faster results, 'advanced' for more thorough search | basic |
| topic | No | Search topic type | general |
| days | No | Number of days back to search (for news topic) | |
| max_results | No | Maximum number of results to return | |
| include_images | No | Include images in results | |
| include_answer | No | Include AI-generated answer | |
| include_raw_content | No | Include raw HTML content |
TDQS
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 states the tool 'Returns relevant search results with URLs, content snippets, and metadata', which gives some output context, but lacks critical behavioral details such as rate limits, authentication requirements, error handling, or whether it's a read-only operation. For a web search tool with no annotation coverage, this is a significant gap in 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 extremely concise and well-structured in a single sentence: 'Search the web using Tavily API. Returns relevant search results with URLs, content snippets, and metadata.' It front-loads the core purpose and efficiently communicates the key functionality without any wasted words or redundancy.
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 complexity of a web search tool with 8 parameters and no output schema, the description is minimally adequate. It covers the basic purpose and return format but lacks details on behavioral aspects (e.g., rate limits, errors) and doesn't help differentiate from sibling tools. With no annotations and no output schema, the description should provide more context to be fully complete for agent 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?
The input schema has 100% description coverage, providing clear documentation for all 8 parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain parameter interactions or provide usage examples). With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting, and the description doesn't compensate with extra insights.
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: 'Search the web using Tavily API' with the specific verb 'Search' and resource 'web'. It distinguishes itself from siblings by mentioning it returns 'relevant search results with URLs, content snippets, and metadata', which suggests a general search function. However, it doesn't explicitly differentiate from sibling tools like 'tavily_search_context' or 'tavily_search_qna', which likely have overlapping purposes.
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_extract, tavily_search_context, tavily_search_qna). It mentions what the tool does but offers no context about alternatives, exclusions, or specific use cases. This leaves the agent without clear direction on tool selection among similar options.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query | |
| search_depth | No | Search depth | basic |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The question to answer | |
| search_depth | No | Search depth | basic |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
- First observed
tavily_extract - First observed
tavily_search - First observed
tavily_search_context - First observed
tavily_search_qna
TDQS
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.
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.
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.
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
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
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Web search, fetch, extract, and research for AI agents. Markdown output + AI-synthesized answers.
Web search, AI agent, and content extraction via You.com APIs
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 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.-
- AlicenseBqualityDmaintenanceProvides advanced web search, content extraction, site crawling, mapping, and AI-powered research capabilities through the Tavily API with automatic multi-key fallback for rate limiting.8MIT
Appeared in Searches
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/sumitchatterjee13/tavily-cursor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server