mcp_weather_scraper
If you are the rightful owner of mcp_weather_scraper and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
MCP Weather Scraper is an experimental project using Model Context Protocol (MCP) with OpenAI and FastAPI to fetch real-time weather data.
๐ฆ๏ธ MCP Weather Scraper
This project is an experimental implementation of the Model Context Protocol (MCP) using a lightweight LLM via ** OpenAI** and FastAPI to fetch and structure real-time weather information from open web sources. The goal is to explore how LLMs can interact with tools and serve as intelligent agents for retrieving and reasoning over unstructured web data.
๐ Features
- โ MCP-compliant server with weather scraping via browser search
- โ Integration with OpenAI LLM (e.g., gpt-3.5-turbo)
- โ FastAPI server provides weather info as callable MCP tool
- โ
Automatic HTML parsing using
selectolax
for performance - โ LLM handles unstructured web content extraction into structured schema
- โ Streamlit app frontend for user interaction
- โ
Response caching using
functools.lru_cache
๐ง Refresh Before You Dive In
Top 5 Concepts to Brush Up On for This Repo
๐งฉ Concept | ๐ What It Is | โ๏ธ Why It Matters |
---|---|---|
Model Context Protocol (MCP) | A new protocol for tool-calling in LLMs | Powers structured AI-agent communication |
Uvicorn | Fast ASGI server for Python web apps | Hosts the FastAPI-based MCP server |
Selectolax | High-speed HTML parser | Efficiently scrapes and extracts weather data |
functools.lru_cache | Built-in Python decorator to cache function calls | Boosts performance by avoiding repeated fetches |
Token Usage Metrics (OpenAI) | Info on how many tokens were used in an LLM call | Helps track cost and optimize prompt design |
๐ก Even if you're familiar with Python and APIs, these tools represent cutting-edge AI stack engineering and are worth a quick look!
๐ Token Usage & Performance Metrics
The Streamlit UI now includes:
-
โฑ๏ธ Response Time
Time taken to fetch and process weather info -
๐ง Prompt Tokens
Tokens used in the LLM prompt -
๐ฌ Completion Tokens
Tokens generated in the LLM response -
๐ข Total Tokens
Total token count per request, useful for cost tracking
These are displayed in a clean visual layout under each result card.
๐ฅ๏ธ Streamlit App Preview
Requirements
- Python 3.9 or higher
- Dependencies listed in
requirements.txt
๐ ๏ธ Setup
- Clone the repo
git clone https://github.com/your-username/mcp_weather_scraper.git cd mcp_weather_scraper
- Create and activate a virtual environment
python -m venv .venv .venv\Scripts\activate # On Windows
- Install dependencies
pip install -r requirements.txt
- Set environment variables
Create a .env file in the root directory and add your OpenAI API key
OPENAI_API_KEY=your_openai_api_key
- Running the Server
The server will be available at http://localhost:8000. You can access the API documentation at:
uvicorn server:app --reload
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Making a Request
OR
python client.py
The script sends a POST request with the following payload:curl -X POST http://localhost:8000/weather -H "Content-Type: application/json" -d '{"location": "Seattle"}'
The server will respond with weather data in JSON format, such as:{ "location": "Seattle" }
{ "location": "Seattle", "temperature": "15ยฐC", "humidity": "80%", "air_quality": "Good", "condition": "Cloudy" }
๐ฆ Folder Structure
.
๐ mcp_weather_scraper/
โ
โโโ assets/
โ โโโ streamlit_screenshot.png
โโโ server.py # MCP-compatible tool server
โโโ client.py # MCP client that interacts with model + tools
โโโ data_models.py # Pydantic schemas for request/response
โโโ utils.py # HTML cleaning, scraping, etc.
โโโ requirements.txt
โโโ .env
๐ License
This project is licensed under the MIT License.