README.mdβ’3.9 kB
# π€οΈ 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