A Model Context Protocol (MCP) server that provides a web search tool using the Tavily API. This server enables AI models to search the internet and retrieve up-to-date information.
This MCP server implements a single tool:
search_web_tool
: Searches the web using Tavily API and returns relevant search results.
The server acts as a bridge between AI models and the Tavily search engine, allowing models to access current information from the internet during conversations.
- Real-time web search capabilities
- Customizable search parameters:
- Search topic (general, news, finance)
- Search depth (basic, advanced)
- Maximum number of results
- Time range filtering (day, week, month, year)
- Domain inclusion/exclusion
- Python 3.13+
- uv - Python package installer and resolver
- Tavily API key (sign up at tavily.com)
-
Clone the repository (if applicable)
-
Set up a virtual environment using uv (optional but recommended):
uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies using uv:
uv pip sync
-
Create a
.env
file by copying the provided template:cp env-sample .env
-
Add your Tavily API key to the
.env
file:TAVILY_API_KEY=your-api-key-here
Run the server using uv:
uv run web_search_server.py
The server operates using the stdio transport method for MCP communication, making it suitable for integration with various AI systems that support the Model Context Protocol.
The search_web_tool
accepts the following parameters:
query
(str, required): The search query.search_topic
(str, optional): The topic of the search. Can be "general", "news", or "finance". Defaults to "general".search_depth
(str, optional): The depth of the search. Can be "basic" or "advanced". Defaults to "basic".max_results
(int, optional): The maximum number of results to return. Defaults to 1.time_range
(str, optional): The time range for the search. Can be "day", "week", "month", or "year". Defaults to None.include_domains
(list[str], optional): A list of domains to include in the search.exclude_domains
(list[str], optional): A list of domains to exclude from the search.
The tool returns a list of search results, each containing:
title
: The title of the search resulturl
: The URL of the search resultcontent
: The content of the search resultscore
: The relevance score of the search result
If an error occurs during the search operation, the tool will return an error message describing the issue.