Skip to main content
Glama

Weather MCP

A FastMCP server that provides weather data from Open-Meteo and renders an interactive weather dashboard through MCP Apps.

Weather MCP dashboard

Features

  • Search locations by city or place name

  • Get current conditions and up to 16 forecast days

  • Switch between Celsius and Fahrenheit

  • Display weather descriptions and condition symbols

  • Cache location and forecast responses for five minutes

  • Render the dashboard directly inside compatible MCP hosts

Related MCP server: bridgemcp-server-weather

Requirements

  • Python 3.14+

  • uv

  • An MCP host with MCP Apps support for the interactive dashboard

Setup

Install the project dependencies:

uv sync

No weather API key is required for normal non-commercial Open-Meteo usage.

Run Tests

The test suite uses mocked HTTP responses and does not call the live weather API:

uv run pytest

Run The Server

Run the server over the default stdio transport:

uv run python main.py

Inspect the registered tools:

uv run fastmcp list main.py

Preview The Dashboard

FastMCP includes a local browser preview for app tools:

uv run fastmcp dev apps main.py

Open the displayed local URL and select weather_dashboard. The dashboard supports searching for another location and switching temperature units.

MCP Tools

search_locations

Find matching locations and return their coordinates, country, region, and time zone.

get_weather

Get current weather and a daily forecast for a location.

Arguments:

  • location: City or place name

  • forecast_days: Number of forecast days from 1 to 16

  • temperature_unit: celsius or fahrenheit

weather_dashboard

Open the interactive weather dashboard with the same weather arguments.

Project Structure

main.py                         MCP server entry point
src/tools.py                    MCP tool registration and response shaping
src/services/weather_service.py Open-Meteo client and response cache
src/formatting.py               UI-friendly forecast formatting
src/dashboard.py                Prefab MCP App UI

Data Source

Weather data is provided by Open-Meteo, which combines forecasts from multiple national weather services. Review the Open-Meteo terms and licensing before commercial deployment.

License

This project is licensed under the MIT License.

Available Tools

3 tools
get_weatherC

Get current conditions and a daily forecast.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYes
forecast_daysNo
temperature_unitNocelsius

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

无注释,描述未提及任何副作用、依赖或限制(如API密钥、数据来源)。描述仅概括功能,未披露行为细节。

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?

描述简短,无冗余信息,结构清晰。

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?

无输出schema,描述未说明返回数据格式(如JSON结构),也未提及可能的错误情况。整体信息量不足。

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

Parameters2/5

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

参数列表简单,但描述未解释每个参数的含义、格式或默认值的影响。例如,temperature_unit的可能值未说明。

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

Purpose3/5

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

描述明确说明了工具的功能(获取当前天气和预报),但未指定返回值格式或用途。与兄弟工具(如搜索位置、天气仪表盘)的区分度一般。

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?

未说明何时使用此工具与何时使用其他工具(如天气仪表盘),也未提供任何使用前提或限制。

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

search_locationsC

Find weather locations matching a place name.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, side effects, authentication requirements, or quota limits. The description is purely functional and lacks transparency about what the tool does beyond its immediate action.

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, concise sentence with no unnecessary words or redundant information. It efficiently conveys the core purpose and the key input condition, making it highly focused and easy to parse.

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 simplicity of the tool (one parameter, no complex behavior), the description is fairly complete. However, it does not mention the return format or the nature of matched locations (e.g., list vs. single), though an output schema exists which could compensate. The lack of any behavioral or edge-case details keeps it at an average level.

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

Parameters2/5

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

The schema provides only the parameter name and type (query: string) with no description. The description adds minimal meaning by indicating that the query is a 'place name', but it does not clarify constraints, formatting, or expected input patterns. Since schema coverage is 0%, this is insufficient.

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

Purpose5/5

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

The description clearly states the action ('Find') and the resource ('weather locations') with a specific criterion ('matching a place name'), which distinguishes it from sibling tools like get_weather that likely retrieve weather for a given location.

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 get_weather or weather_dashboard. It does not mention any conditions, prerequisites, or typical use cases, leaving the agent to infer usage solely from the purpose.

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

weather_dashboardC

Show an interactive weather dashboard with location and unit controls.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYes
forecast_daysNo
temperature_unitNocelsius

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. The description does not mention any side effects, data persistence, or interactive behavior details. It does not state whether the dashboard is read-only, whether it requires network access, or what happens with the controls. For a tool that likely involves UI rendering, more transparency about its behavior would be expected.

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 a single sentence, concise and front-loaded with the main purpose. It is appropriately sized for a simple tool, though it could benefit from a bit more detail without becoming verbose. The structure is clear and easy to parse.

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 tool's complexity (3 parameters, no output schema, no annotations), the description is incomplete. It does not explain the return value or the interactive nature of the dashboard, nor does it provide enough context for the agent to know what to expect. The sibling tools suggest a weather-related context, but the description alone is insufficient for a complete understanding.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the description must compensate for the lack of parameter documentation. The description mentions 'location and unit controls' which maps to 'location' and 'temperature_unit', but it does not explain 'forecast_days' or provide any additional meaning beyond the schema. The description adds minimal value over the schema, and with 0% coverage, it fails to adequately explain the parameters.

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: to show an interactive weather dashboard with location and unit controls. It uses a specific verb ('show') and resource ('interactive weather dashboard'), and it distinguishes itself from siblings like 'get_weather' by emphasizing the interactive dashboard aspect. However, it could be more explicit about how it differs from 'get_weather'.

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

Usage Guidelines3/5

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

The description implies usage by mentioning location and unit controls, but it does not explicitly state when to use this tool versus alternatives like 'get_weather' or 'search_locations'. There is no guidance on prerequisites or scenarios where this tool is preferred. The context is clear but lacks explicit exclusions or alternative recommendations.

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. 3 tool updatesv0.1.0
    • First observedget_weather
    • First observedsearch_locations
    • First observedweather_dashboard

TDQS

B3.1/5.0
Disambiguation5/5

Each tool has a distinct purpose: location search, weather data retrieval, and an interactive dashboard. No overlap or ambiguity in their functions.

Naming Consistency4/5

Two tools follow the verb_noun pattern (search_locations, get_weather), but weather_dashboard breaks the pattern by leading with a noun. This is a minor deviation that doesn't cause confusion.

Tool Count4/5

Three tools is lean but appropriately scoped for a weather server. It covers the essential workflows without unnecessary bloat.

Completeness4/5

The core workflow of searching locations and getting weather is covered. Missing advanced features like alerts or historical data, but these are not critical for a basic weather service.

Maintenance

ActivityMaintained
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
    Provides real-time weather updates and city geocoding by integrating the Nominatim and Open-Meteo APIs. It enables users to retrieve current weather conditions for any location through natural language queries in MCP-compatible clients.
    22
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides weather data including current conditions, forecasts, and summaries via Open-Meteo with no API key required, enabling natural language queries through an MCP interface.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for worldwide weather data, using high-resolution GeoSphere Austria data for the Alpine region and Open-Meteo elsewhere. Provides current conditions, hourly forecasts, and daily outlooks with compact emoji-markdown output.
    4
    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/abhirampai/weather-mcp-app'

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