Skip to main content
Glama
onceagainarise

Weather MCP Server

README.md
# Weather MCP Server

A powerful weather information server built with FastMCP that provides weather alerts and tools through multiple interfaces.

## Features

- šŸŒ¤ļø **Weather Alerts**: Get real-time weather alerts for any US state
- šŸ”Š **Echo Resource**: Simple message echoing functionality
- šŸ–„ļø **Multiple Interfaces**: Choose between MCP server or web interface
- šŸŽØ **Beautiful UI**: Modern, responsive web interface

## Quick Start

### Option 1: Interactive Launcher (Recommended)

```bash
python run_server.py
```

This will present you with options to run either the MCP server or web interface.

### Option 2: Direct Web Interface

```bash
python server/web_interface.py
```

Then open your browser to: http://localhost:8000

### Option 3: MCP Server Only

```bash
python main.py
```

## Installation

1. **Install dependencies:**
   ```bash
   uv sync
   ```

2. **Run the server:**
   ```bash
   python run_server.py
   ```

## Usage

### Web Interface

1. Start the web interface
2. Open http://localhost:8000 in your browser
3. Use the forms to:
   - Get weather alerts for a US state (e.g., CA, NY, TX)
   - Echo messages through the resource system

### MCP Server

The MCP server provides these tools:

- **`get_alerts(state)`**: Get weather alerts for a US state
  - `state`: Two-letter US state code (e.g., "CA", "NY")
  
- **`echo_resource(message)`**: Echo a message as a resource
  - `message`: Any text message to echo

## API Endpoints

- `GET /`: Main web interface
- `POST /api/alerts`: Get weather alerts (form data: `state`)
- `POST /api/echo`: Echo a message (form data: `message`)

## Dependencies

- `mcp[cli]>=1.13.0`: MCP server framework
- `fastapi>=0.104.0`: Web framework
- `uvicorn[standard]>=0.24.0`: ASGI server
- `httpx>=0.25.0`: HTTP client
- `python-multipart>=0.0.6`: Form data handling

## Project Structure

```
secondproject/
ā”œā”€ā”€ main.py                 # MCP server entry point
ā”œā”€ā”€ run_server.py          # Interactive launcher
ā”œā”€ā”€ server/
│   ā”œā”€ā”€ weather.py         # MCP server implementation
│   └── web_interface.py   # Web interface
ā”œā”€ā”€ pyproject.toml         # Project configuration
└── README.md              # This file
```

## Troubleshooting

### Common Issues

1. **Port already in use**: Change the port in `web_interface.py` or stop other services
2. **Dependencies missing**: Run `uv sync` to install all dependencies
3. **API errors**: Check your internet connection for weather data

### Getting Help

- Check the console output for error messages
- Ensure all dependencies are installed
- Verify Python version (requires 3.12+)

## License

This project is open source and available under the MIT License.