Skip to main content
Glama
yting27

Weather MCP MY

by yting27

Weather MCP Server

A basic Model Context Protocol (MCP) server that provides weather information retrieved from Open API of Malaysia's official open data portal. This server enables LLMs to get weather forecast, warnings, water level associated with flood, and earthquake reports.

API Documentation: data.gov.my

Components

Tools

  1. get_water_level_condition

    • Retrieve the water level conditions associated with flood warnings for a specified district or state. If both district and state are provided, the district takes precedence. If district or state is not specified, use an empty string for that field.

    • Args:

      • district: The name of the district within the specified state for which to retrieve flood warning conditions.

      • state: The name of the state in Malaysia for which to retrieve flood warning conditions.

  2. get_warning

    • Retrieve general weather warnings issued within a specified date range.

    • Args:

      • datetime_start: The earliest timestamp in the form of YYYY-MM-DD HH:MM:SS (inclusive) from which to retrieve weather warnings. If omitted, defaults to the current date.

      • datetime_end: The latest timestamp in the form of YYYY-MM-DD HH:MM:SS (inclusive) to stop retrieving the weather warnings. If omitted, defaults to the current date.

  3. get_weather_forecast

    • Retrieve a weather forecast for a specific location within a given date range.

    • Args:

      • location_name: The name or identifier of the location for which the forecast is retrieved.

      • date_start: The earliest date (inclusive) to begin retrieving the weather forecast. If omitted, defaults to the current date.

      • date_end: The latest date (inclusive) to stop retrieving the weather forecast. If omitted, defaults to the current date.

  4. get_earthquake_news

    • Fetch earthquake news for a given location within a specified date range.

    • Args:

      • location: Name or identifier of the place where the earthquake(s) occurred.

      • date_start: The earliest date (inclusive) to start searching for earthquake news. If omitted, defaults to the current date.

      • date_end: The latest date (inclusive) to stop searching for earthquake news. If omitted, defaults to the current date.

Related MCP server: Weather MCP Server

Claude Desktop configuration

Add the following into claude_desktop_config.json file. For more information, refer to For Claude Desktop Users.

Using uv

{
    "mcpServers": {
        "weather": {
            "command": "uv",
            "args": [
                "--directory",
                "weather-my-mcp",
                "run",
                "weather.py"
            ]
        }
    }
}

Using Docker

  1. Create docker image

    docker build . --tag weather-my-mcp
  2. Edit claude_desktop_config.json file as follows:

    {
        "mcpServers": {
            "weather": {
                "command": "docker",
                "args": [
                    "run",
                    "-i",
                    "--rm",
                    "weather-my-mcp"
                ]
            }
        }
    }

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Available Tools

4 tools
get_earthquake_newsB

Fetch earthquake news for a given location within a specified date range.

Args:
    location: Name or identifier of the place where the earthquake(s) occurred.
    date_start: The earliest timestamp in the form of <YYYY-MM-DD HH:mm:ss> (inclusive) to start searching for earthquake news. If omitted, defaults to the current date.
    date_end: The latest timestamp in the form of <YYYY-MM-DD HH:mm:ss> (inclusive) to stop searching for earthquake news. If omitted, defaults to the current date.
ParametersJSON Schema
NameRequiredDescriptionDefault
locationYes
datetime_startNo
datetime_endNo

TDQS

B3.1/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 fetching news but doesn't describe what 'news' entails (e.g., articles, alerts, data points), potential rate limits, authentication needs, or error handling. The description lacks details on return format, pagination, or data freshness, leaving significant gaps for an agent to understand the tool's behavior.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the purpose stated clearly in the first sentence. The parameter explanations are concise and directly relevant, avoiding unnecessary details. However, the formatting with 'Args:' and bullet-like indentation could be slightly more streamlined, but it remains efficient overall.

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?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose and parameter semantics adequately but lacks behavioral details like output structure, error cases, or usage guidelines relative to siblings. Without annotations or output schema, more context on what 'news' returns would improve completeness.

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

Parameters4/5

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

The description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'location' is a 'Name or identifier of the place where the earthquake(s) occurred,' clarifies timestamp formats for date parameters, and specifies default behaviors (e.g., defaults to current date if omitted). This compensates well for the schema's lack of descriptions, though it doesn't cover all nuances like valid location formats.

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 tool's purpose: 'Fetch earthquake news for a given location within a specified date range.' It specifies the verb ('fetch'), resource ('earthquake news'), and scope ('location within date range'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'get_warning' or 'get_weather_forecast', which might also involve location-based data retrieval.

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. It doesn't mention sibling tools or clarify scenarios where 'get_earthquake_news' is preferred over 'get_warning' or 'get_water_level_condition', nor does it specify prerequisites or exclusions. Usage is implied only through the purpose statement.

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

get_warningB

Retrieve general weather warnings issued within a specified date range.

Args:
    datetime_start: The earliest timestamp in the form of <YYYY-MM-DD HH:mm:ss> (inclusive) from which to retrieve weather warnings. If omitted, defaults to the current date.
    datetime_end: The latest timestamp in the form of <YYYY-MM-DD HH:mm:ss> (inclusive) to stop retrieving the weather warnings. If omitted, defaults to the current date.
ParametersJSON Schema
NameRequiredDescriptionDefault
datetime_startNo
datetime_endNo

TDQS

B3.4/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 describes the action ('retrieve') and date range filtering, but lacks critical behavioral details: it doesn't specify if this is a read-only operation, what permissions are needed, how results are returned (e.g., format, pagination), error handling, or rate limits. For a retrieval tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond basic functionality.

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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by a structured 'Args:' section with bullet-like explanations for each parameter. Every sentence adds value—no redundancy or fluff. The structure makes it easy to scan, with key information presented efficiently.

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?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is partially complete. It excels in parameter semantics and purpose clarity but lacks usage guidelines and behavioral transparency. Without annotations or output schema, it should ideally cover more behavioral aspects (e.g., response format, safety). It's adequate as a minimum viable description but has clear gaps in context.

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

Parameters5/5

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

The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains both parameters: datetime_start as 'The earliest timestamp... (inclusive) from which to retrieve weather warnings' with format details and default behavior, and datetime_end similarly. This fully compensates for the schema's lack of descriptions, providing clear semantics, formats, and defaults that are not in the schema properties.

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 tool's purpose: 'Retrieve general weather warnings issued within a specified date range.' This specifies the verb ('retrieve'), resource ('general weather warnings'), and scope ('within a specified date range'). It distinguishes from siblings like get_earthquake_news or get_weather_forecast by focusing on warnings rather than news, conditions, or forecasts. However, it doesn't explicitly differentiate from all siblings (e.g., water level conditions might overlap with weather warnings), so it's not a perfect 5.

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. It doesn't mention sibling tools like get_earthquake_news or get_water_level_condition, nor does it specify scenarios where weather warnings are preferred over forecasts or other data sources. The only implied usage is for retrieving weather warnings by date, but no explicit when/when-not instructions or alternatives are provided.

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

get_water_level_conditionA

Retrieve the water level conditions associated with flood warnings for a specified district or state. If both district and state are provided, the district takes precedence. If district or state is not specified, use an empty string for that field.

Args:
    district: The name of the district within the specified state for which to retrieve flood warning conditions.
    state: The name of the state in Malaysia for which to retrieve flood warning conditions.
ParametersJSON Schema
NameRequiredDescriptionDefault
districtNo
stateNo

TDQS

A3.7/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. While it describes the retrieval action and parameter precedence, it lacks critical behavioral details such as whether this is a read-only operation, what authentication might be required, rate limits, error conditions, or the format of returned data. For a tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The parameter explanations are necessary given the schema coverage gap. However, the formatting with 'Args:' could be slightly more integrated, and some sentences could be more concise (e.g., the second sentence about precedence is clear but slightly wordy).

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?

Given the complexity (2 parameters, no annotations, no output schema), the description is moderately complete. It covers purpose and parameter semantics well but lacks behavioral transparency and output details. Without annotations or output schema, the description should ideally provide more context about what the tool returns and any behavioral constraints to be fully complete.

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

Parameters5/5

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

The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explicitly defines both parameters: 'district: The name of the district within the specified state for which to retrieve flood warning conditions' and 'state: The name of the state in Malaysia for which to retrieve flood warning conditions.' This clarifies the geographic scope and relationship between parameters, fully compensating for the schema's lack of descriptions.

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 tool's purpose: 'Retrieve the water level conditions associated with flood warnings for a specified district or state.' It specifies the verb (retrieve), resource (water level conditions), and context (flood warnings). However, it doesn't explicitly differentiate from sibling tools like 'get_warning' or 'get_weather_forecast' beyond the specific resource focus.

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

Usage Guidelines4/5

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

The description provides clear context for usage: 'If both district and state are provided, the district takes precedence. If district or state is not specified, use an empty string for that field.' This gives explicit guidance on parameter precedence and handling of unspecified fields. However, it doesn't mention when to use this tool versus alternatives like 'get_warning' or provide exclusion criteria.

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

get_weather_forecastB

Retrieve a weather forecast for a specific location within a given date range.

Args:
    location_name: The name or identifier of the location for which the forecast is retrieved.
    date_start: The earliest date (inclusive) to begin retrieving the weather forecast. If omitted, defaults to the current date.
    date_end: The latest date (inclusive) to stop retrieving the weather forecast. If omitted, defaults to the current date.
ParametersJSON Schema
NameRequiredDescriptionDefault
location_nameYes
date_startNo
date_endNo

TDQS

B3.1/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 describes what the tool does (retrieve forecast) but lacks details on behavioral traits such as rate limits, authentication needs, error handling, or what happens if dates are invalid. This is a significant gap for a tool with no annotation coverage.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a structured 'Args' section. Every sentence adds value, with no wasted words, though the structure could be slightly more streamlined (e.g., integrating defaults into the main description).

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?

Given no annotations, no output schema, and 3 parameters, the description is moderately complete. It covers the purpose and parameters well but lacks details on return values, error cases, or behavioral context. For a retrieval tool with no structured support, it meets minimum viability but has clear gaps in completeness.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics beyond the schema by explaining each parameter: location_name as 'name or identifier', date_start and date_end with defaults and inclusivity. This clarifies usage effectively, though it could specify date format or location identifier examples for a higher score.

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 tool's purpose: 'Retrieve a weather forecast for a specific location within a given date range.' It specifies the verb (retrieve), resource (weather forecast), and scope (location and date range). However, it does not explicitly differentiate from sibling tools like get_earthquake_news or get_warning, which handle different types of data, so it falls short of a perfect score.

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. It does not mention sibling tools or other contexts where this tool might be preferred or avoided. Usage is implied by the purpose but lacks explicit instructions, leaving gaps for an AI agent to infer correctly.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updates
    • First observedget_earthquake_news
    • First observedget_warning
    • First observedget_water_level_condition
    • First observedget_weather_forecast

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: get_earthquake_news for earthquake-related news, get_warning for general weather warnings, get_water_level_condition for flood-specific water level data, and get_weather_forecast for general weather predictions. There is no overlap in functionality, and the descriptions clearly differentiate their domains (earthquakes, warnings, floods, forecasts).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with 'get_' as the prefix, followed by a descriptive noun phrase (e.g., get_earthquake_news, get_warning, get_water_level_condition, get_weather_forecast). This uniformity makes the tool set predictable and easy to understand.

Tool Count4/5

With 4 tools, the count is reasonable for a weather-focused server, covering key areas like earthquakes, warnings, floods, and forecasts. It is slightly lean but well-scoped, as each tool addresses a distinct aspect of weather and related hazards without redundancy.

Completeness3/5

The tool set covers specific weather-related data (earthquakes, warnings, floods, forecasts) but has notable gaps for a general 'Weather MCP' server. Missing operations include current weather conditions, historical data, or broader meteorological tools (e.g., humidity, wind speed), which limits comprehensive coverage of the weather domain.

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
    This is a Model Context Protocol (MCP) server that provides weather information using the National Weather Service (NWS) API. Features Get weather alerts for a US state Get weather forecast for a specific location (using latitude and longitude)
    -
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that provides real-time weather information including temperature, humidity, wind speed, and sunrise/sunset times through the OpenWeatherMap API.
    16
    1
    5
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides tools to fetch weather alerts for US states and forecasts based on latitude/longitude coordinates using the US National Weather Service API.
    2
    80
    1
    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/yting27/weather-my-mcp'

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