Skip to main content
Glama
Bigred97

aemo-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bigred97/aemo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server