mcp-weather-server

spraveenitpro/mcp-weather-server

3.1

If you are the rightful owner of mcp-weather-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This project demonstrates how to build a simple Model Context Protocol (MCP) server that provides weather information for any city using the Open-Meteo API.

Tools
1
Resources
0
Prompts
0

MCP Weather Server Tutorial

This project demonstrates how to build a simple Model Context Protocol (MCP) server that provides weather information for any city using the Open-Meteo API.

Features

  • MCP server using @modelcontextprotocol/sdk
  • One tool: get-weather (returns weather for a given city)
  • Uses geocoding and weather APIs from Open-Meteo
  • Returns weather data in JSON format

How It Works

  1. The MCP server exposes a tool called get-weather.
  2. When a city name is provided, the server:
    • Uses Open-Meteo's geocoding API to get latitude and longitude for the city.
    • Fetches current weather data for those coordinates.
    • Returns the weather data as a JSON response.
  3. If the city is not found, a helpful error message is returned.

Prerequisites

  • Node.js (v18+ recommended)
  • MCP Inspector (or any MCP client)

Setup

  1. Clone this repository or copy the files to your workspace.
  2. Install dependencies:
    npm install
    npm install node-fetch
    
  3. Update your main.ts to import fetch from node-fetch if running in Node.js:
    import fetch from "node-fetch";
    
  4. Start the MCP server using MCP Inspector:
    npx -y @modelcontextprotocol/inspector npx tsx main.ts
    

Usage

  • Open MCP Inspector and connect to your server.
  • Use the get-weather tool, enter a city name (e.g., "Paris", "Bangalore", "Chennai").
  • The server will respond with the current weather data for that city.

Example Tool Response

{
  "latitude": 13,
  "longitude": 80.125,
  "current": {
    "temperature_2m": 30,
    "relative_humidity_2m": 66,
    "wind_speed_10m": 14.9,
    "cloud_cover": 94,
    "apparent_temperature": 33.2
  }
}

Troubleshooting

  • If you see fetch is not defined, make sure you have installed and imported node-fetch.
  • If the city is not found, check for typos or try a nearby major city.

License

MIT