OAH Agent Gateway
Enables the web console chat agent to use NVIDIA's OpenAI-compatible API for model inference, with a configurable NVIDIA model, when NVIDIA_API_KEY is set.
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., "@OAH Agent GatewayWhat's the One Health snapshot for Almyros, with trust verdicts and sources?"
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.
💧 OAH Agent Gateway
Trusted, standards-based access to OneAquaHealth One Health data for AI agents.
IEEE OneAquaHealth Global Hackathon 2026 · Track 7: Digital Health Standards (FHIR models, AI agents, integration frameworks)
From streams to systems: any AI agent, in any city health department, research lab or citizen app, can query OneAquaHealth water, air and population-health data through one standard interface, and is told which numbers it may trust.
The problem
OneAquaHealth publishes water quality, air quality and population-health indicators as HL7 FHIR R4 following the OAH Implementation Guide, so environmental and human health can be studied together. Two gaps remain:
AI agents can't use it safely. Researchers and city staff increasingly ask AI assistants instead of writing FHIR queries. An agent pointed at a FHIR server sees resources, not meaning: it doesn't know which records are official, which values are physically impossible, or what an OAH code means.
FHIR-valid is not the same as true. In the official sandbox,
Observation/Obs-Almyros-TemperatureWater-2013reports an annual mean water temperature of 198,000 °C (median 19.8 °C). It passes FHIR validation. An agent would happily report it. In total, 120 of the 385 official observations fail basic integrity checks, and the shared sandbox also contains 65 observations written by third parties that are not part of the official dataset.
Related MCP server: smart-mcp-server
The solution
The OAH Agent Gateway is a Model Context Protocol server (plus a web console) that sits between AI agents and the OAH FHIR sandbox:
What agents get | How |
One standard interface for any MCP-capable agent (Claude, IDE agents, custom agents) | 8 MCP tools over stdio or HTTP |
A trust verdict on every value: | Deterministic checks: origin, statistical identities, physical limits, units, cross-record consistency |
Traceability: every number carries its | Agents are instructed to cite it |
Meaning: official IG definitions for every indicator code | Parsed from the OAH CodeSystem ( |
One Health in one call: water + air + population health for a city, with WHO/EU context and evidence limits |
|
Human-approved write-back: citizen reports become IG-conformant | Nothing is written without explicit human confirmation |
AI never decides a trust verdict. The checks are deterministic code; the language model only reads the results and writes the answer.
Architecture
flowchart LR
subgraph Agents
A1[Claude Desktop / any MCP client]
A2[Web console agent]
A3[City / research agents over HTTP]
end
A1 & A2 & A3 -->|MCP tools| GW
subgraph GW[OAH Agent Gateway]
T[Tools: overview · indicators · one-health snapshot · check record · explain · draft · approve]
N[Normaliser: FHIR -> agent records]
TR[Trust engine: origin, stats identities, physical limits, units, PM2.5 vs PM10]
IG[OAH IG knowledge: CodeSystem, profiles, official instance ids]
T --> N --> TR
IG --> N & TR
end
GW -->|GET, paged, same-host only| S[(HL7 Europe OAH FHIR sandbox, R4)]
GW -.->|fallback| SN[(Dated snapshot of the sandbox)]
GW -->|POST only after human approval and OAH_ALLOW_WRITE=1| SWhat it finds in the official data
From the sandbox snapshot of 2026-09-30 (reproduce with pytest):
450 observations, 385 official (IG example instances), 65 written by third parties.
120 DO_NOT_USE: all in the Crete (Almyros/Giofyros) water-chemistry summaries. Average, minimum and maximum are often exactly 10⁴ × the median (e.g. pH average 75,900, median 7.59), consistent with a lost decimal separator during conversion. The gateway labels this a hypothesis, never corrects it.
210 CAUTION: usable with a stated caveat. Mostly community-health indicators whose IG definition says 'per 100,000 inhabitants' while values are published in %, plus records written to the shared sandbox by third parties and PM2.5 > PM10 pairs.
PM2.5 above PM10 for the same Benevento site and year (impossible, since PM2.5 is part of PM10): flagged
CAUTIONon both records.Health indicators are defined in the IG as cases per 100,000 inhabitants but published in %: flagged
CAUTIONwith a reading note.Benevento air quality 2019: NO₂, PM10 and PM2.5 annual means are above the WHO 2021 guideline at nearly every monitoring site. A clear One Health signal an agent can now report with sources.
MCP tools
Tool | Purpose |
| Cities, domains, counts, source (live/snapshot), trust summary |
| Indicators available, with periods and trust counts |
| Every value with stats, unit, FHIR reference, WHO/EU context, trust verdict |
| Latest safe water/air/health values, values above reference, excluded records, evidence limits |
| Full integrity report for one Observation |
| Official OAH IG definition |
| Citizen report -> draft |
| Records the draft only after explicit human confirmation |
Quick start
Requires Python 3.10+.
pip install -r requirements.txt
pytest -q # 14 tests, offline
streamlit run app.py # web console (http://localhost:8501)
python -m oah_gateway.server # MCP server over stdio
python -m oah_gateway.server --http # MCP over HTTP at http://localhost:8765/mcpEnvironment variables:
Variable | Default | Meaning |
|
| FHIR server implementing the OAH IG to read from (and write to, if enabled) |
|
|
|
| – | From build.nvidia.com; enables the chat agent in the web console |
|
| Model for the console agent (NVIDIA API; reasoning disabled for fast demos) |
|
| NVIDIA OpenAI-compatible endpoint |
| – | Fallback provider for the chat agent, used when |
|
| Anthropic model for the console agent |
| off | Set to |
For reproducible hackathon demos, set OAH_SOURCE=snapshot; the public sandbox is shared, so live observation counts can grow. Live and auto modes remain available.
Local settings are loaded from .env through python-dotenv; copy .env.example and keep the real file untracked.
Connect Claude Desktop
Add to claude_desktop_config.json (see examples/claude_desktop_config.json):
{
"mcpServers": {
"oah-gateway": {
"command": "python",
"args": ["-m", "oah_gateway.server"],
"cwd": "/absolute/path/to/oah-agent-gateway"
}
}
}Then ask: "Give me a One Health summary for Benevento" or "Is the Almyros river water chemistry reliable?"
Trust rules
Family | Rule | Verdict |
Origin | Not an official OAH IG instance (written to the shared sandbox by a third party) | CAUTION |
Statistics | min > max; median or average outside [min, max]; negative SD; average/median ratio ≥ 100 | DO_NOT_USE |
Physical | Water temperature outside −2…45 °C; pH outside 0–14; % outside 0–100; negative concentration | DO_NOT_USE |
Units | Numeric measurement without a UCUM unit; IG definition unit ≠ published unit | CAUTION |
Cross-record | PM2.5 > PM10 at the same site and period | CAUTION |
Comparisons use a tolerance of half a unit of the least precise published decimal, so rounding alone never fails a check. WHO/EU reference values are shown for context only and are never presented as legal limits for surface water.
Standards used
HL7 FHIR R4 (4.0.1); OneAquaHealth FHIR IG (
hl7-eu/oah, commitb907cf08):LocationOah,ObservationIndicatorsOah,ObservationHealthMeasureOah,GroupOah,TemporaryOahSystemFHIR
Provenancewith participant typesauthor(citizen) andassembler(AI)The citizen write-back transaction Bundle is validated in the test suite with fhir.resources R4B models, which are structurally identical to R4 for Observation, Provenance and Bundle
observation-statisticsCodeSystem, UCUM unitsModel Context Protocol (MCP) for agent interoperability
Why this scales
Any FHIR server: point
OAH_FHIR_BASEat another city's or lab's server implementing the OAH IG.Any agent: MCP is supported by a growing number of AI clients, so one gateway serves all of them.
Standards both ways: reads and writes the same IG profiles, so citizen data flows into the same systems as lab and health data.
Integrates with existing tools: the OAH Citizen Science App, city dashboards or EHR-side systems can consume the same FHIR resources.
Limitations
Trust verdicts prove that published values can't all be right; they don't say which value is wrong or why.
Population-health indicators are aggregated by cohort: they support co-occurrence, never causation. The gateway says so in every One Health response.
The live sandbox is shared and writable, so live results can change; the snapshot makes results reproducible.
City assignment of locations follows the IG example identifiers (Crete, Benevento, Oslo).
Data, attribution and licence
Data: OneAquaHealth FHIR sandbox, operated by HL7 Europe. Definitions: OneAquaHealth FHIR IG (hl7-eu/oah). OneAquaHealth is funded by the European Union's Horizon Europe programme.
The bundled snapshot (
data/snapshot/, retrieved 2026-09-30) is the sha256-verified copy published by OAH Data Doctor; the hackathon organizers confirmed on the Devpost discussion board that sandbox data may be included in public repositories. Snapshot data is credited to the OneAquaHealth project and HL7 Europe and is not covered by this repository's licence.Code: MIT (see
LICENSE).
This server cannot be deployed
Maintenance
Related MCP Connectors
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Hosted MCP server for the Healthie EHR & telehealth API: patients, appointments, charting, tasks.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI applications to securely search and manage healthcare data from FHIR R4-compliant servers with built-in safety validation for AI-generated clinical observations, preventing recording of physiologically impossible values.9 npm31 PyPIMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to securely interact with FHIR R4 servers for clinical decision support workflows, including PlanDefinition execution, FHIR resource management, terminology services, and Questionnaire/StructureMap transformation via Matchbox.1-
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to securely access, query, and mutate normalized user-controlled health data (e.g., from Apple Health or Supabase) through a bounded set of MCP tools, with optional OAuth and sandboxed deployment.MIT

LangCare MCP FHIR Serverofficial
AlicenseNot gradedqualityDmaintenanceEnterprise-grade MCP Server for FHIR-based EMRs. Enables AI agents to read, search, create, and update any FHIR R4 resource across major EHR systems like EPIC, Cerner, and OpenEMR.370 npm67MIT