Weather Server logo

Weather Server

by chaminda360

A TypeScript-based MCP server that implements a weather information system. It demonstrates core MCP concepts by providing resources, tools, and prompts for weather data.

View on GitHub

Last updated: N/A

Weather Server MCP Server

Test weather server tool

This is a TypeScript-based MCP server that implements a weather information system. It demonstrates core MCP concepts by providing:

  • Resources representing weather data with URIs and metadata
  • Tools for fetching and updating weather information
  • Prompts for generating weather summaries

Features

Resources

  • List and access weather data via weather:// URIs
  • Each weather entry has a location, temperature, and metadata
  • JSON mime type for structured data access

Tools

  • fetch_weather - Fetch current weather information

    • Takes location as a required parameter
    • Retrieves weather data from an external API
  • update_weather - Update weather information

    • Takes location and new weather data as required parameters
    • Updates the weather data in server state

Prompts

  • summarize_weather - Generate a summary of the current weather data
    • Includes all weather entries as embedded resources
    • Returns structured prompt for LLM summarization

Development

Install dependencies:

npm install

Rename .envexample to .env:

mv .envexample .env

Update OPENWEATHER_API_KEY in the .env file:

OPENWEATHER_API_KEY=Your_Own_OpenWeather_API_KEY

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Installation

To use with Claude Desktop, add the server config:

On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "weatherserver": {
      "command": "/path/to/weatherserver/build/index.js"
    }
  }
}

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:

npm run inspector

The Inspector will provide a URL to access debugging tools in your browser.