Skip to main content
Glama
README.md
# mcp-weather

A minimal MCP (Model Context Protocol) server exposing weather tools, backed by the free [Open-Meteo](https://open-meteo.com/) API. Built as a practice project for MCP + Claude Code.

## Tools

- `get_current_weather({ city })` — current temperature, windspeed, and conditions for a city.
- `get_forecast({ city, days? })` — daily max/min temperature and conditions for `days` days (1-7, default 3).

No API key is required.

## Setup

```bash
npm install
npm run build
```

## Test

Runs the unit tests for the pure formatting/mapping logic in `src/weatherFormat.ts`:

```bash
npm test
```

## Debug with MCP Inspector

Launches an interactive web UI to call tools directly, without Claude Code:

```bash
npm run inspector
```

## Use with Claude Code

This project's `.mcp.json` registers the server as `weather`, running `node dist/index.js` over stdio. Open this project in Claude Code (or restart it here), confirm `weather` shows as connected (`/mcp`), and ask a weather-related question — Claude Code will invoke the tools as needed.

## Project layout

- `src/weatherFormat.ts` — pure formatting/mapping logic (weather codes, day clamping, text formatting), unit tested.
- `src/openMeteo.ts` — thin `fetch` wrappers around Open-Meteo's geocoding and forecast APIs.
- `src/index.ts` — MCP server entrypoint: registers `get_current_weather` and `get_forecast`, connects over stdio.