Skip to main content
Glama
IAcademico

Weather MCP Server

by IAcademico
README.md
# 🌀️ Weather Server - MCP Implementation (Node.js)

### 🧩 Servidor MCP de Clima e Historial – VersiΓ³n Final

Este proyecto implementa un **servidor MCP (Model Context Protocol)** en **Node.js** que permite a modelos de lenguaje (como Claude o GPT) **obtener informaciΓ³n climΓ‘tica en tiempo real** y **consultar un historial local de bΓΊsquedas**, utilizando APIs abiertas y almacenamiento local en JSON.

---

## 🌐 1. ¿Qué es el MCP (Model Context Protocol)?

El **Model Context Protocol (MCP)** es un protocolo abierto desarrollado por **Anthropic** y la comunidad de IA para conectar **modelos de lenguaje** con **fuentes de informaciΓ³n externas y herramientas locales** de manera **segura y estructurada**.

En tΓ©rminos simples:

> El MCP permite que un modelo de IA hable con tu aplicaciΓ³n, acceda a datos o ejecute funciones, **sin exponer directamente tu cΓ³digo ni tus APIs privadas.**

---

## βš™οΈ 2. CΓ³mo funciona el MCP

Un **MCP Server** es una aplicaciΓ³n que expone:

- πŸ› οΈ **Tools (herramientas)** β†’ Acciones que el modelo puede ejecutar (por ejemplo: `get-weather`, `get-history`).
- πŸ“š **Resources (recursos)** β†’ Archivos o datos a los que el modelo puede acceder (por ejemplo: `weather-codes.json`).
- πŸ”” **Events (opcional)** β†’ Notificaciones o flujos de datos en tiempo real.

El **modelo de IA** actΓΊa como **cliente MCP**, que se comunica con tu servidor usando un canal seguro (en este caso, `stdio`, o entrada/salida estΓ‘ndar).

---

## 🧩 3. Descripción del proyecto (`main.ts`)

El archivo `main.ts` define un **servidor MCP** en Node.js que ofrece **dos herramientas y un recurso**:

---

### πŸ› οΈ Herramienta 1: `get-weather`

**PropΓ³sito:** Obtener el clima actual de una ciudad.

**Flujo:**
1. Busca la ciudad en la **Geocoding API** de Open Meteo para obtener coordenadas.
2. Consulta los datos del clima actual en la **Weather API** de Open Meteo.
3. Guarda la consulta (ciudad, coordenadas, temperatura, fecha) en un archivo local `history.json`.
4. Devuelve al modelo una respuesta simplificada con temperatura y humedad.

πŸ“„ **Ejemplo de respuesta:**
```json
{
  "city_searched": "Santiago",
  "current_temperature_c": 22.5,
  "relative_humidity_percent": 48,
  "weather_code": 1
}

🧠 **Arquitectura conceptual**

          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚      Modelo de IA (Cliente)  β”‚
          β”‚    (Claude, GPT, etc.)       β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚
            JSON (via STDIO / MCP)
                        β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚     Tu Servidor MCP (Node)   β”‚
          β”‚ β”œβ”€β”€ Tool: get-weather        β”‚
          β”‚ β”œβ”€β”€ Tool: get-history        β”‚
          β”‚ └── Resource: weather-codes  β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚     APIs externas (OpenMeteo)β”‚
          β”‚     Archivos locales (.json) β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


πŸ“¦ **InstalaciΓ³n y ejecuciΓ³n**

# Clonar el repositorio
git clone https://github.com/IAcademico/weather-mcp-server.git
cd weather-mcp-server

# Instalar dependencias
npm install

# Ejecutar el servidor MCP
npm run start

πŸ“ **Estructura del proyecto**

πŸ“¦ weather-mcp-server
 ┣ πŸ“‚ .vscode/
 ┣ πŸ“‚ node_modules/
 ┣ πŸ“‚ project_scanners/
 ┣ πŸ“œ main.ts
 ┣ πŸ“œ history.json
 ┣ πŸ“œ weather-codes.json
 β”— πŸ“œ README.md