Skip to main content

Contaminated Land MCP

An MCP server for contaminated-land site assessment on public Australian guidance (NEPM), built end to end in Python.

View on GitHub
  • Sole Author
  • Retrieval
  • Evaluation
  • 4

    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.

Contaminated Land MCP: host to tools to redaction, retrieval and validationMCP hostany MCP-compatible hostMCP server · 4 read-only toolsCited searchpage-level citationsLab-result screeningdeterministic codeCriteria listingGuarded draftingresults sectionPII redactionclient names & addressesbefore text leaves the machineHybrid retrievalvector + full-text, rank fusionNEPM guidancepage-level indexDraft validatorchecks every citation and number
Four read-only tools over one hybrid retrieval layer, with redaction and citation validation around them.

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