mcp-weather-israel-playwright
MCP with Playwright - 天気 (イスラエル)
このプロジェクトは、Malka Baruch のコース「MCP with Playwright」の MCP (Model Context Protocol) 課題です。
プロジェクトの目的
MCP サーバーは、Playwright を使用して実際のブラウザを操作し、https://www.weather2day.co.il/forecast からデータをスクレイピングすることで、イスラエルの都市の天気予報を提供します。目的は、LLM(Claude)が公開された Tools を通じてブラウザを制御し、従来の API なしでライブの Web データを取得できるようにすることです。
Related MCP server: MCP Playwright Weather Israel
実装した内容
Tools(MCP サーバー - weather_Israel.py):
open_weather_forecast_israel()Chromium ブラウザを(headless=False で)起動し、天気予報サイトに移動します。ブラウザと Page インスタンスをグローバルコンテキストに保持し、Tool 呼び出し間で永続化します。
enter_weather_search_israel(city: str)指定された都市名をサイトの検索フィールドに入力し、オートコンプリートリストが表示されるのを待ちます。
select_weather_forecast_city_israel()最初のオートコンプリート結果を選択(または Enter キーを押下)し、予報ページが読み込まれるのを待ちます。
extract_weather_data_israel()読み込まれたページから表示されている予報テキストを抽出し、広告や UI ノイズを除去してクリーンアップします。これにより、LLM は有用な天気データのみを受け取ります。
実行方法
project-templateフォルダから:
cd C:\Users\user1\Downloads\dovrot-ai-projects-master\dovrot-ai-projects-master\8-mcp\project-template
uv sync
uv run playwright install chromiumホスト(ターミナルチャットインターフェース)を起動:
uv run host.pyホストのチャットプロンプトで、次のような質問をします:
「מה התחזית בתל אביב היום?」
「תן חיזוי גשם בתל אביב מחר」
ホストはリクエストを weather-Israel MCP にルーティングし、LLM が Tools を順番に(開く→入力→選択→抽出)呼び出して予報を取得し、返します。
提出手順
リポジトリを公開の GitHub リポジトリとしてプッシュしてください。
この
README.mdに目的と実行手順を記載してください。.envには実際の API キーをコミットしないでください。.env.exampleをプレースホルダーとともに使用してください。
注意事項とトラブルシューティング
Anthropic SDK(Claude)で実行する場合は、環境変数
ANTHROPIC_API_KEYが設定されていることを確認してください。Playwright のセレクターが機能しなくなった場合(サイト変更)、
weather_Israel.py内のセレクターをサイトの HTML(DevTools で検査)に合わせて更新してください。
この README は、コースの提出ガイドライン(目的、実行手順、サンプルクエリ)に従っています。
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.
Maintenance
Related MCP Connectors
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
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…
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables LLMs to query real-time weather data in Israel by automating a browser to scrape weather2day.co.il.4-
- FlicenseAqualityDmaintenanceEnables 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.-
- FlicenseAqualityDmaintenanceEnables LLMs to fetch Israeli weather forecasts by automating a browser to navigate Weather2Day, providing tools for city search and content extraction.4-