Demo project from the YouTube video: "What is MCP? Model Context Protocol Explained (2026)"
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 |
- Python 3.10 or higher
- pip
# 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.pyThe server starts and listens on stdio — it's ready for an MCP host (like Claude Desktop or a custom client) to connect.
Add this to your claude_desktop_config.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
Replace the WEATHER_DATA dict with a live API call:
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"
}demo/
├── weather_server.py # MCP server — all logic here
├── requirements.txt # pip install mcp
└── README.md # This file
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.
- Add more tools:
get_forecast,get_air_quality - Switch transport from
stdiotoHTTP + SSEfor a remote server - Publish your server to the MCP community registry
| 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 |
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 |
| 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 |