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):
| 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:
| {
"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.
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
The following examples show tool names and arguments in compact query notation. MCP clients submit these arguments through JSON-RPC tools/call requests.
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.
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.
get_last_available reports live freshness for POWER S3 sources, filterable by source, product, temporal level, and time standard.
get_point_statistics computes descriptive statistics (mean, median, min, max, standard deviation) for a single point across hourly, daily, or monthly resolutions.
search_docs performs a keyword search across NASA POWER documentation.
get_doc_summaries returns executive summaries of all POWER documentation for broad context.
search_stories performs a keyword search across NASA POWER user stories.
get_story_summaries returns executive summaries of all user stories for broad context.
get_parameters searches and filters the POWER parameter catalog by keyword, temporal level, community, source, tag, and more.
get_parameter looks up metadata for a single POWER parameter by abbreviation.
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.
build_visualization_url builds a POWER Toolkit visualization URL (heatmaps, trends, anomalies, cycles, histograms, gardening) for a point location.
build_report_url builds a POWER report URL (psychrometric, climate design indicators, wind rose) for a point location.
build_pruve_url builds a PRUVE (PaRameter Uncertainty ViEwer) statistics URL for descriptive statistics or validation against surface observations.
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.
| {
"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 |