Weather MCP

An MCP server for accessing real-time weather data and forecasts.

Weather MCP Server

A Model Context Protocol (MCP) server for weather data using Spring AI.

🚀 Quick Start

Build the JAR file first

./mvnw clean package

Start the MCP server

docker-compose up

The server will be available at:

- HTTP: http://localhost:8080

- MCP Endpoint: http://localhost:8080/sse

- Health: http://localhost:8080/actuator/health

🔌 Cursor Integration

Add to your ~/.cursor/mcp.json:

{ "mcpServers": { "weather": { "command": "<ABSOLUTE_PATH_OF_REPO_ON_LOCAL_MACHINE>/weather/start-mcp-server.sh" } } }

🛠️ Available Tools

  • getWeatherForecastByLocation(latitude, longitude) - Get weather forecast
  • getAlerts(state) - Get weather alerts for US states

🐳 Docker Commands

Build the JAR (required before running docker-compose)

./mvnw clean package

Start in background

docker-compose up -d

View logs

docker-compose logs -f

Stop

docker-compose down

Rebuild and start

./mvnw clean package && docker-compose up --build

🧑‍💻 Development

Prerequisites

  • Java 21 (e.g. OpenJDK 21 or Temurin 21)
  • Maven 3.9+
  • Docker & Docker Compose

Build Locally

Compile & run unit tests

./mvnw clean verify

Build the runnable JAR (output in target/)

./mvnw clean package

Run Locally

Run with the JVM directly

java -jar target/weather-0.0.1-SNAPSHOT.jar

Or use Spring Boot devtools for hot-reload

./mvnw spring-boot:run

Or run with Docker Compose

./mvnw clean package && docker-compose up

The server starts on http://localhost:8080 by default.

Environment Variables

NameDefaultDescription
SERVER_PORT8080HTTP port to bind
SPRING_AI_MCP_SERVER_STDIOfalseRun the MCP server over stdio (useful for editor integrations)
SPRING_PROFILES_ACTIVE(none)Comma-separated list of Spring profiles

Variables can be defined in src/main/resources/application.yml, overridden via -D flags, or exported in your shell.


📡 API Reference

This project exposes two flavours of API:

  1. MCP Tool Endpoints – consumed by supporting IDEs (e.g. Cursor).
  2. REST Endpoints – ordinary HTTP endpoints that you can call with curl, Postman, etc.

MCP Tools

ToolSignatureDescription
getWeatherForecastByLocation(latitude: number, longitude: number)Returns a human-readable multi-day forecast for the supplied co-ordinates.
getAlerts(state: string)Returns active alerts for the supplied US state (two-letter code).

REST Endpoints

MethodPathExample
GET/forecast?lat={lat}&lon={lon}/forecast?lat=37.7749&lon=-122.4194
GET/alerts/{state}/alerts/CA

Note: the REST layer simply proxies to the same service methods backing the MCP tools.


Related Servers

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension