天气服务MCP服务器

一个基于Node.js的MCP服务器,提供实时天气信息和查询历史记录功能,适用于语言模型集成。

  • by IAcademico
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 IAcademico/Weather-MCP-Server

使用说明

🌤️ 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:

{
  "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