weather-server
Weather Server MCP Server is a TypeScript-based server for managing weather-related data using the Model Context Protocol. It provides tools for accessing and updating weather information, along with generating summaries through Large Language Models.
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.