Skip to main content
Glama
Bigred97

aemo-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_datasetsA

Fuzzy-search the 7 curated AEMO NEM datasets.

Use this when you don't know the exact dataset_id. The 7 curated datasets cover ~95% of typical NEM analytic queries — spot prices, demand, generation, rooftop PV, interconnector flows, forecasts.

Examples: # Find the dataset that publishes the spot price results = await search_datasets("spot price") # → [{id: 'dispatch_price', name: 'NEM Dispatch Price ...', ...}]

# Discover what's available on rooftop solar
results = await search_datasets("rooftop pv", limit=5)

Returns: List of DatasetSummary (id, name, description, cadence), ranked by relevance. All v0 datasets are curated.

describe_datasetA

Describe one NEM dataset — schema, filters, cadence, source URL.

Examples: detail = await describe_dataset("dispatch_price") # → filters: [{key: "region", values: ["NSW1", "QLD1", ...]}] # → metrics: {rrp: "$/MWh"} # → cadence: "5 min"

Returns: DatasetDetail with id, name, description, filters, units, source URL, and example invocation strings.

get_dataA

Query an AEMO NEM dataset and return observations.

Examples: # Latest NSW dispatch price (preferred over latest() if you want # a window) resp = await get_data("dispatch_price", filters={"region": "NSW1"})

# Whole-day NSW dispatch price for a specific day
resp = await get_data(
    "dispatch_price",
    filters={"region": "NSW1"},
    start_period="2026-05-13",
    end_period="2026-05-13"
)

# Generation by fuel for QLD, current
resp = await get_data("generation_scada", filters={"region": "QLD1"})

# All 6 interconnectors right now
resp = await get_data("interconnector_flows")

Returns: DataResponse with records, units, period bounds, NEMWEB source URL, and AEMO attribution.

latestA

Return the most recent interval(s) for a NEM dataset.

For 5-min feeds (dispatch_price, dispatch_region, interconnector_flows, generation_scada): returns the most recent 5-minute interval, typically 1-2 minutes after the interval close.

For 30-min feeds (rooftop_pv, predispatch_30min): the most recent half-hour.

For daily feeds (daily_summary): yesterday's data.

Examples: # Current NSW spot price resp = await latest("dispatch_price", filters={"region": "NSW1"})

# Current generation mix in QLD
resp = await latest("generation_scada", filters={"region": "QLD1"})

# Current flow across Heywood
resp = await latest("interconnector_flows", filters={"interconnector": "V-SA"})

Returns: DataResponse with one observation per filtered (dimension, metric) tuple at the most recent interval. stale=True flag indicates the most recent interval is older than 2× the feed cadence (NEMWEB delay).

list_curatedA

List the 7 curated AEMO NEM dataset IDs.

These cover ~95% of typical NEM analytic queries: spot prices, regional demand and generation, interconnector flows, unit-level SCADA, rooftop PV (actual + forecast), 30-min predispatch forecasts, and daily-settled summaries.

Example: ids = list_curated() # → ['daily_summary', 'dispatch_price', 'dispatch_region', # 'generation_scada', 'interconnector_flows', # 'predispatch_30min', 'rooftop_pv']

Returns: Sorted list of dataset IDs. Always 7 entries today.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose: describe_dataset provides schema details, get_data retrieves arbitrary time ranges, latest returns the most recent interval, list_curated enumerates datasets, and search_datasets performs fuzzy search. Even though get_data and latest both retrieve data, their use cases are clearly separated by examples and descriptions.

Naming Consistency4/5

Tool names are in snake_case and follow a verb_noun pattern for four tools (describe_dataset, get_data, list_curated, search_datasets). The exception is 'latest', which is an adjective rather than a verb, but it is still concise and commonly understood in data contexts.

Tool Count5/5

With 5 tools, the server covers the essential operations for interacting with AEMO NEM datasets: schema discovery, data retrieval, latest value shortcut, dataset listing, and fuzzy search. This scope is neither too sparse nor too heavy for the domain.

Completeness5/5

The toolset provides a complete workflow for read-only access to AEMO NEM data: discover available datasets (list_curated, search_datasets), inspect schema (describe_dataset), and retrieve data (get_data, latest). There are no obvious missing operations like update or delete, which are not expected in this read-only context.

Maintenance

ActivitySlowing
ResponsivenessNo issues