aemo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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 ...', ...}] 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"}) 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"}) Returns:
DataResponse with one observation per filtered (dimension, metric)
tuple at the most recent interval. |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
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.
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.
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.
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.