Skip to main content
Glama
esty783

mcp-weather-israel-playwright

by esty783

MCP with Playwright - Weather (Israel)

This project is the MCP (Model Context Protocol) assignment from Malka Baruch's course: "MCP with Playwright".

Project purpose

The MCP server provides weather forecasts for Israeli cities using Playwright to drive a real browser and scrape data from https://www.weather2day.co.il/forecast. The goal is to enable an LLM (Claude) to control a browser through exposed Tools so it can retrieve live web data without a traditional API.

Related MCP server: MCP Playwright Weather Israel

What I implemented

Tools (MCP server - weather_Israel.py):

  1. open_weather_forecast_israel()

    • Opens a Chromium browser (headless=False) and navigates to the forecast site. Keeps the browser and Page instances in a global context to persist between Tool calls.

  2. enter_weather_search_israel(city: str)

    • Types the given city name into the site's search field and waits for the autocomplete list to appear.

  3. select_weather_forecast_city_israel()

    • Selects the first autocomplete result (or presses Enter) and waits for the forecast page to load.

  4. extract_weather_data_israel()

    • Extracts the visible forecast text from the loaded page and performs cleaning to remove advertisements and UI noise so the LLM receives only useful weather data.

How to run

  1. From the project-template folder:

cd C:\Users\user1\Downloads\dovrot-ai-projects-master\dovrot-ai-projects-master\8-mcp\project-template
uv sync
uv run playwright install chromium
  1. Start the host (terminal chat interface):

uv run host.py
  1. In the host chat prompt, ask a question such as:

  • "מה התחזית בתל אביב היום?"

  • "תן חיזוי גשם בתל אביב מחר"

The host should route the request to the weather-Israel MCP and the LLM will call the Tools in sequence (open → enter → select → extract) to fetch and return the forecast.

Submission instructions

  • Push the repository to GitHub as a public repo.

  • Include this README.md describing purpose and run instructions.

  • Make sure .env is not committed with real API keys. Use .env.example with placeholders.

Notes and troubleshooting

  • Ensure ANTHROPIC_API_KEY is set in your environment if running with the Anthropic SDK (Claude).

  • If Playwright selectors break (site changed), update the selectors in weather_Israel.py according to the site's HTML (inspect with DevTools).


This README follows the course submission guidelines: purpose, run steps, and example queries.

Available Tools

4 tools
enter_weather_search_israelA

Enter the city name into the search field and wait for autocomplete results.

This uses the shared Page in _PLAYWRIGHT_CONTEXT so open_weather_forecast_israel should be called first.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/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. It discloses that the tool uses the shared Page in `_PLAYWRIGHT_CONTEXT` and that it waits for autocomplete results, which are useful behavioral details. However, it does not mention potential side effects, error conditions, or what happens if the page is not open. The description provides some transparency but lacks depth for a UI automation tool.

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 two sentences with no fluff. The first sentence states the core action, and the second provides a crucial prerequisite. It is front-loaded and efficient, making it easy for an agent to parse quickly.

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

Completeness4/5

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

For a single-parameter tool with a clear prerequisite, the description is fairly complete. It covers what to do (enter city, wait), the shared context, and the required predecessor. It does not explain the next step (selecting from autocomplete) or error handling, but that is likely covered by sibling tools and the overall workflow. The description is sufficient for correct invocation.

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?

Schema description coverage is 0%, so the description must compensate. It does add meaning by explicitly mentioning 'Enter the city name', linking the sole parameter 'city' to the action. However, it provides no additional constraints, formats, or examples. The description adds minimal semantic value beyond the schema's type and title, but enough to understand the parameter's role.

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: 'Enter the city name into the search field and wait for autocomplete results.' It specifies the verb (enter), the resource (search field), and the outcome (wait for autocomplete). This distinguishes it from siblings like open_weather_forecast_israel (which likely opens the page) and select_weather_forecast_city_israel (which likely selects from results). The purpose is unambiguous.

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 explicitly mentions a prerequisite: 'open_weather_forecast_israel should be called first.' This gives the agent clear ordering context. It does not explicitly state when not to use this tool or name alternatives, but the prerequisite effectively routes the agent to the correct sequence. The usage guidance is sufficient for typical invocation.

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

extract_weather_data_israelA

Extract and clean the visible forecast text from the current page.

This expects that a forecast page is already loaded in the shared Page (i.e., after select_weather_forecast_city_israel). It will attempt to extract the main forecast container text and remove obvious noise like advertisements, links, and short UI strings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses that extraction targets the main forecast container and removes noise like ads, links, and UI strings. It does not explicitly state whether the operation is read-only or whether it could fail, but the described behavior is reasonably transparent.

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 two concise sentences. The first states the purpose directly; the second adds necessary precondition and behavioral detail. No fluff or redundant wording.

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

Completeness5/5

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

The description fully covers what the tool does, when it should be used, and what behavior to expect. Since the output schema exists, return format details are not required. The precondition and cleaning behavior make it complete for an agent to invoke correctly.

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 input schema is empty with zero parameters, so the baseline is 4. There are no parameters for the description to explain, and no additional parameter details are needed.

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 tool's action ('extract and clean') and target ('visible forecast text from the current page'). It distinguishes itself from sibling tools by specifying that it operates after a forecast page is already loaded, complementing open/search/select actions.

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 explicitly states the precondition: a forecast page must already be loaded, specifically after select_weather_forecast_city_israel. This gives clear when-to-use guidance, though it does not explicitly compare against alternatives beyond that contextual reference.

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

open_weather_forecast_israelA

Open the forecast site and keep the browser/page open for subsequent tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It mentions the action of opening and keeping open, but does not disclose potential side effects like navigation, cookies, or session state. It is adequate but not exhaustive.

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, clear sentence with no redundant information. It efficiently conveys the action and its purpose.

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

Completeness4/5

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

Given the sibling tools, the description provides enough context that this is an initial step in a multi-step weather forecast flow. It mentions subsequent tools, which helps the agent understand the sequence. It could be slightly more explicit about the forecast site, but the overall context is sufficient.

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 tool has no parameters, so there is nothing to explain. The schema is complete with zero properties, and the description does not need to add parameter-level detail.

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 that the tool opens the forecast site and specifies its role in keeping the browser/page open for subsequent steps. It distinguishes from sibling tools like search, select, and extract, though it does not name the specific site.

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 it is a preparatory step by saying 'keep the browser/page open for subsequent tools', but it does not explicitly state when to choose this tool over siblings or provide prerequisites. The usage context is only partially inferred.

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_israelA

Select the first autocomplete result (or press Enter) and wait for forecast page to load.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

The description mentions that the tool waits for the forecast page to load, which is a behavioral detail. However, since there are no annotations to provide safety or side-effect information, the description carries more responsibility, and it does not cover potential errors, timeouts, or other side effects.

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 that directly states the action and the waiting behavior. Every word is meaningful, and there is no redundancy or unnecessary detail.

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

Completeness4/5

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

Given that an output schema exists (though not fully shown), the description need not elaborate on return values. It adequately covers the tool's action and expected outcome (waiting for page load), but it could be slightly more explicit about its role in the overall workflow with the sibling tools.

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 has zero parameters, so the schema coverage is effectively 100% and the baseline for parameter semantics is 4. The description adds no parameter-specific information, but none is needed.

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 of selecting the first autocomplete result and waiting for the forecast page to load, making it distinct from siblings that open, search, or extract data. However, it does not explicitly name the sibling tools or contrast with them, so it earns a 4 rather than a 5.

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 a sequential step after entering a search query but does not explicitly state when to use this tool versus the alternatives (open, enter, extract). It gives no direct guidance on workflow order or conditions, so it falls short of clear usage instructions.

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_search_israel
    • First observedextract_weather_data_israel
    • First observedopen_weather_forecast_israel
    • First observedselect_weather_forecast_city_israel

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct step in a clear workflow: open site, search, select city, extract data. No overlapping responsibilities.

Naming Consistency5/5

All tools follow a consistent verb_weather_forecast_city_israel snake_case pattern, making the purpose of each clear.

Tool Count5/5

With 4 tools, the set is well-scoped for the specific task of fetching a weather forecast for an Israeli city. No unnecessary tools or omissions.

Completeness4/5

The tools cover the primary workflow, but lack error recovery or reset capabilities (e.g., no tool to handle failed city lookup or restart from scratch). Still sufficient for the intended use case.

Related MCP Connectors

Related MCP Servers