mcp-weather-israel-playwright
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-weather-israel-playwrightwhat's the weather forecast for Tel Aviv tomorrow?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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):
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.
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.
select_weather_forecast_city_israel()Selects the first autocomplete result (or presses Enter) and waits for the forecast page to load.
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
From the
project-templatefolder:
cd C:\Users\user1\Downloads\dovrot-ai-projects-master\dovrot-ai-projects-master\8-mcp\project-template
uv sync
uv run playwright install chromiumStart the host (terminal chat interface):
uv run host.pyIn 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.mddescribing purpose and run instructions.Make sure
.envis not committed with real API keys. Use.env.examplewith placeholders.
Notes and troubleshooting
Ensure
ANTHROPIC_API_KEYis set in your environment if running with the Anthropic SDK (Claude).If Playwright selectors break (site changed), update the selectors in
weather_Israel.pyaccording to the site's HTML (inspect with DevTools).
This README follows the course submission guidelines: purpose, run steps, and example queries.
Available Tools
4 toolsenter_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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
enter_weather_search_israel - First observed
extract_weather_data_israel - First observed
open_weather_forecast_israel - First observed
select_weather_forecast_city_israel
TDQS
Scored across 4 tools
Each tool has a distinct step in a clear workflow: open site, search, select city, extract data. No overlapping responsibilities.
All tools follow a consistent verb_weather_forecast_city_israel snake_case pattern, making the purpose of each clear.
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.
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
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Get current weather for any city and create images from your prompts. Streamline planning, reports…
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables LLMs to query real-time weather data in Israel by automating a browser to scrape weather2day.co.il.4-
- FlicenseAqualityCmaintenanceEnables an LLM to retrieve Israeli weather forecasts by controlling a real Chromium browser to search and scrape a weather site.5-
- FlicenseNot gradedqualityCmaintenanceEnables LLMs to retrieve Israeli weather forecasts by controlling a browser via Playwright and scraping data from an Israeli weather website.-
- FlicenseAqualityCmaintenanceEnables LLMs to fetch Israeli weather forecasts by automating a browser to navigate Weather2Day, providing tools for city search and content extraction.4-