Skip to main content
Glama
YL4279

israel-weather-mcp

by YL4279

Israel Weather MCP

Project Description

This project implements a dedicated MCP Server for retrieving weather forecasts for cities in Israel.

Unlike an implementation based on an external API, this project performs the retrieval using Playwright, which simulates the actions of a human user in a browser: opening the weather site, entering a city name, selecting the city from the dropdown list, and retrieving the forecast data from the results page.

The purpose of the project is to demonstrate how the capabilities of an LLM can be extended using MCP and browser automation tools, so that the model is able not only to answer questions but also to perform actual actions in order to gather information.


Related MCP server: mcp-playwright-weather-israel

Learning Objectives

The following capabilities were implemented as part of the project:

  • Implementing a standalone MCP Server

  • Exposing Tools for use by an LLM

  • Using Playwright for browser automation

  • Fetching information from a website and returning it in a clean textual format


Technologies

  • Python

  • MCP SDK

  • Playwright

  • Local Google Chrome


Project Structure

project-template/

├── client.py

├── host.py

├── weather_USA.py

├── weather_Israel.py

└── README.md


How to Run

Installing dependencies:

uv sync

Running the project:

uv run host.py


Setting Up Local Chrome

The project uses a local Chrome browser.

In the file weather_Israel.py, the path to the executable file must be set:

LOCAL_CHROME = r"C:\Program Files\Google\Chrome\Application\chrome.exe"

If Chrome is installed in a different path, update it accordingly.


The Tools Implemented

open_weather_forecast_israel

Opens the weather site.

enter_weather_forecast_city_israel

Enters the city name in the search field.

select_weather_forecast_city_israel

Selects the city from the autocomplete list.

get_weather_forecast_israel

Runs the full sequence of actions, extracts the data from the page, and returns a clean forecast for use by the LLM.


Example Queries

What is the weather in Jerusalem?

What is the forecast in Haifa?

What is the weather in Tel Aviv?


Example Output

City: Jerusalem

Temperature: 11.8°

Last update: 19:10

Humidity: 71%

Wind: 15.8 km/h


Summary

The project demonstrates how MCP and Playwright can be used to allow an LLM to interact with a real website, gather information in real time, and return a focused and relevant answer to the user.

Available Tools

4 tools
enter_weather_forecast_city_israelC

מזין עיר בתיבת החיפוש.

NameRequiredDescriptionDefault
cityYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.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, yet it only says a city gets entered into a search box. It does not explain whether this triggers a search, whether it requires a prior open_weather_forecast_israel call, or what state changes result.

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

Conciseness3/5

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

It is a single short sentence with no waste, but it is under-specified rather than economical. Its size is appropriate for what it says, though what it says is thin.

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?

An output schema exists, so return values needn't be described, but the description omits the surrounding workflow context (that this is one step among open/select/get) and the meaning of the input. For a UI-driving tool this leaves significant gaps.

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 single 'city' parameter has 0% schema description coverage, and the description adds no format, language, or validation guidance beyond the word 'city.' It does not compensate for the schema gap.

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?

The Hebrew description translates to 'enters a city in the search box,' which conveys a concrete action (typing a city) rather than any deeper purpose. It does not distinguish this tool from the sibling select_weather_forecast_city_israel, which likely also deals with choosing a city, so an agent cannot tell them apart from the text alone.

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?

There is no statement of when to use this versus open_weather_forecast_israel, select_weather_forecast_city_israel, or get_weather_forecast_israel. Usage must be inferred from the tool name and from the assumed UI workflow sequence.

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

get_weather_forecast_israelC

מבצע את כל הזרימה ומחזיר תחזית נקייה.

NameRequiredDescriptionDefault
cityNoירושלים

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.2/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 behavioral burden. It states only that the tool performs a flow and returns a forecast, without disclosing permissions, data sources, error behavior, side effects, or whether it is safe/read-only. The mention of returning a forecast is a minimal behavioral clue, but far from complete.

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

Conciseness3/5

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

The description is a single short sentence with no wasted words, but it is under-specified rather than informative. Brevity is not a virtue here because the key details needed to select and invoke the tool are absent.

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?

The presence of an output schema means return values need not be explained, but the description still omits essential context for a tool that apparently orchestrates a multi-step workflow. With no annotations and no parameter semantics, the agent lacks enough information to call it confidently versus its siblings.

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

Parameters1/5

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

The single parameter 'city' has 0% schema description coverage and defaults to Jerusalem, but the description does not mention the city parameter at all. It provides no added meaning, format guidance, or validation context for the only input.

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?

The Hebrew description says it 'executes the entire flow and returns a clean forecast,' which gives a vague indication that this tool orchestrates a multi-step weather forecast process. However, it does not specify the resource or scope precisely enough to clearly distinguish it from the sibling step tools open_weather_forecast_israel, enter_weather_forecast_city_israel, and select_weather_forecast_city_israel.

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?

There is no explicit guidance on when to use this tool versus the sibling workflow tools, nor any stated prerequisites or exclusions. The phrase 'entire flow' weakly implies it is a one-call alternative to the stepwise siblings, but the agent must infer that.

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

open_weather_forecast_israelC

פותח את אתר התחזית.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.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 disclosure burden, and 'opens the site' reveals almost nothing: whether this is a UI navigation, a data fetch, or a state-changing action, and whether it has side effects, is left unstated. With zero parameters there is no risk of contradiction, but the behavioral profile is essentially undocumented.

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

Conciseness3/5

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

A single short sentence with no padding, so it is certainly concise and front-loaded. However, the brevity reflects under-specification rather than efficiency — the one sentence could have been spent resolving the ambiguity about what 'open' actually does.

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?

An output schema exists, so return values need not be explained, and with no parameters the call mechanics are trivial. Still, for a tool embedded in a four-tool weather family, the description leaves the agent unable to tell what this call accomplishes relative to its siblings or what 'opening' entails.

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 tool takes zero parameters, so there are no parameter semantics for the description to explain; the baseline for a no-parameter tool applies. Nothing in the description misrepresents the (empty) input surface.

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?

The Hebrew description 'פותח את אתר התחזית' ('opens the forecast site') names an action and a resource, so the general purpose is inferable. But 'open' is ambiguous (navigate to a page? launch a browser? fetch data?) and nothing distinguishes it from the sibling get_weather_forecast_israel, which sounds like it retrieves the same forecast.

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?

No statement of when to use this instead of get_weather_forecast_israel, enter_weather_forecast_city_israel or select_weather_forecast_city_israel, and no prerequisites or sequencing hints. The agent must guess the ordering of these four tools from their names alone.

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

select_weather_forecast_city_israelC

בוחר את העיר מהרשימה הנפתחת.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.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, yet it only says a dropdown selection occurs. It does not disclose whether this mutates UI state, whether it must follow the city-entry tool, whether the selection can fail (e.g., city not in list), or what the call triggers. An output schema exists, so return values are partly covered, but the interaction behavior is not.

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

Conciseness3/5

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

The single sentence is front-loaded with no filler, so nothing is wasted. However, it is terse to the point of under-specification — the brevity costs useful information rather than reflecting economy.

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?

For a workflow step in a UI-automation-style tool set with three sibling tools and no annotations, the description should place this action in the sequence and explain its effect. Neither is present, so an agent lacks what it needs to invoke it at the right moment.

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 tool takes zero parameters, so the baseline is 4; there is no parameter semantics for the description to explain. The description does not need to compensate for any schema gap.

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?

The Hebrew description ('Selects the city from the dropdown list') states a verb and object, but it largely restates the tool name and says nothing about what the selection accomplishes — whether it loads a forecast, filters a view, or just sets state. It does not differentiate this tool from the closely related sibling enter_weather_forecast_city_israel, so an agent must guess which one to use.

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?

There is no guidance on when to call this versus the siblings (open_weather_forecast_israel, enter_weather_forecast_city_israel, get_weather_forecast_israel). No preconditions or ordering (e.g., 'call after entering the city name') are stated, leaving the agent to infer the flow entirely.

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.

  1. 4 tool updatesv0.1.0
    • First observedenter_weather_forecast_city_israel
    • First observedget_weather_forecast_israel
    • First observedopen_weather_forecast_israel
    • First observedselect_weather_forecast_city_israel

TDQS

C2.8/5.0

Scored across 4 tools

Disambiguation3/5

The composite get_weather_forecast_israel performs the entire flow, making the three granular browser-step tools (open, enter, select) redundant and raising 'when to use which' confusion. Descriptions clarify each step's action, but the boundaries between the composite and its sub-steps overlap significantly.

Naming Consistency5/5

All four tools follow a consistent snake_case verb_noun pattern with the same weather_forecast..._israel stem. The naming is fully predictable and easy to parse.

Tool Count3/5

Four tools is a reasonable raw count, but three are subsumed by the single composite tool, so effectively only one tool earns its place. The set is borderline redundant rather than well-scoped.

Completeness4/5

The core task—retrieving a clean weather forecast for an Israeli city—is covered by get_weather_forecast_israel. For this narrow domain there are no obvious missing lifecycle operations, though multi-city or forecast-detail coverage is not evident.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers