Skip to main content
Glama
evarness-ai

iris-weather-mcp

by evarness-ai
README.md
# 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](https://github.com/evarness-ai/iris-harness/issues/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 (official `mcp` SDK, 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
  in `tests/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](https://github.com/evarness-ai/iris-weather-plugin) at
`../iris-weather-plugin`; it is skipped, loudly, when that is absent. There is no hosted CI for
this repository.

## License and contributing

Apache-2.0, the same license as iris-harness (see `LICENSE`). Contributions follow
[CONTRIBUTING.md](CONTRIBUTING.md).

TDQS

A3.5/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues