iris-weather-mcp
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., "@iris-weather-mcpget the 5-day forecast for Austin, Texas"
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.
iris-weather-mcp
The weather plugin's forecast tool as a standalone MCP server process, run through the
harness's signed MCP bridge, with no import of iris_harness in the plugin process.
This is the experiment of
iris-harness#82: comparison data for
the trust-ladder / isolation question, not a production proposal. The server itself is
standalone; the comparison tests are built against iris_harness's stable tier where possible and
record in docs/GAPS.md (GAP-M1) the places where they had to import non-stable modules (the
MCP bridge and its signing package), because the stable tier offers no MCP surface.
src/iris_weather_mcp/: the server (officialmcpSDK, stdio). Dependencies:mcp,httpx.tests/: the comparison suite. It runs in a SECOND venv that holds the harness wheel and spawns the server with the first venv's interpreter. Fault fixtures are stdlib-only servers intests/servers/; the upstream is a loopback stub.docs/COMPARISON.md: in-process vs MCP, per graduation property, with evidence.docs/GAPS.md: what the bridge and SDK could not do, as precise findings.scripts/ci_local.sh: the local gate (two fresh venvs, lint, isolation proof, tests).
The in-process plugin (../iris-weather-plugin) is the control arm and is not modified.
Running the tests
iris-harness is not on a package index yet (iris-harness#108). scripts/ci_local.sh is the
gate: it builds two throwaway venvs (the server's, with no harness; the test host's, with an
iris-harness wheel built from the clone given by IRIS_HARNESS_CLONE, default
../iris-harness, or a prebuilt wheel in IRIS_WHEEL_DIR), lints, scans the server source,
and runs the suite. The control arm (tests/test_compare.py) imports a sibling checkout of
iris-weather-plugin at
../iris-weather-plugin; it is skipped, loudly, when that is absent. There is no hosted CI for
this repository.
Related MCP server: weather-mcp
License and contributing
Apache-2.0, the same license as iris-harness (see LICENSE). Contributions follow
CONTRIBUTING.md.
Available Tools
2 toolsweather_code_meaningA
Explain a WMO weather code in words. Args: {"code": int}.
| Name | Required | Description | Default |
|---|---|---|---|
| code | 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 burden. 'Explain' implies a read-only lookup with no side effects, but it does not address invalid code handling or other behavioral details. The output schema covers return values, reducing the need to describe them.
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 concise and front-loaded with the core purpose. The trailing 'Args: {"code": int}' partially duplicates the schema and could be omitted, but overall it is efficient.
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 simple one-parameter utility with an output schema, the description is largely complete. It could add valid WMO code ranges or handling for invalid codes, but the essential purpose and argument meaning are present.
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 identifies the parameter as a WMO weather code, which adds meaningful domain context beyond the schema's bare 'integer' type, but it does not provide valid ranges or examples.
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 states a specific verb ('Explain') and resource ('WMO weather code'), making the tool's purpose clear. It does not explicitly differentiate itself from the sibling weather_forecast, though the resource distinction is evident.
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?
Usage is implied: use this when a WMO weather code needs to be translated into words. There is no explicit guidance on when to use it versus weather_forecast, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weather_forecastB
Get the daily weather forecast for a place from Open-Meteo. Args: location (str), days (int 1-16, default 3).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| location | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the data source, daily granularity, and the days range/default, but omits permissions, rate limits, units, timezone handling, and read-only behavior. For a simple read-only tool with an output schema, this is adequate but incomplete.
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?
Two compact sentences with the purpose front-loaded and parameters listed second. There is no filler, and every sentence earns its place.
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 tool is simple and an output schema exists, so return values need not be explained. However, the critical location format is unspecified, and with no annotations and 0% schema coverage, the description leaves gaps that could lead to incorrect 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 adds the useful 1-16 range for days and confirms parameter types, but it does not explain the expected format for location or any units/format details for the forecast.
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?
States a specific verb ('Get') and resource ('daily weather forecast') plus the source Open-Meteo. It is clear what the tool does, but it does not distinguish itself from the sibling weather_code_meaning tool.
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?
Provides no explicit guidance on when to use this tool versus weather_code_meaning or any alternative. Usage is only implied by the verb 'Get' and the resource name.
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.
2 tool updates
v0.1.0- First observed
weather_code_meaning - First observed
weather_forecast
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one decodes a WMO weather code, while the other retrieves a daily forecast. There is no overlap or ambiguity in what each tool does.
Both names use consistent snake_case with a shared `weather_` prefix, which makes them predictable. The pattern is noun-based rather than verb_noun (e.g., `weather_code_meaning` is a bit noun-heavy), so it is slightly less action-oriented than ideal, but still consistent.
Two tools is on the thin side for a weather server; it covers forecast and code interpretation but lacks surface area for common weather queries. The count is borderline rather than clearly appropriate or excessive.
The surface covers daily forecasting and WMO code explanation, but missing current conditions, hourly data, historical weather, or alerts means common weather requests cannot be fulfilled. These are notable gaps for an agent expecting a general-purpose weather service.
Maintenance
Related MCP Connectors
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Open-Meteo MCP — weather forecast + historical reanalysis + sister APIs
MCP server for weather with reasoning — umbrella advice, outdoor checks, city comparisons.
Open-Meteo tabanlı anahtarsız hava durumu tahmin MCP sunucusu.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides weather forecasts and active alerts for US locations using the National Weather Service API. It supports both local stdio and remote HTTP/SSE transport modes for flexible integration with MCP clients.55 npmGPL 3.0
- AlicenseNot gradedqualityBmaintenanceExposes weather data from the free Open-Meteo API via decorator-driven MCP tools with Zod schemas, supporting stdio and HTTP transports.13 npmMIT
- AlicenseAqualityDmaintenanceMCP server for weather forecasts via Open-Meteo (no API key needed), providing current weather, hourly, and daily forecasts with geocoding support.3MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server providing worldwide weather via the free Open-Meteo APIs (no API key needed). Runs fully self-contained in Docker as a streamable-HTTP MCP service.-