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
Procfile
withweb: 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! 🌤️