MCP Weather Server ā Demo
by shazforiot
README.md
# MCP Weather Server ā Demo
> Demo project from the YouTube video: **"What is MCP? Model Context Protocol Explained (2026)"**
<div align="center">
<h3>MCP Tutorial: Connect Claude to Any Tool (2026)</h3>
<a href="https://www.youtube.com/watch?v=40k3SIwlFVM">
<img src="https://img.youtube.com/vi/40k3SIwlFVM/maxresdefault.jpg" alt="Watch the MCP Tutorial" style="width:100%; max-width:600px;">
</a>
<p><i>Click the image to watch the MCP guide on YouTube</i></p>
</div>
This is a minimal **Model Context Protocol (MCP) server** written in Python. It exposes two tools that an AI assistant can call:
| Tool | Description |
|------|-------------|
| `get_weather` | Returns weather data for a given city |
| `list_cities` | Lists all cities with available data |
---
## Prerequisites
- Python 3.10 or higher
- pip
---
## Setup & Run
```bash
# 1. Clone or download this folder
cd demo/
# 2. (Optional) Create a virtual environment
python -m venv .venv
source .venv/bin/activate # macOS / Linux
.venv\Scripts\activate # Windows
# 3. Install the MCP SDK
pip install -r requirements.txt
# 4. Run the server
python weather_server.py
```
The server starts and listens on **stdio** ā it's ready for an MCP host (like Claude Desktop or a custom client) to connect.
---
## Connect to Claude Desktop
Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/full/path/to/demo/weather_server.py"]
}
}
}
```
Restart Claude Desktop. Then ask it:
> "What's the weather in Tokyo?"
Claude will automatically call the `get_weather` tool and return:
```
š Weather in Tokyo:
š”ļø Temperature: 18°C
āļø Condition: Clear
š§ Humidity: 55%
šØ Wind: 10 km/h NE
```
---
## Extend to a Real Weather API
Replace the `WEATHER_DATA` dict with a live API call:
```python
import httpx
async def fetch_live_weather(city: str) -> dict:
url = f"https://api.openweathermap.org/data/2.5/weather"
params = {"q": city, "appid": "YOUR_API_KEY", "units": "metric"}
async with httpx.AsyncClient() as client:
resp = await client.get(url, params=params)
data = resp.json()
return {
"temp": data["main"]["temp"],
"condition": data["weather"][0]["description"].title(),
"humidity": data["main"]["humidity"],
"wind": f"{data['wind']['speed']} m/s"
}
```
---
## Project Structure
```
demo/
āāā weather_server.py # MCP server ā all logic here
āāā requirements.txt # pip install mcp
āāā README.md # This file
```
---
## How MCP Works (Quick Recap)
```
Claude Desktop (Host)
āāā MCP Client (built into host)
āāā MCP Protocol (JSON-RPC 2.0 over stdio)
āāā weather_server.py (YOUR server)
āāā Returns weather data
```
The AI model never calls your server directly ā the MCP client handles discovery, schema validation, and communication. You just implement the logic.
---
## Next Steps
- Add more tools: `get_forecast`, `get_air_quality`
- Switch transport from `stdio` to `HTTP + SSE` for a remote server
- Publish your server to the MCP community registry
---
## Official MCP Resources
### š Documentation
| Resource | Link |
|----------|------|
| Official Docs | https://modelcontextprotocol.io/docs |
| Getting Started | https://modelcontextprotocol.io/introduction |
| All Examples | https://modelcontextprotocol.io/examples |
| GitHub Organization | https://github.com/modelcontextprotocol |
| All Official Servers | https://github.com/modelcontextprotocol/servers |
### š Official MCP Server Examples (from the video)
These are production-ready servers maintained by Anthropic ā install and use them today:
| Server | What it does | GitHub |
|--------|-------------|--------|
| š **GitHub** | Browse repos, read files, manage PRs and issues via AI | https://github.com/modelcontextprotocol/servers/tree/main/src/github |
| šļø **PostgreSQL** | Query your database with natural language | https://github.com/modelcontextprotocol/servers/tree/main/src/postgres |
| š **Filesystem** | Read and write local files directly from AI | https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem |
| š **Brave Search** | Real-time web search inside any AI chat | https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search |
| š¬ **Slack** | Read channels, summarize threads, post messages | https://github.com/modelcontextprotocol/servers/tree/main/src/slack |
| š§ **Memory** | Persistent AI memory via a knowledge graph | https://github.com/modelcontextprotocol/servers/tree/main/src/memory |
### š¦ SDKs
| Language | Install | GitHub |
|----------|---------|--------|
| Python | `pip install mcp` | https://github.com/modelcontextprotocol/python-sdk |
| TypeScript / Node.js | `npm install @modelcontextprotocol/sdk` | https://github.com/modelcontextprotocol/typescript-sdk |
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues