Skip to Content
MCP ServersCommunitymcp-tavily-search

mcp-tavily-search

View original on GitHub 

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:

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

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

Last updated on