Weather API MCP Server
Proporciona datos meteorológicos actuales y pronósticos utilizando la API de QWeather.
Documentación
Servidor MCP de Weather API
Una implementación de servidor de Model Context Protocol (MCP) para información meteorológica, que proporciona datos meteorológicos actuales y pronósticos utilizando la API de 和风天气 (QWeather).
Características
- Clima actual: Obtén datos meteorológicos actuales para cualquier ubicación
- Pronóstico del tiempo: Obtén pronósticos meteorológicos de 3 a 30 días
- Pronóstico por horas: Obtén pronósticos meteorológicos de 24 horas
- Búsqueda de ciudades: Busca información de ciudades e IDs para datos meteorológicos más precisos
- Opciones personalizables: Configura unidades, idioma y detalles adicionales
- Impulsado por QWeather: Se integra con la API de 和风天气 (QWeather) para datos meteorológicos precisos
Instalación
npm install mcp-weather-api
O úsalo directamente con npx:
npx mcp-weather-api
Referencia de la API
Herramientas meteorológicas
El servidor proporciona cuatro herramientas meteorológicas que se pueden invocar a través de MCP:
1. Obtener clima actual
// Tool name: getWeather
{
location: "New York, NY", // Can be city name, coordinates like "119.98,30.24", or QWeather location ID
options: {
units: "metric", // "metric" (Celsius) or "imperial" (Fahrenheit)
language: "en", // Language code (en, zh, etc.)
}
}
2. Obtener pronóstico del tiempo
// Tool name: getWeatherForecast
{
location: "London, UK", // Can be city name, coordinates like "119.98,30.24", or QWeather location ID
options: {
units: "imperial", // "metric" (Celsius) or "imperial" (Fahrenheit)
days: 3, // Supports 3, 7, 10, 15, or 30 days
language: "en" // Language code (en, zh, etc.)
}
}
3. Obtener pronóstico meteorológico por horas
// Tool name: getHourlyWeather
{
location: "Tokyo, Japan", // Can be city name, coordinates like "119.98,30.24", or QWeather location ID
options: {
units: "metric", // "metric" (Celsius) or "imperial" (Fahrenheit)
hours: 24, // Number of hours (default: 24, max: 24)
language: "ja" // Language code (en, zh, ja, etc.)
}
}
4. Búsqueda de ciudades
// Tool name: lookupCity
{
location: "Beijing", // City name or coordinates like "119.98,30.24"
options: {
language: "en" // Language code (en, zh, etc.)
}
}
Opciones meteorológicas
Opciones de la herramienta de clima actual:
interface WeatherOptions {
units?: "metric" | "imperial"; // Temperature units (default: metric)
language?: string; // Response language code
}
Opciones de la herramienta de pronóstico:
interface ForecastOptions {
units?: "metric" | "imperial"; // Temperature units (default: metric)
days?: number; // Number of days (default: 3)
language?: string; // Response language code
}
Opciones de la herramienta de pronóstico por horas:
interface HourlyForecastOptions {
units?: "metric" | "imperial"; // Temperature units (default: metric)
hours?: number; // Number of hours (default: 24, max: 24)
language?: string; // Response language code
}
Opciones de la herramienta de búsqueda de ciudades:
interface CityLookupOptions {
language?: string; // Response language code
}
Formato de respuesta
Todas las herramientas devuelven respuestas en el siguiente formato:
{
content: Array<{
type: "text";
text: string;
}>;
}
Respuestas de ejemplo
Respuesta de clima actual
Weather for New York:
Observation Time: 2023-11-15T12:30+08:00
Current Conditions: Partly Cloudy (Icon: 101)
Temperature: 18.5°C
Feels Like: 19.2°C
Wind Information:
- Direction: Northeast (45°)
- Scale: 3
- Speed: 15 km/h
Other Information:
- Humidity: 65%
- Precipitation: 0.0 mm
- Pressure: 1013 hPa
- Visibility: 25 km
- Cloud Cover: 30%
- Dew Point: 12.1°C
Updated: 2023-11-15T12:35+08:00
Data Sources: QWeather
License: QWeather Developers License
Respuesta de pronóstico del tiempo
Weather Forecast for London:
2023-11-15:
Time Information:
- Sunrise: 07:12, Sunset: 16:30
- Moonrise: 15:40, Moonset: 03:25
- Moon Phase: Waxing Gibbous (Icon: 802)
Day Weather:
- Conditions: Rain (Icon: 305)
- Temperature Range: 12.0°F / 7.0°F
- Wind: Northwest (315°)
- Wind Scale: 3, Speed: 18 km/h
Night Weather:
- Conditions: Cloudy (Icon: 101)
- Wind: North (0°)
- Wind Scale: 2, Speed: 10 km/h
Other Information:
- Humidity: 75%
- Precipitation: 5.2 mm
- Pressure: 1008 hPa
- Visibility: 10 km
- Cloud Cover: 85%
- UV Index: 2
...additional days...
Data Sources: QWeather
License: QWeather Developers License
Respuesta de búsqueda de ciudades
Location Information:
1. Beijing (ID: 101010100)
Location: 39.90499, 116.40529
Region: Beijing, Beijing, China
Timezone: Asia/Shanghai (UTC +8.0)
Type: city, Rank: 10
2. Beijing Shi (ID: 101010000)
Location: 39.90998, 116.40529
Region: Beijing, Beijing, China
Timezone: Asia/Shanghai (UTC +8.0)
Type: city, Rank: 10
Note: Use the ID (e.g., "101010100") in other weather tools to get weather information for this location.
Data Sources: QWeather
License: QWeather Developers License
Uso con MCP
Agrega el servidor MCP de Weather a tu configuración de MCP:
{
"mcpServers": {
"weather": {
"command": "npx",
"args": ["-y", "mcp-weather-api"]
}
}
}
API de QWeather
Este servidor utiliza la API de 和风天气 (QWeather) para obtener datos meteorológicos. La clave de API está incluida en el paquete con fines de demostración. Para uso en producción, debes obtener tu propia clave de API en QWeather.
Endpoints de API utilizados
-
Clima actual -
/weather/now- Devuelve las condiciones meteorológicas actuales
- La respuesta incluye un objeto
nowcon temperatura, humedad, etc. - Documentación de la API
-
Pronóstico del tiempo -
/weather/3d,/weather/7d,/weather/10d,/weather/15d,/weather/30d- Devuelve el pronóstico meteorológico para diferentes períodos
- La respuesta incluye un array
dailycon datos de pronóstico diario - Documentación de la API
-
Pronóstico meteorológico por horas -
/weather/24h- Devuelve el pronóstico meteorológico por horas para las próximas 24 horas
- La respuesta incluye un array
hourlycon datos de pronóstico por horas - Documentación de la API
-
Búsqueda de ciudades -
/city/lookup- Busca información de ciudades por nombre o coordenadas
- Devuelve IDs de ciudades y otra información de ubicación
- Documentación de la API
Estructura de respuesta de la API
Clima actual (/weather/now)
{
"code": "200",
"updateTime": "2021-11-15T16:35+08:00",
"now": {
"temp": "22.5",
"humidity": "65",
"text": "Partly cloudy",
"windSpeed": "10.2",
"windDir": "East",
"feelsLike": "24.0",
"pressure": "1012",
"vis": "10",
"cloud": "30",
"dew": "15.5"
}
}
Pronóstico del tiempo (/weather/3d)
{
"code": "200",
"updateTime": "2021-11-15T16:35+08:00",
"fxLink": "http://hfx.link/2ax1",
"daily": [
{
"fxDate": "2021-11-15",
"sunrise": "06:58",
"sunset": "16:59",
"moonrise": "15:16",
"moonset": "03:40",
"moonPhase": "盈凸月",
"moonPhaseIcon": "803",
"tempMax": "12",
"tempMin": "-1",
"iconDay": "101",
"textDay": "多云",
"iconNight": "150",
"textNight": "晴",
"wind360Day": "45",
"windDirDay": "东北风",
"windScaleDay": "1-2",
"windSpeedDay": "3",
"wind360Night": "0",
"windDirNight": "北风",
"windScaleNight": "1-2",
"windSpeedNight": "3",
"humidity": "65",
"precip": "0.0",
"pressure": "1020",
"vis": "25",
"cloud": "4",
"uvIndex": "3"
}
// Additional days...
]
}
Pronóstico meteorológico por horas (/weather/24h)
{
"code": "200",
"updateTime": "2021-11-15T16:35+08:00",
"fxLink": "http://hfx.link/2ax1",
"hourly": [
{
"fxTime": "2021-11-15T17:00+08:00",
"temp": "11",
"icon": "150",
"text": "晴",
"wind360": "335",
"windDir": "西北风",
"windScale": "3-4",
"windSpeed": "20",
"humidity": "73",
"pop": "7",
"precip": "0.0",
"pressure": "1013",
"cloud": "10",
"dew": "7"
}
// Additional hours...
]
}
Búsqueda de ciudades (/city/lookup)
{
"code": "200",
"location": [
{
"name": "Beijing",
"id": "101010100",
"lat": "39.90499",
"lon": "116.40529",
"adm2": "Beijing",
"adm1": "Beijing",
"country": "China",
"tz": "Asia/Shanghai",
"utcOffset": "+08:00",
"isDst": "0",
"type": "city",
"rank": "10",
"fxLink": "http://hfx.link/2ax1"
}
// Additional locations...
]
}
Configuración
Puedes configurar varias opciones a través de variables de entorno:
# API Configuration
export QWEATHER_API_KEY=your-api-key
export QWEATHER_API_URL=https://devapi.qweather.com/v7
export QWEATHER_GEO_API_URL=https://geoapi.qweather.com/v2
export WEATHER_DEFAULT_LOCATION=101010100 # Default location code or coordinates
# Default Options
export WEATHER_DEFAULT_UNITS=metric # or 'imperial'
export WEATHER_DEFAULT_LANGUAGE=en # language code
export WEATHER_INCLUDE_DETAILS=true # or 'false'
export WEATHER_FORECAST_DAYS=3 # number of days (max 30)
O en tu configuración de MCP:
{
"mcpServers": {
"weather": {
"command": "npx",
"args": ["-y", "mcp-weather-api"],
"env": {
"QWEATHER_API_KEY": "your-api-key",
"QWEATHER_API_URL": "https://devapi.qweather.com/v7",
"QWEATHER_GEO_API_URL": "https://geoapi.qweather.com/v2",
"WEATHER_DEFAULT_LOCATION": "101010100",
"WEATHER_DEFAULT_UNITS": "imperial",
"WEATHER_DEFAULT_LANGUAGE": "zh",
"WEATHER_INCLUDE_DETAILS": "true",
"WEATHER_FORECAST_DAYS": "7"
}
}
}
}
Formatos de ubicación
Puedes especificar ubicaciones en tres formatos:
- Nombre de ciudad: por ejemplo, "Nueva York", "Londres", "Pekín"
- Coordenadas: por ejemplo, "119.98,30.24" (longitud,latitud)
- ID de ubicación de QWeather: por ejemplo, "101010100" (Pekín)
Al usar coordenadas, el formato debe ser longitude,latitude (por ejemplo, "119.98,30.24"), que se pasará directamente a la API de QWeather.
Usa la herramienta lookupCity para encontrar el ID de ubicación adecuado para una orientación más precisa.
Códigos de ubicación de ciudades chinas
Para ciudades chinas, puedes usar el ID de ubicación de QWeather que proporciona una orientación de ubicación más precisa. La lista completa de códigos de ciudades chinas se puede encontrar en el repositorio QWeather LocationList.
Este archivo CSV contiene IDs de ubicación para ciudades chinas en el formato:
Desarrollo
Requisitos previos
- Node.js 16 o superior
- npm o yarn
Configuración
- Clona el repositorio
- Instala las dependencias:
npm install
Compilación
npm run build
Ejecución en desarrollo
npm run dev