Skip to main content
Glama
shtansky-bikeleasing

Weather MCP Server

Weather MCP Server

A Model Context Protocol (MCP) server that provides weather information and system notifications. This server allows Claude (any other MCP client) to fetch current weather data for any city and send native system notifications (for MacOS only) with the weather information.

Features

  • Get Weather: Fetch current weather conditions for any city worldwide

  • Send Notifications: Display weather information as native system notifications

  • Human-readable: Formats weather data in pleasant, conversational language

Related MCP server: Weather Agent MCP Server

Installation

Prerequisites

  • Node.js (version 16 or higher)

  • npm or yarn package manager

Setup

  1. Clone or download the project files

    git clone <your-repository-url>
    cd weather-mcp
  2. Install dependencies

    npm install
  3. Test the server

    npm start

Adding to Claude Desktop

To use this MCP server with Claude Desktop, you need to add it to Claude's configuration:

1. Locate Claude's Configuration File

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

2. Add the Weather MCP Server

Edit the configuration file and add your weather MCP server to the mcpServers section:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/path/to/your/weather-mcp/index.js"],
      "env": {
        "OPENWEATHER_API_KEY": "your_api_key_here"
      }
    }
  }
}

Important: Replace /path/to/your/weather-mcp/index.js with the actual absolute path to your project's index.js file.

3. Restart Claude Desktop

After updating the configuration file, restart Claude Desktop for the changes to take effect.

Usage

Once installed and configured, you can use the following commands with Claude:

Get Weather Information

"What's the weather in London?"
"Get the current weather for Tokyo"
"Tell me about the weather conditions in Paris"

Send Weather Notifications

"Get the weather for Berlin and send it as a notification"
"Send me weather notifications for New York, London, and Tokyo"
"Check the weather in Miami and notify me with pleasant text"

Available Functions

weather:get_weather

Fetches current weather conditions for a specified city.

Parameters:

  • city (string): Name of the city to get weather for

Returns:

  • Temperature (°C)

  • Weather condition

  • Humidity (%)

  • Wind speed (m/s)

  • Atmospheric pressure (hPa)

weather:send_notification

Displays a system notification with custom title and message.

Parameters:

  • title (string): Notification title

  • message (string): Notification message content

Troubleshooting

Common Issues

  1. "Command not found" error

    • Ensure Node.js is installed and in your PATH

    • Verify the path to index.js is correct in the configuration

  2. Weather data not loading

    • Check that your OpenWeatherMap API key is valid

    • Ensure the API key is properly set in the environment variables

  3. Claude not recognizing the MCP server

    • Restart Claude Desktop after configuration changes

    • Check the JSON syntax in claude_desktop_config.json

    • Verify file permissions on the MCP server files

Debug Mode

To run the server in debug mode with verbose logging:

DEBUG=* npm start

API Rate Limits

The free OpenWeatherMap API tier includes:

  • 1,000 calls per day

  • 60 calls per minute

For higher usage, consider upgrading to a paid plan.

License

This project is open source and available under the MIT License.

Support

For issues related to:


Happy weather checking! 🌤️

Available Tools

2 tools
get_weatherC

Get current weather for a city

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesName of the city to get weather for

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Get current weather' but doesn't specify aspects like rate limits, error handling, data sources, or whether it requires authentication. For a tool with no annotations, this is a significant gap in transparency about how it behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is front-loaded with the core purpose. There is no wasted language or unnecessary elaboration, making it easy to parse quickly. It earns its place by clearly stating the tool's function without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns, potential errors, or behavioral traits. For a tool with no structured data to rely on, the description should provide more context to help the agent use it effectively, but it falls short.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'city' parameter fully documented. The description adds no additional meaning beyond the schema, such as format examples or constraints. According to the rules, when schema coverage is high (>80%), the baseline score is 3, as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('current weather for a city'), making the purpose immediately understandable. However, it doesn't differentiate from the sibling tool 'send_notification', which is unrelated, so this doesn't impact the score negatively. The description avoids tautology by specifying what is being retrieved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as other weather-related tools that might exist in a broader context. It only states what the tool does, without mentioning prerequisites, limitations, or scenarios for use. This leaves the agent with minimal context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_notificationB

Send a macOS notification with provided weather data

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesNotification title
messageYesNotification message

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool sends notifications but doesn't mention important behavioral aspects like whether this requires specific macOS permissions, if notifications are persistent or transient, what happens if the system is in Do Not Disturb mode, or whether there are rate limits. The description provides basic functionality but lacks operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple notification tool and front-loads the essential information about what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool with no output schema and no annotations, the description provides basic functionality but lacks important context. It doesn't explain what happens after sending (success/failure indicators), doesn't connect to the sibling weather tool, and doesn't address macOS-specific considerations. While adequate for the simplest use case, there are clear gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already fully documents both parameters (title and message). The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain what constitutes appropriate weather data formatting, character limits, or how the parameters relate to the weather context mentioned. The baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send') and resource ('macOS notification with provided weather data'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate from the sibling 'get_weather' tool, which appears to be a data retrieval function rather than a notification delivery mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it mentions 'weather data' which might imply usage after obtaining weather information, there's no explicit connection to the sibling 'get_weather' tool or any other alternatives. No context about appropriate scenarios or exclusions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.1/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: get_weather retrieves weather data, while send_notification handles macOS notifications. There is no overlap in functionality, making it easy for an agent to choose the right tool for each task.

Naming Consistency5/5

Both tools follow a consistent verb_noun naming pattern (get_weather and send_notification). The verbs are descriptive and appropriate for their actions, and there are no deviations in style or convention.

Tool Count2/5

With only two tools, the server feels thin for a weather domain. It lacks essential operations like forecasting, historical data, or multi-location queries, which are typical for weather services. The scope is too limited for practical agent use.

Completeness2/5

The tool surface is severely incomplete for a weather server. It only provides current weather retrieval and notification sending, missing core features like forecasts, alerts, or location-based searches. This will likely cause agent failures when handling common weather-related requests.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to fetch current weather conditions and forecasts for any city using the Open-Meteo API. Provides temperature, precipitation, and hourly forecast data through natural language queries.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides current weather information for any city worldwide using the free Open-Meteo API, enabling users to query temperature, wind speed, humidity, and weather conditions through natural language.
    21
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shtansky-bikeleasing/weather-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server