Web Search MCP Server

by matemiro

288 downloads
Not rated
GitHub

About

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.

Details

Author
matemiro
Downloads
288
Categories
Search

- Real-time web search via Tavily API
- Customizable search topic (general, news, finance)
- Adjustable search depth (basic, advanced)
- Maximum results and time range filtering (day, week, month, year)
- Domain inclusion and exclusion lists

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Web Search MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install Python 3.13+ and uv, then clone the repository, set up a virtual environment, and install dependencies with uv pip sync. Create a .env file from the provided template and add your Tavily API key. Run the server with uv run web_search_server.py. The server uses the stdio transport method for MCP communication.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "web search mcp server": {
            "MCP-Tavily-Web-Search-Server": {
                "command": "uv",
                "args": [
                    "venv"
                ]
            }
        }
    }
}

McpServers

{
    "MCP-Tavily-Web-Search-Server": {
        "command": "uv",
        "args": [
            "venv"
        ]
    }
}

Web Search MCP Server

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.

Overview

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.

Features

- 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

Requirements

- Python 3.13+
- uv - Python package installer and resolver
- Tavily API key (sign up at tavily.com)

Installation

1. Clone the repository (if applicable)

2. Set up a virtual environment using uv (optional but recommended):

   uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate

3. Install dependencies using uv:

   uv pip sync

Configuration

1. Create a .env file by copying the provided template:

   cp env-sample .env

2. Add your Tavily API key to the .env file:

   TAVILY_API_KEY=your-api-key-here

Usage

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.

Tool Parameters

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.

Response Format

The tool returns a list of search results, each containing:
- title: The title of the search result
- url: The URL of the search result
- content: The content of the search result
- score: The relevance score of the search result

Error Handling

If an error occurs during the search operation, the tool will return an error message describing the issue.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.