AIE8-MCP Server
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/AIE8-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_tavily_api_key_here
WEATHER_API_KEY=your_weather_api_key_here
OPENAI_API_KEY=your_openai_api_key_here
```
**To get a WeatherAPI key:**
- Visit https://www.weatherapi.com/
- Sign up for a free account (provides 1 million calls/month)
- Get your API key from the dashboard
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)!
#### Running the LangGraph Application
To run the LangGraph application that uses your MCP server:
```bash
python3 langgraph_app.py
```
Or try the demo version to see all MCP tools in action:
```bash
python3 demo_langgraph.py
```
The application provides an interactive command-line interface where you can:
- Ask about weather: "What's the weather in Seattle?"
- Search the web: "Search for information about Python"
- Roll dice: "Roll 2d20k1" or "Roll a die"
The app intelligently routes your requests to the appropriate MCP tools and provides responses using the LLM when needed.
**What's Included:**
- `langgraph_app.py` - Full interactive LangGraph application with LLM integration
- `demo_langgraph.py` - Quick demo showing all MCP tools working together
TDQS
B3/5.0
Scored across 3 tools
Disambiguation5/5
Each tool has a completely distinct purpose (weather, dice rolling, web search) with no overlap, making it easy for an agent to select the correct one.
Naming Consistency5/5
All tool names follow the consistent verb_noun pattern (get_weather, roll_dice, web_search) without any mixing of conventions.
Tool Count5/5
With 3 tools, the count is appropriate for a focused utility server; each tool is distinct and earns its place.
Completeness2/5
The tool set lacks a coherent domain—it's a random collection of unrelated functions (weather, dice, search) with obvious gaps for a general-purpose assistant (e.g., no calendar, math, or storage tools).
Maintenance
ActivityInactive
ResponsivenessNo issues