README Documentation
Weather Chat Assistant š¤ļø
A modern weather chat interface built with Streamlit and powered by the Model Context Protocol (MCP). Get real-time weather information and forecasts for any location worldwide through a friendly chat interface.
Features
- š Global Weather Data: Get weather for any city worldwide
- āļø Current Weather: Real-time temperature, conditions, humidity, and wind data
- š Weather Forecasts: Up to 3-day weather predictions
- š¬ Chat Interface: Natural language queries like "What's the weather in London?"
- šØ Modern UI: Beautiful, responsive Streamlit interface
- š§ MCP Integration: Built using Model Context Protocol architecture
Quick Start
Option 1: Direct Streamlit Deployment
-
Clone or download this repository
-
Install dependencies:
pip install -r requirements.txt -
Run the Streamlit app:
streamlit run streamlit_app.py -
Open your browser to the URL shown (usually http://localhost:8501)
Option 2: Deploy to Streamlit Cloud
-
Fork this repository to your GitHub account
-
Go to Streamlit Cloud
-
Deploy by connecting your GitHub repository
-
Set the main file as
streamlit_app.py
The app will automatically deploy and be available at your Streamlit Cloud URL!
MCP Server (Advanced Usage)
For developers interested in the MCP server component:
Setup MCP Server
-
Navigate to the MCP server directory:
cd weather-mcp-server -
Install MCP dependencies:
pip install -r requirements.txt -
Run the MCP server:
python weather_mcp_server.py -
Test the server (in another terminal):
python -c " import asyncio from mcp_client import WeatherMCPClient async def test(): client = WeatherMCPClient() if await client.connect(): result = await client.get_weather('London') print(result) await client.disconnect() asyncio.run(test()) "
Usage Examples
Once the app is running, try these example queries:
-
Current Weather:
- "What's the weather in London?"
- "Temperature in Tokyo"
- "Weather for New York"
-
Weather Forecasts:
- "Show me the forecast for Paris"
- "3-day forecast for Sydney"
- "Weather forecast for Berlin for 2 days"
API & Data Source
- Weather Data: Powered by wttr.in - a free weather service
- No API Key Required: Uses a public weather service
- Global Coverage: Weather data for cities worldwide
- Real-time Updates: Current conditions and forecasts
Architecture
graph TD
A[User Input] --> B[Streamlit App]
B --> C[Message Parser]
C --> D[Weather API Client]
D --> E[wttr.in API]
E --> F[Weather Data]
F --> G[Formatted Response]
G --> H[Chat Interface]
I[MCP Server] --> J[Weather Tools]
J --> K[get_weather]
J --> L[get_forecast]
Components
- Streamlit App (
streamlit_app.py): Main chat interface - MCP Server (
weather-mcp-server/weather_mcp_server.py): Weather tools server - MCP Client (
weather-mcp-server/mcp_client.py): Client for MCP communication - Weather API: Direct integration with wttr.in weather service
File Structure
weather-chat-assistant/
āāā streamlit_app.py # Main Streamlit application
āāā requirements.txt # Streamlit dependencies
āāā README.md # This file
āāā weather-mcp-server/ # MCP server components
āāā weather_mcp_server.py # MCP server with weather tools
āāā mcp_client.py # MCP client for communication
āāā requirements.txt # MCP server dependencies
Deployment Options
1. Streamlit Cloud (Recommended)
- ā Free hosting
- ā Automatic deployment from GitHub
- ā Custom domain support
- ā Easy updates via Git push
2. Local Development
- ā Full control
- ā Instant feedback
- ā Easy debugging
3. Other Platforms
- Heroku: Add
Procfilewithweb: streamlit run streamlit_app.py --server.port=$PORT - Railway: Direct deployment from GitHub
- Render: Automatic builds from repository
Troubleshooting
Common Issues
-
"Module not found" errors:
pip install -r requirements.txt -
Network timeouts:
- Check internet connection
- Try different location names
- Wait a moment and retry
-
Streamlit port conflicts:
streamlit run streamlit_app.py --server.port 8502
Debug Mode
To enable detailed logging, set the environment variable:
export PYTHONPATH=.
python -c "import logging; logging.basicConfig(level=logging.DEBUG)"
streamlit run streamlit_app.py
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
This project is open source and available under the MIT License.
Support
- š§ Issues: Open a GitHub issue for bugs or feature requests
- š¬ Discussions: Use GitHub Discussions for questions
- š Documentation: Check this README and code comments
Built with ā¤ļø using Streamlit and MCP
Get weather information the modern way - just ask! š¤ļø