Skip to content

POWER MCP

The POWER Model Context Protocol (MCP) Server exposes POWER climate data and metadata, point statistics, and URL-building capabilities to Super Intelligence (SI) assistants and Large Language Models (LLM) through the open Model Context Protocol standard. Any MCP-compatible client, such as GitHub Copilot in Visual Studio Code (VS Code), Claude Desktop, or Cursor, can connect to the server and let the SI assistant retrieve data on the user's behalf without writing custom API integration code.

Additional Service Specifications:

  • The server communicates using JSON-RPC 2.0 over Hypertext Transfer Protocol (HTTP) POST requests.
  • It is deployed as an Amazon Web Services (AWS) Lambda function fronted by Amazon API Gateway, defined through an AWS Serverless Application Model (SAM) template, following the same serverless pattern as the rest of the POWER APIs.
  • The service is free and public. No API key or authentication is required.
  • Data tools are optimized for single-point access. Regional Insights and regional data extraction are currently unavailable; write_zarr_access returns a single-point request fallback for a bounding box.

Endpoint

The MCP Server is available at a single base Uniform Resource Locator (URL):

1
https://power.larc.nasa.gov/mcp/
Path Method Description
/mcp/healthcheck GET Returns service health status. Open and does not require authentication.
/mcp/ POST Main MCP endpoint. Accepts JSON-RPC 2.0 requests for tools, resources, and prompts.

Connecting an SI Client

Most MCP clients only need the base URL above added to their configuration file. For example, in VS Code, add the following to .vscode/mcp.json:

1
2
3
4
5
6
7
8
{
  "servers": {
    "nasa-power": {
      "type": "http",
      "url": "https://power.larc.nasa.gov/mcp/"
    }
  }
}

Once saved, the client discovers the available tools, resources, and prompts automatically. No restart of the SI assistant or additional setup is typically required.

Tools

The MCP Server organizes its capabilities into task-oriented groups. Each tool accepts named arguments and returns a structured JSON response.

Category Tool Description
Point Data get_daily_data Daily time-series for a single point. Dates optional (defaults to last 1 year); max 1-year range. Common params: ALLSKY_SFC_SW_DWN, T2M, WS10M, PRECTOTCORR.
Point Data get_hourly_data Hourly time-series for a single point. Single-day maximum (start=end). Common params: ALLSKY_SFC_SW_DWN, T2M, WS10M, RH2M.
Point Data get_monthly_data Monthly/annual aggregated time-series for a single point. Defaults to recent 5 years; ideal for seasonal and multi-year trends.
Point Data get_climatology_data Climatology / long-term (25-year) normals for a single point (defaults to 2001–2025). Use for baseline climate summaries.
Metadata and Freshness get_parameter Lookup metadata for a single POWER parameter. Supports detail='compact' or detail='full' for expanded upstream metadata.
Metadata and Freshness get_last_available Live last-available dates and freshness for POWER S3 sources (use before selecting very recent ranges).
Metadata and Freshness get_parameters Search and filter the parameter catalog with keyword, temporal, community, source, tag, pagination, and availability filters.
Statistics get_point_statistics Compute descriptive statistics (mean, median, min, max, stddev) for requested parameters at a single point. Supports hourly, daily, monthly. Excludes -999 missing values.
Regional Requests write_zarr_access Regional script generation and multi-location extraction are currently unavailable. Returns a single-point API URL at the bounding-box center and instructions for repeating the request.
Documentation search_docs Full-text search of POWER documentation; returns matching documents with titles, links, and snippets.
Documentation get_doc_summaries Executive summaries of POWER documentation for quick context and overview.
Utility build_api_url Build a NASA POWER API URL for a point request (shareable link matching a tool request).
Visualization build_visualization_url Build a POWER Toolkit visualization URL (heatmaps, trends, zones, anomalies, histograms). Returns a URL, not raw data.
Validation build_pruve_url Build a PRUVE statistics/validation URL for descriptive or observational comparison analyses.
Zones build_zones_url Build a Thermal/Climate Zones URL (point, regional, or global coverage). Returns a URL.
Reports build_report_url Build a POWER report URL (psychrometric, indicators, windrose). Returns a URL for interactive reports.
Stories search_stories Search user stories and use-case examples; returns matching stories with summaries and snippets.
Stories get_story_summaries Executive summaries of user stories for quick browsing and context.
  • Dates are optional for the data tools. Each tool applies sensible defaults, for example, get_daily_data defaults to the previous year through today.
  • The community argument (RE, SB, AG, or HY) controls available parameters, output units, and defaults. RE (Renewable Energy) is the default; SB is Sustainable Infrastructure (formerly Sustainable Buildings), AG is Agroclimatology, and HY is Hydrology.
  • A response value of -999 indicates missing or unavailable data.

Request Structure

  • All tool calls are sent as an HTTP POST to /mcp/ with a JSON-RPC 2.0 envelope containing jsonrpc, id, method, and params.
  • The tools/call method requires params.name (the tool name) and params.arguments (an object of named arguments).
  • Requests without an id are treated as notifications and return HTTP 204 with no response body.

Examples

1
curl https://power.larc.nasa.gov/mcp/healthcheck
1
2
3
4
5
{
    "status": "alive",
    "server": "NASA POWER MCP Server",
    "version": "v0.10.0-alpha"
}
1
Invoke-WebRequest -Uri "https://power.larc.nasa.gov/mcp/healthcheck"
1
2
3
4
5
6
7
8
curl -X POST https://power.larc.nasa.gov/mcp/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {}
  }'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$body = @{
    jsonrpc = "2.0"
    id = 1
    method = "initialize"
    params = @{}
} | ConvertTo-Json

Invoke-WebRequest -Uri "https://power.larc.nasa.gov/mcp/" `
  -Method Post `
  -Headers @{"Content-Type" = "application/json"} `
  -Body $body
1
2
3
4
5
6
7
8
curl -X POST https://power.larc.nasa.gov/mcp/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list",
    "params": {}
  }'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$body = @{
    jsonrpc = "2.0"
    id = 2
    method = "tools/list"
    params = @{}
} | ConvertTo-Json

Invoke-WebRequest -Uri "https://power.larc.nasa.gov/mcp/" `
  -Method Post `
  -Headers @{"Content-Type" = "application/json"} `
  -Body $body

The following examples show tool names and arguments in compact query notation. MCP clients submit these arguments through JSON-RPC tools/call requests.

1
/mcp/tools/call?name=get_hourly_data&latitude=38.9&longitude=-77.0&start=20240101&end=20240101&community=RE&parameters=ALLSKY_SFC_SW_DWN,T2M
1
/mcp/tools/call?name=get_daily_data&latitude=38.9&longitude=-77.0&start=20240101&end=20240107&community=RE&parameters=ALLSKY_SFC_SW_DWN,T2M
1
/mcp/tools/call?name=get_monthly_data&latitude=38.9&longitude=-77.0&start=2015&end=2020&community=RE&parameters=ALLSKY_SFC_SW_DWN,T2M
1
/mcp/tools/call?name=get_climatology_data&latitude=38.9&longitude=-77.0&community=RE&parameters=ALLSKY_SFC_SW_DWN,T2M

An alternative approach that enables longer timeseries requests is build_api_url, which generates a direct NASA POWER API URL for a point request at any temporal resolution.

1
/mcp/tools/call?name=build_api_url&temporal=hourly&latitude=38.9&longitude=-77.0&start=20240101&end=20240101&parameters=T2M,ALLSKY_SFC_SW_DWN&community=re&format=json
1
/mcp/tools/call?name=build_api_url&temporal=daily&latitude=38.9&longitude=-77.0&start=20240101&end=20240107&parameters=T2M,ALLSKY_SFC_SW_DWN&community=re&format=json
1
/mcp/tools/call?name=build_api_url&temporal=monthly&latitude=38.9&longitude=-77.0&start=2015&end=2020&parameters=T2M,ALLSKY_SFC_SW_DWN&community=re&format=json

Regional script generation and multi-location data extraction are currently unavailable. The write_zarr_access tool instead returns a single-point API request at the center of the requested bounding box; set output_format to csv or json.

1
/mcp/tools/call?name=write_zarr_access&temporal=daily&lat_min=36.0&lat_max=42.0&lon_min=-80.0&lon_max=-72.0&start=2024-01-01&end=2024-01-31&parameters=T2M,ALLSKY_SFC_SW_DWN,WS10M&output_format=csv

get_last_available reports live freshness for POWER S3 sources, filterable by source, product, temporal level, and time standard.

1
/mcp/tools/call?name=get_last_available&source=merra2&temporal=daily
1
/mcp/tools/call?name=get_last_available&source=syn1deg&temporal=hourly
1
/mcp/tools/call?name=get_last_available&source=srb

get_point_statistics computes descriptive statistics (mean, median, min, max, standard deviation) for a single point across hourly, daily, or monthly resolutions.

1
/mcp/tools/call?name=get_point_statistics&temporal=hourly&latitude=38.9&longitude=-77.0&start=2024-01-01&end=2024-01-01&parameters=T2M,WS10M
1
/mcp/tools/call?name=get_point_statistics&temporal=daily&latitude=38.9&longitude=-77.0&start=2023-01-01&end=2023-12-31&parameters=T2M,ALLSKY_SFC_SW_DWN
1
/mcp/tools/call?name=get_point_statistics&temporal=monthly&latitude=38.9&longitude=-77.0&start=2015&end=2023&parameters=T2M,PRECTOTCORR

search_docs performs a keyword search across NASA POWER documentation.

1
/mcp/tools/call?name=search_docs&query=merra2%20temperature%20quality&max_results=10

get_doc_summaries returns executive summaries of all POWER documentation for broad context.

1
/mcp/tools/call?name=get_doc_summaries

search_stories performs a keyword search across NASA POWER user stories.

1
/mcp/tools/call?name=search_stories&query=agriculture&max_results=5

get_story_summaries returns executive summaries of all user stories for broad context.

1
/mcp/tools/call?name=get_story_summaries

get_parameters searches and filters the POWER parameter catalog by keyword, temporal level, community, source, tag, and more.

1
/mcp/tools/call?name=get_parameters&keyword=solar%20radiation&limit=20
1
/mcp/tools/call?name=get_parameters&keyword=wind&limit=20

get_parameter looks up metadata for a single POWER parameter by abbreviation.

1
/mcp/tools/call?name=get_parameter&parameter=T2M&detail=compact
1
/mcp/tools/call?name=get_parameter&parameter=ALLSKY_SFC_SW_DWN&detail=compact

build_zones_url builds a Thermal and Thermal Moisture Zones URL for a point, region, or the whole globe. Default date range is 2001–2025.

1
/mcp/tools/call?name=build_zones_url&region_type=point&latitude=38.9&longitude=-77.0
1
/mcp/tools/call?name=build_zones_url&region_type=regional&latitude_min=36.0&latitude_max=42.0&longitude_min=-80.0&longitude_max=-72.0
1
/mcp/tools/call?name=build_zones_url&region_type=global
1
/mcp/tools/call?name=build_zones_url&region_type=global&start=1991&end=2020

build_visualization_url builds a POWER Toolkit visualization URL (heatmaps, trends, anomalies, cycles, histograms, gardening) for a point location.

1
/mcp/tools/call?name=build_visualization_url&visualization_type=heatmaps&latitude=38.9&longitude=-77.0&start=2020-01-01&end=2020-12-31&parameter=T2M&operation=climatological-days
1
/mcp/tools/call?name=build_visualization_url&visualization_type=trend&latitude=38.9&longitude=-77.0&start=2000-01-01&end=2023-12-31&parameter=T2M
1
/mcp/tools/call?name=build_visualization_url&visualization_type=anomalies&latitude=38.9&longitude=-77.0&start=2000-01-01&end=2023-12-31&parameter=T2M
1
/mcp/tools/call?name=build_visualization_url&visualization_type=cycles&latitude=38.9&longitude=-77.0&start=2023-01-01&end=2023-12-31&parameter=T2M&operation=single-parameter
1
/mcp/tools/call?name=build_visualization_url&visualization_type=histograms&latitude=38.9&longitude=-77.0&start=2020-01-01&end=2020-12-31&parameter=T2M&bin_size=1
1
/mcp/tools/call?name=build_visualization_url&visualization_type=gardening&latitude=38.9&longitude=-77.0&start=2001&end=2025

build_report_url builds a POWER report URL (psychrometric, climate design indicators, wind rose) for a point location.

1
/mcp/tools/call?name=build_report_url&report_type=psychrometric&latitude=38.9&longitude=-77.0&temporal=daily&start=2023&end=2023
1
/mcp/tools/call?name=build_report_url&report_type=psychrometric&latitude=38.9&longitude=-77.0&temporal=climatology
1
/mcp/tools/call?name=build_report_url&report_type=psychrometric&latitude=38.9&longitude=-77.0&temporal=climatology&start=1991&end=2020
1
/mcp/tools/call?name=build_report_url&report_type=indicators&latitude=38.9&longitude=-77.0&start=2001&end=2020
1
/mcp/tools/call?name=build_report_url&report_type=windrose&latitude=38.9&longitude=-77.0&start=20240101&end=20241231

build_pruve_url builds a PRUVE (PaRameter Uncertainty ViEwer) statistics URL for descriptive statistics or validation against surface observations.

1
/mcp/tools/call?name=build_pruve_url&analysis_type=descriptive&temporal=daily&parameter=t2m&start=2023-01-01&end=2023-12-31&latitude=38.9&longitude=-77.0
1
/mcp/tools/call?name=build_pruve_url&analysis_type=validation&temporal=daily&parameter=t2m&start=2023-01-01&end=2023-12-31&latitude=38.9&longitude=-77.0
1
/mcp/tools/call?name=build_pruve_url&analysis_type=descriptive&temporal=hourly&parameter=allsky_sfc_sw_dwn&start=2024-01-01&end=2024-01-07&latitude=38.9&longitude=-77.0
1
/mcp/tools/call?name=build_pruve_url&analysis_type=validation&temporal=hourly&parameter=allsky_sfc_sw_dwn&start=2024-01-01&end=2024-01-07&latitude=38.9&longitude=-77.0

Errors

The MCP Server returns JSON-RPC 2.0 errors with an HTTP 200 status code and an error object that includes a suggestion for recovery.

1
2
3
4
5
6
{
    "error": "Request to NASA POWER API timed out",
    "code": -32004,
    "suggestion": "The request took too long to process.",
    "suggested_next_action": "Reduce the date range to under one year and retry the request."
}
Code Description
-32001 Input validation error
-32002 Data retrieval failed
-32003 Upstream service unavailable
-32004 Request timeout
-32005 Parameter unavailable
-32006 Internal server error