Skip to main content
Glama
veysby

MCP Quickstart Weather Server

by veysby
README.md
# MCP Learning Projects

Hands-on projects for understanding how to build applications using [Model Context Protocol (MCP)](https://modelcontextprotocol.io/).

## Projects

### `weather/` — MCP Server + Custom Client

A weather MCP server built from the [official MCP Quickstart](https://modelcontextprotocol.io/quickstart/server), extended with a custom Python MCP client that routes tool calls through the **OpenAI Chat Completions and Responses APIs**.

### `calculator/` — MCP Server with Resources and Interactive UI

A calculator MCP server that demonstrates **MCP resources** and **MCP Apps** — an extension that renders an interactive HTML calculator widget directly inside Claude Desktop.

### `chatkit/` — Chat Web App with MCP Backend

A full-stack chat application built on [OpenAI ChatKit](https://platform.openai.com/docs/chatkit). The frontend is a React + Vite app; the backend is a FastAPI server that routes messages to MCP tool servers based on the selected composer mode.

- **Echo mode** — echoes user input back verbatim
- **Weather mode** — runs a LangChain agent backed by the `weather/` MCP server; tool calls (`get_alerts`, `get_forecast`) are streamed live to the UI as a workflow with per-step status indicators

Requires Python 3.14+ for the backend.

## Requirements

- Python 3.13+ and [`uv`](https://github.com/astral-sh/uv)
- Node.js 18+ and npm (for `chatkit/`)
- Claude Desktop (for MCP Apps UI in the calculator project)
- OpenAI API key (for the weather client and chatkit weather agent)

See each subfolder's `README.md` for setup and run instructions.

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: get_alerts retrieves alerts for a US state, while get_forecast provides forecasts for a specific latitude/longitude location. There is no overlap in functionality or ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent verb_noun naming pattern (get_alerts, get_forecast) with the same verb 'get' and descriptive nouns. The naming is predictable and uniform throughout the set.

Tool Count2/5

With only 2 tools, the server feels thin for a weather domain. While it covers alerts and forecasts, it lacks other common weather operations like current conditions, historical data, or radar information, making the scope limited.

Completeness2/5

The tool surface is significantly incomplete for a weather server. It misses core functionalities such as getting current weather, historical data, or supporting broader geographic queries beyond US states or specific coordinates, which will limit agent effectiveness.

Maintenance

ActivityInactive
ResponsivenessNo issues