Contaminated Land MCP
An MCP server for contaminated-land site assessment on public Australian guidance (NEPM), built end to end in Python.
View on GitHub4
read-only MCP tools for any MCP host
0.85
recall@5 on a 20-question golden set
13/13
lab-result screening cases exact against hand-computed answers
0
PII leaks before text leaves the machine
Assessing contaminated land from public guidance
Contaminated-land assessment means working through long technical guidance, screening laboratory results against published criteria, and writing a results section in which every figure traces back to a source. This MCP server puts those steps behind four read-only tools that any MCP host can call.
The guidance it draws on is public Australian guidance under the National Environment Protection (Assessment of Site Contamination) Measure (NEPM). I built it end to end, in Python.
Four tools over one retrieval core
Cited search runs hybrid retrieval over the guidance, combining vector and full-text results with rank fusion (RRF), and returns page-level citations. Lab-result screening is deterministic code against the published criteria. A criteria listing shows what the screen checks, and guarded drafting produces a report’s results section from those sources.
Measured against a golden set and hand-computed cases
Retrieval is measured with inspect_ai on a 20-question golden set, with a hand-graded review. Recall@5 is 0.85.
Screening is checked against hand-computed cases, and 13 of 13 match exactly. Drafting is checked across nine drafts, where citation validity and number fidelity both score 1.0.
Guard rails before text leaves the machine
Client names and addresses are redacted on the machine before any text leaves it. The project records 0 PII leaks.
Every citation and number in a draft is validated against its sources.
Tech stack
- Python
- FastMCP
- Hybrid retrieval (vector + full-text, RRF)
- inspect_ai
- PII redaction