Weather MCP

Un servidor MCP para acceder a datos meteorológicos en tiempo real y pronósticos.

Documentación

Servidor Weather MCP

Un servidor de Model Context Protocol (MCP) para datos meteorológicos usando Spring AI.

🚀 Inicio rápido

# 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

🔌 Integración con Cursor

Añade a tu ~/.cursor/mcp.json:

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

🛠️ Herramientas disponibles

  • getWeatherForecastByLocation(latitude, longitude) - Obtener pronóstico del tiempo
  • getAlerts(state) - Obtener alertas meteorológicas para estados de EE. UU.

🐳 Comandos de Docker

# 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

🧑💻 Desarrollo

Requisitos previos

  • Java 21 (p. ej. OpenJDK 21 o Temurin 21)
  • Maven 3.9+
  • Docker y Docker Compose

Compilar localmente

# Compile & run unit tests
./mvnw clean verify

# Build the runnable JAR (output in target/)
./mvnw clean package

Ejecutar localmente

# 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

El servidor se inicia en http://localhost:8080 por defecto.

Variables de entorno

NombrePor defectoDescripción
SERVER_PORT8080Puerto HTTP para enlazar
SPRING_AI_MCP_SERVER_STDIOfalseEjecutar el servidor MCP sobre stdio (útil para integraciones con editores)
SPRING_PROFILES_ACTIVE(ninguno)Lista separada por comas de perfiles de Spring

Las variables se pueden definir en src/main/resources/application.yml, sobrescribirse mediante banderas -D, o exportarse en tu shell.


📡 Referencia de API

Este proyecto expone dos variantes de API:

  1. Endpoints de herramientas MCP – consumidos por IDEs compatibles (p. ej. Cursor).
  2. Endpoints REST – endpoints HTTP ordinarios que puedes llamar con curl, Postman, etc.

Herramientas MCP

HerramientaFirmaDescripción
getWeatherForecastByLocation(latitude: number, longitude: number)Devuelve un pronóstico legible para humanos de varios días para las coordenadas proporcionadas.
getAlerts(state: string)Devuelve alertas activas para el estado de EE. UU. proporcionado (código de dos letras).

Endpoints REST

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

Nota: la capa REST simplemente actúa como proxy hacia los mismos métodos de servicio que respaldan las herramientas MCP.