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.
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 querysearch_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 3time_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 5include_answer
(boolean, optional): Include AI-generated summary. Defaults to trueinclude_images
(boolean, optional): Include related images. Defaults to falseinclude_image_descriptions
(boolean, optional): Include image descriptions. Defaults to falseinclude_raw_content
(boolean, optional): Include raw HTML content. Defaults to falseinclude_domains
(string[], optional): List of trusted domains to includeexclude_domains
(string[], optional): List of domains to excluderesponse_format
(string, optional): βtextβ, βjsonβ, or βmarkdownβ. Defaults to βtextβcache_ttl
(number, optional): Cache time-to-live in seconds. Defaults to 3600force_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 generationmax_tokens
(number, optional): Maximum length of generated context. Defaults to 2000search_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 answeredinclude_sources
(boolean, optional): Include source citations. Defaults to truesearch_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 resultsexclude_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
- Clone the repository
- Install dependencies:
pnpm install
- Build the project:
pnpm build
- Run in development mode:
pnpm dev
Publishing
The project uses changesets for version management. To publish:
- Create a changeset:
pnpm changeset
- Version the package:
pnpm changeset version
- 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
- Built on the Model Context Protocolβ
- Powered by Tavily Search APIβ