Skip to content

πŸ” Model Context Protocol (MCP) tool for search using the Tavily API

License

Notifications You must be signed in to change notification settings

spences10/mcp-tavily-search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

mcp-tavily-search

A Model Context Protocol (MCP) server for integrating Tavily's search API with LLMs. This server provides intelligent web search capabilities optimized for high-quality, factual results, including context generation for RAG applications and direct question answering.

Tavily Search Server MCP server

Features

  • πŸ” Advanced web search capabilities through Tavily API
  • πŸ€– AI-generated summaries of search results
  • 🎯 Domain filtering for higher quality results
  • πŸ“Š Configurable search depth and parameters
  • 🧠 Context generation for RAG applications
  • ❓ Direct question answering capabilities
  • πŸ’Ύ Response caching with TTL support
  • πŸ“ Multiple response formats (text, JSON, markdown)
  • πŸ”„ Structured result formatting optimized for LLMs
  • πŸ—οΈ Built on the Model Context Protocol

Configuration

This server requires configuration through your MCP client. Here are examples for different environments:

Cline Configuration

Add this to your Cline MCP settings:

{
	"mcpServers": {
		"mcp-tavily-search": {
			"command": "npx",
			"args": ["-y", "mcp-tavily-search"],
			"env": {
				"TAVILY_API_KEY": "your-tavily-api-key"
			}
		}
	}
}

Claude Desktop with WSL Configuration

For WSL environments, add this to your Claude Desktop configuration:

{
	"mcpServers": {
		"mcp-tavily-search": {
			"command": "wsl.exe",
			"args": [
				"bash",
				"-c",
				"source ~/.nvm/nvm.sh && TAVILY_API_KEY=your-tavily-api-key /home/username/.nvm/versions/node/v20.12.1/bin/npx mcp-tavily-search"
			]
		}
	}
}

Environment Variables

The server requires the following environment variable:

  • TAVILY_API_KEY: Your Tavily API key (required)

API

The server implements three MCP tools with configurable parameters:

tavily_search

Search the web using Tavily Search API, optimized for high-quality, factual results.

Parameters:

  • query (string, required): Search query
  • search_depth (string, optional): "basic" (faster) or "advanced" (more thorough). Defaults to "basic"
  • topic (string, optional): "general" or "news". Defaults to "general"
  • days (number, optional): Number of days back to search (news topic only). Defaults to 3
  • time_range (string, optional): Time range for results ('day', 'week', 'month', 'year' or 'd', 'w', 'm', 'y')
  • max_results (number, optional): Maximum number of results. Defaults to 5
  • include_answer (boolean, optional): Include AI-generated summary. Defaults to true
  • include_images (boolean, optional): Include related images. Defaults to false
  • include_image_descriptions (boolean, optional): Include image descriptions. Defaults to false
  • include_raw_content (boolean, optional): Include raw HTML content. Defaults to false
  • include_domains (string[], optional): List of trusted domains to include
  • exclude_domains (string[], optional): List of domains to exclude
  • response_format (string, optional): 'text', 'json', or 'markdown'. Defaults to 'text'
  • cache_ttl (number, optional): Cache time-to-live in seconds. Defaults to 3600
  • force_refresh (boolean, optional): Force fresh results ignoring cache. Defaults to false

tavily_get_search_context

Generate context for RAG applications using Tavily search.

Parameters:

  • query (string, required): Search query for context generation
  • max_tokens (number, optional): Maximum length of generated context. Defaults to 2000
  • search_depth (string, optional): "basic" or "advanced". Defaults to "advanced"
  • topic (string, optional): "general" or "news". Defaults to "general"
  • Other parameters same as tavily_search

tavily_qna_search

Get direct answers to questions using Tavily search.

Parameters:

  • query (string, required): Question to be answered
  • include_sources (boolean, optional): Include source citations. Defaults to true
  • search_depth (string, optional): "basic" or "advanced". Defaults to "advanced"
  • topic (string, optional): "general" or "news". Defaults to "general"
  • Other parameters same as tavily_search

Domain Filtering

The server supports flexible domain filtering through two optional parameters:

  • include_domains: Array of trusted domains to include in search results
  • exclude_domains: Array of domains to exclude from search results

This allows you to:

  • Target specific trusted sources for academic or technical searches
  • Exclude potentially unreliable or irrelevant sources
  • Customize sources based on your specific needs
  • Access all available sources when no filtering is specified

Example domain filtering:

{
	"include_domains": ["arxiv.org", "science.gov"],
	"exclude_domains": ["example.com"]
}

Development

Setup

  1. Clone the repository
  2. Install dependencies:
pnpm install
  1. Build the project:
pnpm build
  1. Run in development mode:
pnpm dev

Publishing

The project uses changesets for version management. To publish:

  1. Create a changeset:
pnpm changeset
  1. Version the package:
pnpm changeset version
  1. Publish to npm:
pnpm release

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see the LICENSE file for details.

Acknowledgments