Skip to main content
Glama
debanshd

Tavily Web Search MCP Server

by debanshd
README.md
<p align = "center" draggable=”false” ><img src="https://github.com/AI-Maker-Space/LLM-Dev-101/assets/37101144/d1343317-fa2f-41e1-8af1-1dbb18399719" 
     width="200px"
     height="auto"/>
</p>

## <h1 align="center" id="heading">AI Makerspace: MCP Session Repo for Session 13</h1>

This project is a demonstration of the MCP (Model Context Protocol) server, which utilizes the Tavily API for web search capabilities. The server is designed to run in a standard input/output (stdio) transport mode.

## Project Overview

The MCP server is set up to handle web search queries using the Tavily API. It is built with the following key components:

- **TavilyClient**: A client for interacting with the Tavily API to perform web searches.

## Prerequisites

- Python 3.13 or higher
- A valid Tavily API key

## ⚠️NOTE FOR WINDOWS:⚠️

You'll need to install this on the *Windows* side of your OS. 

This will require getting two CLI tool for Powershell, which you can do as follows:

- `winget install astral-sh.uv`
- `winget install --id Git.Git -e --source winget`

After you have those CLI tools, please open Cursor *into Windows*.

Then, you can clone the repository using the following command in your Cursor terminal:

```bash
git clone https://AI-Maker-Space/AIE7-MCP-Session.git
```

After that, you can follow from Step 2. below!

## Installation

1. **Clone the repository**:
   ```bash
   git clone <repository-url>
   cd <repository-directory>
   ```

2. **Configure environment variables**:
Copy the `.env.sample` to `.env` and add your Tavily API key:
   ```
   TAVILY_API_KEY=your_api_key_here
   ```

3. 🏗️ **Add a new tool to your MCP Server** 🏗️

Create a new tool in the `server.py` file, that's it!

## Running the MCP Server

To start the MCP server, you will need to add the following to your MCP Profile in Cursor:

> NOTE: To get to your MCP config. you can use the Command Pallete (CMD/CTRL+SHIFT+P) and select "View: Open MCP Settings" and replace the contents with the JSON blob below.

```
{
    "mcpServers":  {
        "mcp-server": {
            "command" : "uv",
            "args" : ["--directory", "/PATH/TO/REPOSITORY", "run", "server.py"]
        }
    }
}
```

The server will start and listen for commands via standard input/output.

## Usage

The server provides a `web_search` tool that can be used to search the web for information about a given query. This is achieved by calling the `web_search` function with the desired query string.

## Activities: 

There are a few activities for this assignment!

### 🏗️ Activity #1: 

Choose an API that you enjoy using - and build an MCP server for it!

### 🏗️ Activity #2: 

Build a simple LangGraph application that interacts with your MCP Server.

You can find details [here](https://github.com/langchain-ai/langchain-mcp-adapters)!

TDQS

C2.9/5.0

Scored across 5 tools

Disambiguation1/5

The tools have wildly different and unrelated purposes—clipboard operations, dice rolling, email sending, and web searching—with no clear thematic connection, making the set highly ambiguous as a cohesive toolset. An agent would struggle to understand why these specific tools are grouped together, leading to potential misselection based on domain assumptions.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern (e.g., read_clipboard, roll_dice, send_gmail, web_search, write_clipboard), which is predictable and readable. There are minor deviations like 'web_search' using a noun_verb structure instead, but overall the consistency is strong.

Tool Count2/5

With only 5 tools, the count is reasonable in isolation, but it is inappropriate for the server's stated purpose as 'Tavily Web Search MCP Server'—only one tool (web_search) directly relates to web searching, while the others are unrelated utilities, creating a mismatch in scope.

Completeness2/5

For a web search server, there are significant gaps in coverage, such as missing tools for advanced search features, result filtering, or API configuration. The inclusion of unrelated tools like clipboard and email operations further dilutes the domain focus, making the surface incomplete for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues