# Weather MCP Server
A Model Context Protocol (MCP) server that provides real-time weather information for any location worldwide using the [wttr.in](https://wttr.in) service.
## Overview
This MCP server exposes a `fetch_weather` tool that allows AI assistants like Claude to retrieve current weather information for any city or location. It's built using FastMCP and provides a simple, reliable interface for weather data.
## Features
- š¤ļø Real-time weather information for any location
- š Worldwide coverage
- ā” Fast and lightweight
- š Easy integration with MCP-compatible clients (Claude Desktop, etc.)
- š¦ Simple setup with minimal dependencies
## Prerequisites
- Python 3.12 or higher
- `uv` package manager (recommended) or `pip`
## Installation
1. Clone this repository:
```bash
git clone <your-repo-url>
cd weather-mcp
```
2. Install dependencies using `uv`:
```bash
uv pip install -e .
```
Or using pip:
```bash
pip install -e .
```
## Configuration
### Claude Desktop
To use this server with Claude Desktop, add the following configuration to your Claude Desktop config file:
**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"weather-bot": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/weather-mcp",
"run",
"main.py"
]
}
}
}
```
Replace `/absolute/path/to/weather-mcp` with the actual path to this project directory.
## Usage
Once configured, the weather tool will be available to your AI assistant. You can ask questions like:
- "What's the weather in London?"
- "Tell me the current weather in New York"
- "How's the weather in Tokyo?"
### Running Standalone
You can also run the server directly for testing:
```bash
python main.py
```
Or test the weather function directly:
```bash
python tools/weather.py
```
## Available Tools
### `fetch_weather`
Retrieves current weather information for a specified location.
**Parameters:**
- `location` (string): The city or location name (e.g., "London", "New York", "Tokyo")
**Returns:**
- A string containing the weather information including temperature and conditions
**Example Response:**
```
London: ā
ļø +12°C
```
## Project Structure
```
weather-mcp/
āāā main.py # MCP server entry point
āāā tools/
ā āāā __init__.py
ā āāā weather.py # Weather fetching logic
āāā pyproject.toml # Project configuration
āāā README.md # This file
āāā uv.lock # Dependency lock file
```
## Technical Details
- **MCP Framework**: FastMCP
- **Weather API**: [wttr.in](https://wttr.in) - a console-oriented weather service
- **Transport**: stdio (standard input/output)
- **Python Version**: 3.12+
## How It Works
1. The server exposes a `fetch_weather` tool via the Model Context Protocol
2. When called, it makes an HTTP request to wttr.in's API
3. The weather data is formatted and returned to the MCP client
4. The AI assistant can then present this information naturally to the user
## Troubleshooting
### Server not appearing in Claude Desktop
1. Verify the path in your config file is absolute and correct
2. Restart Claude Desktop completely
3. Check the Claude Desktop logs for any error messages
### Weather data not loading
- Ensure you have an active internet connection
- The wttr.in service must be accessible from your network
- Some corporate networks may block access to external weather services
## Acknowledgments
- Built with [FastMCP](https://github.com/jlowin/fastmcp)
- Weather data provided by [wttr.in](https://wttr.in)
---
Made with ā¤ļø for the MCP community