# How to integrate Nasa MCP with Google ADK

```json
{
  "title": "How to integrate Nasa MCP with Google ADK",
  "toolkit": "Nasa",
  "toolkit_slug": "nasa",
  "framework": "Google ADK",
  "framework_slug": "google-adk",
  "url": "https://composio.dev/toolkits/nasa/framework/google-adk",
  "markdown_url": "https://composio.dev/toolkits/nasa/framework/google-adk.md",
  "updated_at": "2026-05-12T10:19:49.868Z"
}
```

## Introduction

This guide walks you through connecting Nasa to Google ADK using the Composio tool router. By the end, you'll have a working Nasa agent that can show me mars rover photos from curiosity on sol 1000, list recent natural disaster events worldwide, find all eonet event categories available through natural language commands.
This guide will help you understand how to give your Google ADK agent real control over a Nasa account through Composio's Nasa MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Nasa with

- [OpenAI Agents SDK](https://composio.dev/toolkits/nasa/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/nasa/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/nasa/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/nasa/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/nasa/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/nasa/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/nasa/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/nasa/framework/cli)
- [LangChain](https://composio.dev/toolkits/nasa/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/nasa/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/nasa/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/nasa/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/nasa/framework/crew-ai)

## TL;DR

Here's what you'll learn:
- Get a Nasa account set up and connected to Composio
- Install the Google ADK and Composio packages
- Create a Composio Tool Router session for Nasa
- Build an agent that connects to Nasa through MCP
- Interact with Nasa using natural language

## What is Google ADK?

Google ADK (Agents Development Kit) is Google's framework for building AI agents powered by Gemini models. It provides tools for creating agents that can use external services through the Model Context Protocol.
Key features include:
- Gemini Integration: Native support for Google's Gemini models
- MCP Toolset: Built-in support for Model Context Protocol tools
- Streamable HTTP: Connect to external services through streamable HTTP
- CLI and Web UI: Run agents via command line or web interface

## What is the Nasa MCP server, and what's possible with it?

The Nasa MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to NASA's public data APIs. It provides structured and secure access to a wealth of Earth science, planetary, and event data, so your agent can search datasets, fetch Mars rover photos, explore natural events, and visualize scientific information on your behalf.
- Search NASA science data collections: Empower your agent to query and filter massive datasets from the Common Metadata Repository (CMR) by spatial, temporal, or metadata criteria.
- Retrieve Mars rover imagery: Ask your agent to fetch stunning photos captured by Mars rovers for specific Martian days, enabling research and exploration right from your workflow.
- Monitor natural events worldwide: Let your agent pull up-to-date lists of global natural events—like wildfires, storms, or volcanic activity—using NASA's EONET feeds in ATOM or RSS formats.
- Visualize and analyze event categories and layers: Direct your agent to explore available data layers and event categories for advanced event visualization and filtering in scientific research.
- Access detailed event source and magnitude data: Have your agent retrieve metadata about event sources and magnitudes, making it easier to understand the context and scale of natural phenomena tracked by NASA.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `NASA_BROWSE_NEO` | Browse Near Earth Objects | Browse the complete NASA near-Earth object (asteroid) dataset with pagination support. Returns comprehensive asteroid data including orbital parameters, estimated diameters, close approach events, and hazard classifications. Use this when you need to explore the entire NEO catalog or retrieve multiple asteroids across pages. |
| `NASA_CREATE_GRAPH_REQUEST` | Create Graph Request | Tool to create orbital and position graphs for NASA satellites using the Satellite Situation Center (SSC) web service. Use when you need to visualize satellite trajectories, orbits, or positions over a specific time period in various coordinate systems. The service generates graph files accessible via URLs in the response. |
| `NASA_DELETE_ASSOCIATION` | Delete CMR Association | Tool to delete an existing association between concepts in NASA's Common Metadata Repository. Use when you need to remove relationships between collections, services, tools, or other CMR resources. Requires appropriate permissions to delete associations. |
| `NASA_DELETE_CMR_ACL` | Delete CMR ACL | Tool to delete an Access Control List (ACL) from NASA's Common Metadata Repository. Use when you need to remove access controls for a specific CMR resource. Requires appropriate permissions to delete ACLs. |
| `NASA_DOWNLOAD_CITATION_DOCUMENT` | Download Citation Document | Downloads a document file from a NASA NTRS (NASA Technical Reports Server) citation. Use this when you need to retrieve PDF or other document files associated with a specific citation ID. Supports partial content downloads via byte range specification. |
| `NASA_GET_AGAGE_DATA` | Get AGAGE Data Files | Tool to retrieve information about AGAGE (Advanced Global Atmospheric Gases Experiment) data files. Returns paginated results (40 files per page) with detailed metadata including compound names, stations, dates, instruments, and file locations. Use when you need to search or browse AGAGE atmospheric data files. Supports filtering by recommendation status, compounds, stations, date ranges, and other criteria. |
| `NASA_GET_AGAGE_DATA_BY_FILE_NAME` | Get AGAGE Data by File Name | Search for AGAGE (Advanced Global Atmospheric Gases Experiment) data files by file name. Returns detailed metadata about matching files including compound information, station details, temporal coverage, geographic coordinates, and file properties. Use this when you need to find specific AGAGE data files or retrieve metadata about atmospheric gas measurements. |
| `NASA_GET_AGAGE_DATA_JSON_FOR_GRAPH` | Get AGAGE Data JSON for Graph | Retrieve AGAGE atmospheric composition data in JSON format optimized for graphing. Returns time series data including O3_Number_Density and other trace gas measurements with start/stop dates. Use this when you need to visualize or analyze atmospheric composition trends from NASA's Advanced Global Atmospheric Gases Experiment (AGAGE) network. |
| `NASA_GET_AGAGE_DATA_VERSIONS` | Get AGAGE Data Versions | Tool to retrieve information on all AGAGE (Advanced Global Atmospheric Gases Experiment) data versions. Use when you need version details, DOIs, citations, or descriptions for the NASA AGAGE dataset archive. |
| `NASA_GET_APOD` | Get Astronomy Picture of the Day | Retrieves NASA's Astronomy Picture of the Day (APOD) for a specified date or today. Returns image/video URL, title, explanation, and metadata including copyright and high-resolution URLs when available. Use this when you need to access NASA's daily astronomy images or their descriptions. Valid for dates from June 16, 1995 to present. |
| `NASA_GET_CITATION` | Get Citation by ID | Tool to retrieve detailed citation information from NASA Technical Reports Server (NTRS) by citation ID. Use when you need complete metadata for a specific NASA scientific or technical document, including abstract, authors, publication details, copyright information, export control status, and download links. |
| `NASA_GET_CITATION_DOWNLOADS` | Get Citation Downloads | Tool to retrieve all available download links for a NASA technical report or publication by citation ID. Use this when you need to access PDFs, abstracts, or other documents associated with a NASA citation. |
| `NASA_GET_CITATION_REVISION_ID` | Get Citation Revision ID | Tool to retrieve citation revision IDs from NASA Common Metadata Repository (CMR) GraphQL API. Use when you need to track version/revision numbers of citation records in the CMR system. Returns citation metadata including revisionId field which tracks the revision history. |
| `NASA_GET_CITATIONS_AUTOCOMPLETE` | Get Citations Autocomplete | Tool to get autocomplete suggestions from NASA NTRS (Technical Reports Server) citations. Use when you need to search for partial matches in citation fields like author names, titles, subjects, or abstracts to help users complete their searches. |
| `NASA_GET_CITATIONS_REDISTRIBUTIONS` | Get Citations Redistributions | Tool to retrieve redistributed citations from NASA's Technical Reports Server (NTRS). Use when you need to access information about citations that have been redistributed, including dates and distribution details. |
| `NASA_GET_CMR_COLLECTIONS` | Get CMR Collections | Tool to retrieve collections from the Common Metadata Repository (CMR). Use when you need to search NASA science data collections by spatial, temporal, or metadata filters. Call after confirming search criteria. |
| `NASA_GET_CMR_GRANULES` | Get CMR Granules | Search for data granules in NASA's Common Metadata Repository (CMR). Granules are individual data files within a collection. REQUIRED: Specify at least one collection identifier (concept_id, provider, short_name, or version). OPTIONAL: Add spatial (bounding_box), temporal, or pagination filters to refine results. Omitting or broadening spatial/temporal filters can return extremely large datasets; always constrain both when possible. Returns metadata including download links, temporal coverage, spatial extent, and file size for each granule. |
| `NASA_GET_COMPOUNDS` | Get AGAGE Compounds | Tool to retrieve information on all data compounds available in NASA's AGAGE (Advanced Global Atmospheric Gases Experiment) API. Use when you need to discover available chemical compounds, their identifiers, and descriptions. |
| `NASA_GET_DATA_BY_FILE_NAME` | Get Data by File Name | Get information about specific TOLNet (Tropospheric Ozone Lidar Network) data files by file name. This tool searches the TOLNet database for lidar data files and returns detailed metadata including temporal coverage, geographic location, instrument details, and access permissions. Supports exact match, prefix match (begins_with), or suffix match (ends_with) search strategies. Use this when you need to retrieve metadata about TOLNet lidar observation files, verify file existence, check data collection periods, or obtain download locations. |
| `NASA_GET_DATA_DOWNLOAD` | Get AGAGE Data Download | Download AGAGE (Advanced Global Atmospheric Gases Experiment) data files by ID. Accepts up to 35 comma-separated data IDs in a single request. Returns the requested data file(s) as a downloadable binary file. Use this when you need to retrieve specific AGAGE atmospheric measurement datasets. |
| `NASA_GET_DATA_FREQUENCIES` | Get Data Frequencies | Retrieves all available data frequency options from NASA's AGAGE (Advanced Global Atmospheric Gases Experiment) mission. Data frequencies define the measurement intervals for atmospheric data collection (e.g., hourly, daily). Use this tool to: - Discover available measurement frequencies for AGAGE data - Get frequency IDs for filtering atmospheric gas data by sampling rate - Understand what each frequency option represents No parameters required - returns all available data frequencies. |
| `NASA_GET_DATA_JSON` | Get TOLNet Data JSON | Tool to retrieve JSON versions of TOLNet (Tropospheric Ozone Lidar Network) data by ID. Use when you need to access hi-res TOLNet measurement data in JSON format. |
| `NASA_GET_DATA_JSON_FOR_GRAPH` | Get TOLNet Data JSON for Graph | Tool to retrieve JSON versions of TOLNet data including O3_Number_Density (ozone mixing ratio) and temporal boundaries. Use when you need TOLNet lidar ozone measurements with altitude profiles, start/stop dates, and instrument metadata for a specific data ID. |
| `NASA_GET_DOCUMENT` | Get Document | Tool to retrieve metadata for a single TOLNet (Tropospheric Ozone Lidar Network) document by ID. Use when you need information about a document such as its name, author, type, dates, and access visibility. |
| `NASA_GET_DOCUMENT_DOWNLOAD` | Get Document Download | Download a single TOLNet (Tropospheric Ozone Lidar Network) document by ID. Returns the document as a PDF file. Use when you need to retrieve a specific TOLNet document for analysis or storage. |
| `NASA_GET_DOCUMENTS` | Get TOLNet Documents | Tool to retrieve document information from NASA's TOLNet (Tropospheric Ozone Lidar Network) archive. Use when you need to search or browse TOLNet documents with filtering by type, keywords, or sorting options. Supports pagination for large result sets. |
| `NASA_GET_DONKI_CME` | Get DONKI CME Data | Tool to retrieve Coronal Mass Ejection (CME) data from NASA's DONKI database. Use when you need detailed information about solar CME events including their speed, direction, source location, instrument detections, and impact predictions. Returns comprehensive CME analysis with ENLIL model simulations for space weather forecasting. |
| `NASA_GET_DONKI_CME_ANALYSIS` | Get DONKI CME Analysis | Tool to retrieve Coronal Mass Ejection (CME) analysis data from NASA's DONKI (Database Of Notifications, Knowledge, Information) system. Use when you need detailed CME analysis including speed, trajectory, half-angle measurements, and catalog information. Supports filtering by date range, speed threshold, half-angle, accuracy level, and catalog source. |
| `NASA_GET_DONKI_GST` | Get DONKI Geomagnetic Storms | Tool to retrieve Geomagnetic Storm (GST) data from NASA's Space Weather Database Of Notifications, Knowledge, Information (DONKI). Returns detailed storm events including Kp index time-series data, start times, and linked space weather events. Use when you need historical or recent geomagnetic storm information for space weather analysis or forecasting. |
| `NASA_GET_DONKI_HSS` | Get DONKI HSS Data | Tool to retrieve High Speed Stream (HSS) data from NASA's DONKI space weather database. Use when you need information about solar wind high-speed streams that can cause geomagnetic activity. Returns HSS events with detection times, instruments, and linked space weather events. |
| `NASA_GET_DONKI_IPS` | Get DONKI IPS Data | Tool to retrieve Interplanetary Shock (IPS) data from NASA's DONKI space weather database. Use when you need information about shock waves traveling through interplanetary space, typically caused by CMEs or high-speed solar wind streams. Returns detailed IPS event data including location, timing, instruments, and linked space weather events. |
| `NASA_GET_DONKI_MPC` | Get DONKI Magnetopause Crossing Data | Tool to retrieve Magnetopause Crossing (MPC) events from NASA's DONKI space weather database. Use when you need data about spacecraft crossings of Earth's magnetopause boundary, including detection instruments and linked space weather events. Supports filtering by date range (defaults to last 30 days if no dates specified). |
| `NASA_GET_DONKI_NOTIFICATIONS` | Get DONKI Space Weather Notifications | Tool to retrieve space weather notifications from NASA's DONKI (Space Weather Database Of Notifications, Knowledge, Information). Returns alerts, watches, and advisories for various space weather events including solar flares, CMEs, geomagnetic storms, and more. Use when you need comprehensive space weather notifications and forecasts for mission planning or space weather analysis. |
| `NASA_GET_DONKI_RBE` | Get DONKI Radiation Belt Enhancement Events | Retrieves Radiation Belt Enhancement (RBE) events from NASA's DONKI Space Weather Database. Returns event details including detection instruments, timestamps, related activities, and notification alerts. Use this when you need to track radiation belt enhancements affecting Earth's magnetosphere within a specific date range. |
| `NASA_GET_DONKI_SEP` | Get DONKI SEP Events | Get Solar Energetic Particle (SEP) events from NASA's DONKI space weather database. Returns detailed information about SEP events including detection instruments, linked solar events (flares, CMEs), notification alerts, and event metadata. Use this when you need space weather data about solar energetic particles detected by instruments like GOES, SOHO, and STEREO. |
| `NASA_GET_DONKI_SOLAR_FLARES` | Get DONKI Solar Flares | Tool to retrieve Solar Flare (FLR) events from NASA's DONKI (Space Weather Database Of Notifications, Knowledge, Information). Use when you need data about solar flares including their classification (B, C, M, X-class), timing (begin/peak/end), source location, and associated instruments. Returns events within the specified date range, defaulting to the last 30 days if no dates provided. |
| `NASA_GET_DONKI_WSA_ENLIL` | Get DONKI WSA-ENLIL Simulations | Retrieve WSA-ENLIL solar wind model simulation data from NASA's DONKI system. Returns simulations modeling interplanetary CME propagation with predicted Earth impacts, shock arrival times, and Kp indices. Use when forecasting space weather effects from coronal mass ejections or researching CME propagation patterns. |
| `NASA_GET_EONET_CATEGORIES` | Get EONET Categories | Tool to retrieve a list of all event categories from EONET. Use when you need current category IDs, titles, descriptions, and info links. Note: category IDs are EONET-specific and do not map to CMR (Common Metadata Repository) IDs; use them only for EONET-internal filtering, not cross-system lookups. |
| `NASA_GET_EONET_CATEGORY_EVENTS` | Get EONET Category Events | Tool to retrieve natural events filtered by a specific category from NASA's EONET. Use when you need events for a specific category like wildfires, volcanoes, or severe storms. |
| `NASA_GET_EONET_EVENT` | Get EONET Event by ID | Tool to retrieve a specific natural event by its unique ID from NASA's Earth Observatory Natural Event Tracker (EONET). Use when you need detailed information about a particular wildfire, storm, flood, volcano, earthquake, or other natural phenomenon. |
| `NASA_GET_EONET_EVENTS` | Get EONET Events | Tool to retrieve natural events from NASA's Earth Observatory Natural Event Tracker (EONET). Use when you need structured JSON data about wildfires, storms, floods, volcanoes, earthquakes, and other natural phenomena. Supports filtering by source, category, status, date range, magnitude, and geographic bounding box. |
| `NASA_GET_EONET_EVENTS_ATOM` | Get EONET Events (ATOM) | Tool to retrieve a list of natural events in ATOM format. Use when you need a machine-readable XML feed of recent natural events from EONET. |
| `NASA_GET_EONET_EVENTS_GEOJSON` | Get EONET Events GeoJSON | Tool to retrieve natural events from NASA's Earth Observatory Natural Event Tracker (EONET) in GeoJSON format. Use when you need geographic event data in GeoJSON format for mapping applications or GIS integration. Supports filtering by source, category, status, date range, and geographic bounding box. |
| `NASA_GET_EONET_EVENTS_RSS` | Get EONET Events RSS | Retrieve natural events from NASA's Earth Observatory Natural Event Tracker (EONET) in RSS/GeoRSS XML format. This tool provides a standardized RSS 2.0 feed with GeoRSS extensions, ideal for RSS readers, mapping applications, or systems that need spatial event data in XML format. The feed includes wildfires, storms, floods, volcanoes, icebergs, and other natural phenomena with geographical coordinates, magnitudes, and source references. Use this when you need RSS/XML format specifically. For programmatic access with structured data, consider using the JSON events endpoint instead. |
| `NASA_GET_EONET_LAYERS` | Get EONET Layers | Retrieves NASA EONET imagery layers for visualizing natural events. Returns web map service (WMS/WMTS) layer definitions that can be used to display satellite imagery related to events like wildfires, volcanoes, severe storms, etc. Each layer includes service URLs and parameters needed to fetch imagery tiles. Use the optional category parameter to get layers specific to an event type (recommended to avoid empty results). |
| `NASA_GET_EONET_MAGNITUDES` | GET EONET Magnitudes | Tool to retrieve a list of available event magnitudes and their descriptions. Use after determining you need valid magnitude filters before querying events data. |
| `NASA_GET_EONET_SOURCES` | Get EONET Sources | Retrieves the complete list of event data sources available in NASA's EONET (Earth Observatory Natural Event Tracker) system. Each source provides natural event data such as wildfires, volcanoes, hurricanes, floods, and earthquakes. Use this tool to: - Discover which organizations provide event data to EONET - Get source IDs for filtering events by specific data providers - Access homepage URLs and filtered event endpoints for each source No parameters required - returns all available sources. |
| `NASA_GET_EPIC_AEROSOL` | Get EPIC Aerosol Imagery Metadata | Tool to retrieve metadata for the most recent aerosol index imagery from NASA's DSCOVR EPIC camera. Returns detailed metadata including image identifiers, capture dates, spacecraft positions, and geographic coordinates. Use when you need information about Earth's aerosol measurements from the EPIC instrument. |
| `NASA_GET_EPIC_AEROSOL_DATE` | Get EPIC Aerosol Imagery by Date | Retrieves metadata for aerosol index imagery from NASA's EPIC camera for a specific date. Returns a list of images with detailed positional data including satellite, lunar, and solar positions in J2000 coordinates, geographical centroid, and attitude quaternions. Use this when you need aerosol index data from EPIC for analysis or visualization of atmospheric aerosol distribution. |
| `NASA_GET_EPIC_CLOUD` | Get EPIC Cloud Fraction Imagery | Retrieve metadata for the most recent cloud fraction imagery from NASA's DSCOVR EPIC camera. Returns an array of image metadata including capture timestamps, geographical coordinates, spacecraft positioning data, and image identifiers. Use this when you need information about recent cloud fraction observations from the EPIC instrument. |
| `NASA_GET_EPIC_CLOUD_DATE` | Get EPIC Cloud Imagery by Date | Get metadata for cloud fraction imagery from DSCOVR EPIC camera for a specific date. Returns satellite position, Earth coordinates, attitude data, and image identifiers for cloud fraction observations on the requested date. |
| `NASA_GET_EPIC_ENHANCED` | Get EPIC Enhanced Color Imagery | Retrieves metadata for the most recent enhanced color Earth imagery from the DSCOVR EPIC camera. Returns satellite position data, coordinates, timestamps, and image identifiers. Use this when you need to access the latest full-disk Earth images with enhanced color processing. |
| `NASA_GET_EPIC_ENHANCED_DATE` | Get EPIC Enhanced Color Imagery by Date | Retrieves metadata for enhanced color Earth imagery from DSCOVR EPIC for a specific date. Returns satellite position data, coordinates, timestamps, and image identifiers for all images captured on the given date. Use this when you need to access enhanced color Earth images for a particular historical date. |
| `NASA_GET_EPIC_NATURAL` | Get EPIC Natural Color Imagery | Retrieve metadata for the most recent natural color Earth imagery from NASA's DSCOVR EPIC camera. Returns an array of image metadata including capture timestamps, geographical coordinates, spacecraft positioning data, and image identifiers. Use this when you need information about recent Earth imagery from the EPIC instrument, which captures full-disc images of Earth from the L1 Lagrange point. |
| `NASA_GET_EPIC_NATURAL_DATE` | Get EPIC Natural Color Images by Date | Retrieves metadata for natural color Earth imagery from DSCOVR EPIC for a specific date. Returns image identifiers, capture times, satellite positions, and geographical coordinates for all images captured on the specified date. Use this when you need to access Earth observation data from the EPIC camera, including satellite positioning and viewing angles. |
| `NASA_GET_FILE_TYPES` | Get File Types | Tool to retrieve information on all data file types from NASA's TOLNET API. Use when you need to discover available file type identifiers, names, and descriptions. |
| `NASA_GET_GLDS_FILES` | Get GeneLab Data System Files | Retrieves file metadata from NASA's GeneLab Data System (GLDS) for specified dataset IDs. Returns file listings with download URLs, sizes, categories, and metadata for space biology datasets. Use this when you need to access GeneLab study files or list available data files for OSD datasets. Supports pagination and filtering of hidden files. |
| `NASA_GET_ICESAT2_TRACKS` | Get ICESat-2 Tracks | Retrieves a list of ICESat-2 satellite tracks (Reference Ground Tracks - RGTs) within a specified geographic bounding box. Use this when you need to identify which ICESat-2 tracks pass through a particular region of interest. The returned track identifiers can be used to query detailed altimetry data for those specific tracks. Supports optional date filtering to find tracks from a specific collection date. |
| `NASA_GET_IMAGE_ASSET` | Get Image Asset Manifest | Retrieve a media asset's manifest from the NASA Image and Video Library, including links to all available sizes and formats. Returns URLs for different image sizes (original, large, medium, small, thumbnail) and metadata. Use when you need to access specific media files after finding them through search. |
| `NASA_GET_IMAGE_METADATA` | Get Image Metadata Location | Retrieve the location URL of a media asset's metadata manifest from the NASA Image and Video Library. Returns the URL to the metadata JSON file containing detailed information including EXIF/camera data. Use when you need to access comprehensive metadata for NASA images or videos. |
| `NASA_GET_INSIGHT_WEATHER` | Get InSight Mars Weather Data | Retrieves Mars weather data from NASA's InSight lander at Elysium Planitia. Returns temperature, wind, and pressure measurements for the last seven available Sols (Martian days). Use this when you need Mars surface weather data including atmospheric conditions. Note: InSight mission ended in December 2022, so this returns historical data. |
| `NASA_GET_INSTRUMENTS_GROUPS` | Get Instruments Groups | Tool to retrieve information on all instrument groups from NASA's TOLNET API. Use when you need to get instrument group details including IDs, names, descriptions, and Principal Investigators. |
| `NASA_GET_LANDING_PAGE` | Get Landing Page | Tool to retrieve the NASA STAC API landing page (root endpoint). Use when you need to discover API capabilities, available endpoints, conformance classes, or STAC version information. The landing page provides links to the API definition (OpenAPI spec) and feature collections endpoint. |
| `NASA_GET_LEVEL3_DATA` | Get ICESat-2 Level-3A Data | Tool to access ICESat-2 Level-3A product data from OpenAltimetry. Use when you need satellite altimetry measurements for land ice, sea ice, vegetation, ocean surface, or inland water surface heights. Requests are limited to 5x5 degree spatial bounding box selection and up to 1 year of data. Note: This endpoint is marked as COMING SOON in documentation but is functionally operational. |
| `NASA_GET_MARS_ROVER_PHOTOS` | Get Mars Rover Photos | Retrieves photos taken by NASA Mars rovers (Perseverance, Curiosity, Opportunity, Spirit) on a specific Martian sol (day). Returns photo metadata including image URLs, camera info, Earth dates, and rover details. Use this when you need to access Mars rover imagery for a particular sol number. Sol 0 represents the landing date for each rover. |
| `NASA_GET_NEO_LOOKUP` | Get NEO Lookup | Lookup a specific asteroid by its NASA SPK-ID. Returns detailed orbital and physical data including estimated diameter, close approach history, and hazard classification. Use when you need comprehensive information about a specific known asteroid. |
| `NASA_GET_OSDR_BIOSPECIMEN` | Get OSDR Biospecimen | Tool to retrieve detailed information about a specific biospecimen from NASA's Open Science Data Repository (OSDR). Returns comprehensive metadata including specimen type, anatomical section, preservation method, storage conditions, experimental group, protocol details, and parent subject references. Use when you need information about a specific biological specimen from space biology research studies. |
| `NASA_GET_OSDR_EXPERIMENT` | Get OSDR Experiment | Retrieve detailed information about a specific OSDR (Open Science Data Repository) experiment by its identifier. Returns comprehensive metadata including title, objectives, approach, results, sponsoring agency, research areas, NASA programs, publications, and related studies. Use this when you need detailed scientific information about a specific NASA OSDR experiment. |
| `NASA_GET_OSDR_HARDWARE` | Get OSDR Hardware | Retrieve detailed information about specific hardware from NASA's Open Science Data Repository (OSDR). Returns comprehensive hardware details including components, version history, and parent relationships. Use when you need technical specifications, subsystem information, or configuration details for space flight hardware used in OSDR experiments. |
| `NASA_GET_OSDR_METADATA` | Get OSDR Study Metadata | Retrieve complete metadata for an OSDR (Open Science Data Repository) study dataset. Returns experimental design, assays, sample characteristics, ontology references, and publication information for NASA space biology research. Use when you need comprehensive metadata about a specific OSD study including organism details, experimental conditions, assay types, and data files. |
| `NASA_GET_OSDR_MISSION` | Get OSDR Mission Details | Retrieve detailed information about a specific space mission from NASA's Open Science Data Repository (OSDR). Returns mission metadata including start/end dates, personnel, vehicle information, and links to related payloads, experiments, and studies. Use this when you need comprehensive information about a specific NASA space mission. |
| `NASA_GET_OSDR_PAYLOAD` | Get OSDR Payload Details | Retrieve detailed metadata for a specific OSDR payload by its identifier. Returns comprehensive information including payload name, description, associated missions, subject groups, personnel, experiments, and version information. Use this when you need to access detailed information about NASA OSDR payloads and their associated space biology experiments. |
| `NASA_GET_OSDR_SUBJECT` | Get OSDR Subject Information | Retrieve detailed information about a specific subject (biospecimen) from NASA's Open Science Data Repository (OSDR). Returns metadata including scientific name, common name, description, experimental conditions, and references to related payloads and experiments. Use this when you need information about biological samples used in space life sciences research. |
| `NASA_GET_OSDR_VEHICLE` | Get OSDR Vehicle Information | Retrieve detailed information about a specific vehicle from NASA's Open Science Data Repository (OSDR). Returns vehicle metadata including associated files, missions, and version information. Use this when you need to access information about spacecraft vehicles like Dragon, Cygnus, or Progress that have been used in NASA missions. |
| `NASA_GET_POWER_CLIMATOLOGY` | Get POWER Climatology Data | Retrieves long-term climatology data for a specific location from NASA POWER (Prediction Of Worldwide Energy Resources). Returns average values over a climate period, including monthly and annual climate statistics for parameters like temperature, solar radiation, wind speed, and precipitation. Use this when you need long-term climate averages for renewable energy planning, sustainable building design, or agricultural applications. |
| `NASA_GET_POWER_DAILY` | Get POWER Daily Data | Retrieves daily average solar and meteorological data from NASA POWER (Prediction Of Worldwide Energy Resources). Returns time-series data for parameters like temperature, solar radiation, wind speed, humidity, and precipitation from 1981 to near real-time. Use this when you need historical or recent climate data for a specific location to support renewable energy planning, building design, or agricultural applications. |
| `NASA_GET_POWER_DAILY_REGIONAL` | Get POWER Daily Regional Data | Tool to retrieve daily average solar and meteorological data for a regional bounding box from NASA POWER (Prediction Of Worldwide Energy Resources). Use when you need historical or recent climate data for a geographic region (not just a single point). Returns time-series data on a 0.5 x 0.5 degree grid for parameters like temperature, solar radiation, wind speed, humidity, and precipitation from 1981 to near real-time. Regional requests require at least a 2-degree range in both latitude and longitude, and are limited to ONE parameter per request. |
| `NASA_GET_POWER_MONTHLY` | Get POWER Monthly Data | Retrieves monthly average solar and meteorological data for a specific location from NASA POWER (Prediction Of Worldwide Energy Resources). Returns time series data with monthly averages organized by year-month for parameters like temperature, precipitation, solar irradiance, and humidity. Use this when you need long-term climate analysis, renewable energy assessments, or agricultural planning data for a specific geographic location. Data availability generally ranges from 1981 to near real-time depending on the parameter. |
| `NASA_GET_POWER_TEMPORAL_HOURLY` | Get POWER Hourly Temporal Data | Retrieves hourly climate and meteorological data from NASA POWER (Prediction of Worldwide Energy Resources) API for a specific location and date range. Returns high-resolution temporal data including temperature, humidity, precipitation, and other parameters. Use this when you need detailed hourly weather/climate data for renewable energy, sustainable buildings, or agroclimatology applications. Data available from 2001 to near real-time. |
| `NASA_GET_PROCESSING_TYPES` | Get Processing Types | Tool to retrieve information on all data instruments from NASA's AGAGE mission. Use when you need to list available instruments with their IDs, names, and descriptions. |
| `NASA_GET_PRODUCT_TYPES` | Get Product Types | Tool to retrieve all data product types from NASA's TOLNET (TOLNet Ozone Lidar Network) API. Use when you need to discover available product types or get product type metadata including names, descriptions, and display ordering. |
| `NASA_GET_SATELLITE_LOCATIONS` | Get Satellite Locations | Retrieves satellite location data from NASA's Satellite Situation Center (SSC). Returns position coordinates for specified satellites over a time interval using configurable coordinate systems and magnetic field models. Use this when you need to track satellite positions, analyze orbital trajectories, or retrieve historical satellite location data. |
| `NASA_GET_STATIONS` | Get AGAGE Data Stations | Tool to retrieve information on all AGAGE (Advanced Global Atmospheric Gases Experiment) data stations. Use when you need station names, locations, coordinates, elevation, or other metadata about monitoring sites. |
| `NASA_GET_TECHPORT_PROJECT` | Get TechPort Project | Retrieves detailed information about a specific NASA technology project from TechPort. Returns comprehensive project data including title, description, benefits, status, program details, contacts, organizations, and technology readiness levels. Use this when you need information about a specific NASA technology project by its TechPort ID. |
| `NASA_GET_TOLNET_DATA` | Get TOLNet Data | Tool to retrieve information about TOLNet (Tropospheric Ozone Lidar Network) data files. Use when you need to search or browse available TOLNet atmospheric data with filtering by instrument, product type, date ranges, or geographic location. Returns metadata including file details, temporal coverage, spatial location, and access information. Data is paginated with 40 items per page. |
| `NASA_GET_TOLNET_DATA_CALENDAR` | Get TOLNet Data Calendar | Tool to retrieve a date-driven list of all available TOLNet (Tropospheric Ozone Lidar Network) data. Use when you need to query available TOLNet data files filtered by instrument group and file type, with optional filters for product type and processing type. Returns metadata including file names, locations, dates, geographical coordinates, and accessibility status. |
| `NASA_GET_VIDEO_CAPTIONS` | Get Video Captions | Retrieves the location URL of caption files for NASA video assets from the NASA Image and Video Library. Returns the URL to the captions file (typically in SRT format) for the specified video NASA ID. Use this when you need to access subtitles or captions for NASA video content. |
| `NASA_LIST_EPIC_AEROSOL_DATES` | List EPIC Aerosol Dates | Tool to retrieve a list of all dates with available aerosol index EPIC imagery. Use when you need to know which dates have aerosol data available from NASA's EPIC camera. |
| `NASA_LIST_EPIC_CLOUD_DATES` | List EPIC Cloud Fraction Dates | Retrieve a listing of all dates with available cloud fraction Earth imagery from DSCOVR EPIC. Returns a list of dates in YYYY-MM-DD format for which cloud fraction imagery is available. Use this when you need to know which dates have EPIC cloud fraction imagery available before fetching specific date images. |
| `NASA_LIST_EPIC_ENHANCED_DATES` | List EPIC Enhanced Color Dates | Retrieves a listing of all dates with available enhanced color Earth imagery from NASA's DSCOVR EPIC (Earth Polychromatic Imaging Camera). Use this when you need to discover which dates have enhanced color imagery available for viewing or further retrieval. Enhanced color imagery shows Earth with vegetation highlighted in red, making it useful for environmental monitoring. |
| `NASA_LIST_EPIC_NATURAL_DATES` | List EPIC Natural Color Dates | Retrieve a listing of all dates with available natural color Earth imagery from DSCOVR EPIC. Returns a list of dates in YYYY-MM-DD format for which natural color imagery is available. Use this when you need to know which dates have EPIC natural color imagery available before fetching specific date images. |
| `NASA_LIST_GROUND_STATIONS` | List Ground Stations | Retrieves the complete list of ground stations available from NASA's Satellite Situation Center (SSC). Returns metadata for each ground station including unique identifier, name, and geographic coordinates (latitude/longitude). Use this tool when you need information about SSC ground station locations for satellite tracking or geophysical research. |
| `NASA_LIST_LOCATIONS_GSE_GEO` | List Satellite Locations (GSE/GEO) | Retrieves satellite/observatory location data in GSE and GEO coordinate systems from NASA's SSC (Satellite Situation Center). Returns time-series coordinate data including X, Y, Z positions, latitude, longitude, and local time for specified satellites over a time range. Use this when you need spacecraft position data for trajectory analysis or orbital tracking. Minimum time interval is 24 hours. |
| `NASA_LIST_OBSERVATORIES` | List Observatories | Tool to retrieve descriptions of all observatories available from NASA's Satellite Situation Center (SSC). Use when you need to discover available satellites, their identifiers, data availability periods, and trajectory resolutions. Returns comprehensive metadata for each observatory including time ranges and resource identifiers. |
| `NASA_LIST_OSDR_BIOSPECIMENS` | List OSDR Biospecimens | Tool to retrieve a list of all biospecimens from the NASA Open Science Data Repository (OSDR). Use when you need to discover available biospecimen data from space biology experiments. Returns URLs that can be used to fetch detailed information for each biospecimen. |
| `NASA_LIST_OSDR_EXPERIMENTS` | List OSDR Experiments | Tool to retrieve a list of all experiments from NASA's Open Science Data Repository (OSDR). Returns a catalog of experiment URLs that can be used to fetch detailed information about individual experiments. Use when you need to discover available space biology experiments or get a complete inventory of OSDR experiments. |
| `NASA_LIST_OSDR_HARDWARE` | List OSDR Hardware | Tool to retrieve a list of all hardware from NASA's Open Science Data Repository (OSDR). Returns a catalog of hardware URLs that can be used to fetch detailed information about individual hardware items. Use when you need to discover available space flight hardware or get a complete inventory of OSDR hardware. |
| `NASA_LIST_OSDR_MISSIONS` | List OSDR Missions | Tool to retrieve a list of all space missions from the NASA Open Science Data Repository (OSDR). Use when you need to discover available mission data from space biology and physical science experiments. Returns URLs that can be used to fetch detailed information for each mission including dates, vehicles, personnel, and related studies. |
| `NASA_LIST_OSDR_PAYLOADS` | List OSDR Payloads | Tool to retrieve a list of all payloads from the NASA Open Science Data Repository (OSDR). Use when you need to discover available payload data from space biology and physical science experiments. Returns URLs that can be used to fetch detailed information for each payload including related missions, vehicles, and experiments. |
| `NASA_LIST_OSDR_SUBJECTS` | List OSDR Subjects | Tool to retrieve a list of all subjects from the NASA Open Science Data Repository (OSDR). Use when you need to discover available subject data from space biology experiments. Returns URLs that can be used to fetch detailed information for each subject. |
| `NASA_LIST_OSDR_VEHICLES` | List OSDR Vehicles | Tool to retrieve a list of all vehicles from the NASA Open Science Data Repository (OSDR). Returns vehicle names and URLs to their detailed information endpoints. Use when you need to discover available spacecraft, rockets, or other vehicles used in NASA missions. |
| `NASA_QUERY_CITATION` | Query Citation | Tool to query citation metadata from NASA's GraphQL Earthdata API. Use when you need to retrieve detailed citation information for a specific concept ID. Returns comprehensive metadata including DOI, abstract, provider, and revision information. |
| `NASA_QUERY_CITATIONS` | Query Citations via GraphQL | Tool to query NASA Common Metadata Repository (CMR) GraphQL API for collection citations. Use when you need to retrieve citation information for NASA science data collections. The GraphQL endpoint supports flexible queries for collections and their associated citation metadata including DOIs, publication details, and relationships. |
| `NASA_QUERY_CMR_COLLECTION` | Query CMR Collection | Tool to query a single collection from NASA's Common Metadata Repository using its unique concept ID. Use when you need to retrieve detailed metadata about a specific NASA collection including description, spatial/temporal coverage, data center, and related information. |
| `NASA_QUERY_CMR_COLLECTIONS` | Query CMR Collections | Tool to query multiple collections from NASA's Common Metadata Repository via GraphQL. Use when you need to search NASA science data collections by provider, short name, concept ID, DOI, temporal ranges, spatial coordinates, science keywords, cloud hosting status, or granule availability. Returns collection metadata including identifiers, descriptions, temporal/spatial coverage, and access information. |
| `NASA_QUERY_CMR_GRANULE` | Query CMR Granule by Concept ID | Query for a single granule (individual data file) from NASA's Common Metadata Repository using its unique concept ID. Returns comprehensive granule metadata including cloud cover, parent collection reference, spatial/temporal information, and download links. Use when you need detailed information about a specific NASA Earth science data granule file. |
| `NASA_QUERY_CMR_GRANULES` | Query CMR Granules | Tool to query for multiple granules (individual data files) from NASA's Common Metadata Repository via GraphQL. Use when searching for specific data files within a collection. REQUIRED: Must specify at least one collection identifier (collectionConceptId, provider, shortName, or conceptId) per CMR requirements. OPTIONAL: Add spatial filters (bounding box, circle, point, polygon, line), temporal range, cloud cover, day/night flag, or pagination parameters. Returns granule metadata including concept IDs, titles, temporal coverage, access links, and file sizes. |
| `NASA_QUERY_CMR_GRIDS` | Query CMR Grids | Query for multiple grids from NASA's Common Metadata Repository (CMR) via GraphQL. Grids describe spatial data organization and coordinate systems used in NASA Earth observation datasets. Use when you need to retrieve grid metadata including spatial extent, resolution, and organization information. |
| `NASA_QUERY_CMR_SERVICE` | Query CMR Service | Tool to query a single service from NASA's Common Metadata Repository using its unique concept ID. Use when you need to retrieve detailed metadata about a specific NASA service including description, type, URL, supported reformattings, and related information. |
| `NASA_QUERY_CMR_SERVICES` | Query CMR Services | Tool to query for multiple services from NASA's Common Metadata Repository via GraphQL. Services describe data access methods and tools that act on data files. Use when you need to search for NASA services by type, provider, keyword, or other metadata filters. |
| `NASA_QUERY_CMR_SUBSCRIPTION` | Query CMR Subscription | Tool to query a single subscription from NASA's Common Metadata Repository using its unique concept ID. Use when you need to retrieve detailed metadata about a specific CMR subscription including name, native ID, associated collection, and query parameters. |
| `NASA_QUERY_CMR_SUBSCRIPTIONS` | Query CMR Subscriptions | Query for multiple subscriptions from NASA's Common Metadata Repository (CMR). Use when you need to retrieve user subscriptions for receiving notifications when new data matching specified criteria becomes available. Returns subscription details including concept IDs, names, query criteria, and notification email addresses. |
| `NASA_QUERY_CMR_TOOL` | Query CMR Tool | Tool to query a single tool from NASA's Common Metadata Repository using its unique concept ID. Use when you need to retrieve detailed metadata about a specific NASA tool including long name, description, and URL. Call this when you have a tool concept ID and need to fetch its full metadata. |
| `NASA_QUERY_CMR_TOOLS` | Query CMR Tools | Tool to query multiple tools from NASA's Common Metadata Repository using GraphQL. Use when you need to search for software applications and utilities that process or visualize Earth science data. Supports filtering by keyword, provider, and pagination. |
| `NASA_QUERY_CMR_VARIABLE` | Query CMR Variable | Tool to query a single variable from NASA's Common Metadata Repository using its unique concept ID. Use when you need to retrieve detailed metadata about a specific CMR variable including its name, long name, and definition. |
| `NASA_QUERY_COLLECTION_DRAFT` | Query Collection Draft | Tool to query a NASA Earthdata collection draft by ID using the GraphQL API. Returns detailed metadata including title, abstract, version, DOI, platforms, and spatial/temporal extents. Use when you need to retrieve information about a specific collection draft from NASA's Earthdata system. |
| `NASA_QUERY_DATA_QUALITY_SUMMARIES` | Query Data Quality Summaries | Query data quality summaries from NASA's Common Metadata Repository (CMR) GraphQL API. Use when you need to retrieve metadata about data quality assessments for NASA datasets. Returns summary information including concept IDs, names, and HTML-formatted quality descriptions. |
| `NASA_QUERY_DATA_QUALITY_SUMMARY` | Query Data Quality Summary | Query for a single Data Quality Summary from NASA's Common Metadata Repository (CMR) using GraphQL. Use when you need to retrieve detailed quality information about a specific NASA dataset by its concept ID. Returns metadata including name, summary, and association details. |
| `NASA_QUERY_EXOPLANET_ARCHIVE` | Query Exoplanet Archive | Tool to query NASA's Exoplanet Archive NSTED API for exoplanet and related astronomical data. Use when you need to search, filter, or retrieve data about confirmed exoplanets, Kepler Objects of Interest (KOIs), planetary systems, or composite planet parameters. Supports SQL-like filtering, column selection, sorting, and multiple output formats (JSON, CSV, ASCII, IPAC). |
| `NASA_QUERY_ORDER_OPTION` | Query Order Option | Tool to query a single order option from NASA Earthdata GraphQL API. Use when you need to retrieve detailed metadata about a specific order option by its concept ID. |
| `NASA_QUERY_ORDER_OPTIONS` | Query Order Options | Tool to query order options for a NASA Earthdata collection using the GraphQL API. Use when you need to retrieve available ordering options for a specific collection concept ID. |
| `NASA_QUERY_PERMISSIONS` | Query Permissions | Tool to query permissions from NASA's Common Metadata Repository (CMR) GraphQL API. Returns a list of permissions with concept IDs, system objects, targets, and permission strings. Use when you need to retrieve access control information for NASA Earthdata resources. |
| `NASA_QUERY_PROVIDERS` | Query CMR Providers | Tool to query for a list of data providers from NASA's Common Metadata Repository via GraphQL. Use when you need to discover available data providers or get provider metadata. Returns all available providers with their IDs, short names, and metadata flags (cmrOnly, small, consortiums). |
| `NASA_QUERY_TAG_DEFINITIONS` | Query Tag Definitions | Tool to query tag definitions from NASA's Common Metadata Repository (CMR) GraphQL API. Use when you need to retrieve metadata about tag definitions including concept IDs, tag keys, descriptions, and originator information. Optionally filter by tag key or originator ID. |
| `NASA_QUERY_TOOL_DRAFT` | Query Tool Draft | Tool to query a tool draft from NASA's Common Metadata Repository (CMR) GraphQL API. Use when you need to retrieve information about a specific tool draft by its ID. |
| `NASA_QUERY_VISUALIZATION` | Query Visualization | Tool to query a single visualization from NASA's Common Metadata Repository using its unique concept ID. Use when you need to retrieve detailed metadata about a specific NASA visualization including name, title, description, type, and related information. |
| `NASA_QUERY_VISUALIZATIONS` | Query Visualizations | Tool to query for visualizations from NASA's Common Metadata Repository via GraphQL. Use when searching for graphical representations of Earth Science data like maps, charts, or animations. |
| `NASA_RESTORE_CITATION_REVISION` | Restore Citation Revision | Tool to restore a previous version of a citation record within NASA's Common Metadata Repository. Use when you need to revert a citation to an earlier revision by specifying both the concept ID and the target revision number. |
| `NASA_RESTORE_COLLECTION_REVISION` | Restore Collection Revision | Tool to restore a collection to a previous revision in NASA's Common Metadata Repository. Use when you need to revert a collection back to a specific historical version. Requires appropriate permissions to modify collections. |
| `NASA_RESTORE_VISUALIZATION_REVISION` | Restore Visualization Revision | Tool to restore a previous revision of a visualization in NASA's Common Metadata Repository. Use when you need to revert a visualization to a specific historical revision. Requires appropriate permissions to modify visualizations. |
| `NASA_SEARCH_CITATIONS` | Search NTRS Citations | Tool to search NASA Technical Reports Server (NTRS) citations database. Use when you need to find NASA scientific and technical documents, research papers, reports, or publications. Supports filtering by document type, author, center, keywords, and more. Returns detailed metadata including abstracts, authors, publication info, and download links. |
| `NASA_SEARCH_NEAR_EARTH_OBJECTS` | Search Near Earth Objects | Search for near-Earth objects (asteroids) by their closest approach date to Earth. Returns detailed information about asteroids including: - Estimated diameter in multiple units (kilometers, meters, miles, feet) - Close approach data with velocity and miss distance - Hazard classification (potentially hazardous or not) - NASA JPL reference URLs for detailed information Use this tool when you need to find asteroids approaching Earth within a specific date range (max 7 days). Useful for tracking asteroid activity, identifying potentially hazardous objects, or researching specific time periods. |
| `NASA_SEARCH_OSDR` | Search OSDR | Tool to search NASA Open Science Data Repository (OSDR) for space biology experiments and studies. Use when searching for GeneLab datasets, space biology research, microgravity experiments, or federated biological databases. Supports keyword search, filtering by organism/program/technology, and pagination. Returns detailed study metadata including descriptions, protocols, publications, and mission information. |
| `NASA_SEARCH_PUBSPACE_DOCUMENTS` | Search Public Space Documents | Search NASA public space technical documents in the NTRS (NASA Technical Reports Server) repository. Use when you need to find NASA publications, technical reports, conference papers, or other scientific documents. Supports full-text search, field-specific queries, filtering by author/center/type, date ranges, and pagination. Returns comprehensive document metadata including titles, abstracts, authors, download links, and classifications. |
| `NASA_SEARCH_SVS_VISUALIZATIONS` | Search SVS Visualizations | Tool to search for visualizations in the Scientific Visualization Studio (SVS). Use when you need to query SVS visualizations by keywords or mission filters. |
| `NASA_SEARCH_TECHTRANSFER_SOFTWARE` | Search Technology Transfer Software | Search NASA's Technology Transfer software catalog for available tools and applications. Returns software entries with titles, descriptions, NASA case numbers, and licensing information. Use this when searching for NASA software tools available for public use, licensing, or download. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Nasa MCP server is an implementation of the Model Context Protocol that connects your AI agent to Nasa. It provides structured and secure access so your agent can perform Nasa operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before starting, make sure you have:
- A Google API key for Gemini models
- A Composio account and API key
- Python 3.9 or later installed
- Basic familiarity with Python

### 1. Getting API Keys for Google and Composio

Google API Key
- Go to [Google AI Studio](https://aistudio.google.com/app/apikey) and create an API key.
- Copy the key and keep it safe. You will put this in GOOGLE_API_KEY.
Composio API Key and User ID
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Go to Settings → API Keys and copy your Composio API key. Use this for COMPOSIO_API_KEY.
- Decide on a stable user identifier to scope sessions, often your email or a user ID. Use this for COMPOSIO_USER_ID.

### 2. Install dependencies

Inside your virtual environment, install the required packages.
What's happening:
- google-adk is Google's Agents Development Kit
- composio connects your agent to Nasa via MCP
- python-dotenv loads environment variables
```bash
pip install google-adk composio python-dotenv
```

### 3. Set up ADK project

Set up a new Google ADK project.
What's happening:
- This creates an agent folder with a root agent file and .env file
```bash
adk create my_agent
```

### 4. Set environment variables

Save all your credentials in the .env file.
What's happening:
- GOOGLE_API_KEY authenticates with Google's Gemini models
- COMPOSIO_API_KEY authenticates with Composio
- COMPOSIO_USER_ID identifies the user for session management
```bash
GOOGLE_API_KEY=your-google-api-key
COMPOSIO_API_KEY=your-composio-api-key
COMPOSIO_USER_ID=your-user-id-or-email
```

### 5. Import modules and validate environment

What's happening:
- os reads environment variables
- Composio is the main Composio SDK client
- GoogleProvider declares that you are using Google ADK as the agent runtime
- Agent is the Google ADK LLM agent class
- McpToolset lets the ADK agent call MCP tools over HTTP
```python
import os
import warnings

from composio import Composio
from dotenv import load_dotenv
from google.adk.agents.llm_agent import Agent
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset

load_dotenv()

warnings.filterwarnings("ignore", message=".*BaseAuthenticatedTool.*")

GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not GOOGLE_API_KEY:
    raise ValueError("GOOGLE_API_KEY is not set in the environment.")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment.")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment.")
```

### 6. Create Composio client and Tool Router session

What's happening:
- Authenticates to Composio with your API key
- Declares Google ADK as the provider
- Spins up a short-lived MCP endpoint for your user and selected toolkit
- Stores the MCP HTTP URL for the ADK MCP integration
```python
composio_client = Composio(api_key=COMPOSIO_API_KEY)

composio_session = composio_client.create(
    user_id=COMPOSIO_USER_ID,
    toolkits=["nasa"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url,
print(f"Composio MCP URL: {COMPOSIO_MCP_URL}")
```

### 7. Set up the McpToolset and create the Agent

What's happening:
- Connects the ADK agent to the Composio MCP endpoint through McpToolset
- Uses Gemini as the model powering the agent
- Lists exact tool names in instruction to reduce misnamed tool calls
```python
composio_toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url=COMPOSIO_MCP_URL,
        headers={"x-api-key": COMPOSIO_API_KEY}
    )
)

root_agent = Agent(
    model="gemini-2.5-flash",
    name="composio_agent",
    description="An agent that uses Composio tools to perform actions.",
    instruction=(
        "You are a helpful assistant connected to Composio. "
        "You have the following tools available: "
        "COMPOSIO_SEARCH_TOOLS, COMPOSIO_MULTI_EXECUTE_TOOL, "
        "COMPOSIO_MANAGE_CONNECTIONS, COMPOSIO_REMOTE_BASH_TOOL, COMPOSIO_REMOTE_WORKBENCH. "
        "Use these tools to help users with Nasa operations."
    ),
    tools=[composio_toolset],
)

print("\nAgent setup complete. You can now run this agent directly ;)")
```

### 8. Run the agent

Execute the agent from the project root. The web command opens a web portal where you can chat with the agent.
What's happening:
- adk run runs the agent in CLI mode
- adk web . opens a web UI for interactive testing
```bash
# Run in CLI mode
adk run my_agent

# Or run in web UI mode
adk web
```

## Complete Code

```python
import os
import warnings

from composio import Composio
from composio_google import GoogleProvider
from dotenv import load_dotenv
from google.adk.agents.llm_agent import Agent
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset

load_dotenv()
warnings.filterwarnings("ignore", message=".*BaseAuthenticatedTool.*")

GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not GOOGLE_API_KEY:
    raise ValueError("GOOGLE_API_KEY is not set in the environment.")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment.")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment.")

composio_client = Composio(api_key=COMPOSIO_API_KEY, provider=GoogleProvider())

composio_session = composio_client.create(
    user_id=COMPOSIO_USER_ID,
    toolkits=["nasa"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url


composio_toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url=COMPOSIO_MCP_URL,
        headers={"x-api-key": COMPOSIO_API_KEY}
    )
)

root_agent = Agent(
    model="gemini-2.5-flash",
    name="composio_agent",
    description="An agent that uses Composio tools to perform actions.",
    instruction=(
        "You are a helpful assistant connected to Composio. "
        "You have the following tools available: "
        "COMPOSIO_SEARCH_TOOLS, COMPOSIO_MULTI_EXECUTE_TOOL, "
        "COMPOSIO_MANAGE_CONNECTIONS, COMPOSIO_REMOTE_BASH_TOOL, COMPOSIO_REMOTE_WORKBENCH. "
        "Use these tools to help users with Nasa operations."
    ),  
    tools=[composio_toolset],
)

print("\nAgent setup complete. You can now run this agent directly ;)")
```

## Conclusion

You've successfully integrated Nasa with the Google ADK through Composio's MCP Tool Router. Your agent can now interact with Nasa using natural language commands.
Key takeaways:
- The Tool Router approach dynamically routes requests to the appropriate Nasa tools
- Environment variables keep your credentials secure and separate from code
- Clear agent instructions reduce tool calling errors
- The ADK web UI provides an interactive interface for testing and development
You can extend this setup by adding more toolkits to the toolkits array in your session configuration.

## How to build Nasa MCP Agent with another framework

- [OpenAI Agents SDK](https://composio.dev/toolkits/nasa/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/nasa/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/nasa/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/nasa/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/nasa/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/nasa/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/nasa/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/nasa/framework/cli)
- [LangChain](https://composio.dev/toolkits/nasa/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/nasa/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/nasa/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/nasa/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/nasa/framework/crew-ai)

## Related Toolkits

- [Excel](https://composio.dev/toolkits/excel) - Microsoft Excel is a robust spreadsheet application for organizing, analyzing, and visualizing data. It's the go-to tool for calculations, reporting, and flexible data management.
- [21risk](https://composio.dev/toolkits/_21risk) - 21RISK is a web app built for easy checklist, audit, and compliance management. It streamlines risk processes so teams can focus on what matters.
- [Abstract](https://composio.dev/toolkits/abstract) - Abstract provides a suite of APIs for automating data validation and enrichment tasks. It helps developers streamline workflows and ensure data quality with minimal effort.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agenty](https://composio.dev/toolkits/agenty) - Agenty is a web scraping and automation platform for extracting data and automating browser tasks—no coding needed. It streamlines data collection, monitoring, and repetitive online actions.
- [Ambee](https://composio.dev/toolkits/ambee) - Ambee is an environmental data platform providing real-time, hyperlocal APIs for air quality, weather, and pollen. Get precise environmental insights to power smarter decisions in your apps and workflows.
- [Ambient weather](https://composio.dev/toolkits/ambient_weather) - Ambient Weather is a platform for personal weather stations with a robust API for accessing local, real-time, and historical weather data. Get detailed environmental insights directly from your own sensors for smarter apps and automations.
- [Anonyflow](https://composio.dev/toolkits/anonyflow) - Anonyflow is a service for encryption-based data anonymization and secure data sharing. It helps organizations meet GDPR, CCPA, and HIPAA data privacy compliance requirements.
- [Api ninjas](https://composio.dev/toolkits/api_ninjas) - Api ninjas offers 120+ public APIs spanning categories like weather, finance, sports, and more. Developers use it to supercharge apps with real-time data and actionable endpoints.
- [Api sports](https://composio.dev/toolkits/api_sports) - Api sports is a comprehensive sports data platform covering 2,000+ competitions with live scores and 15+ years of stats. Instantly access up-to-date sports information for analysis, apps, or chatbots.
- [Apify](https://composio.dev/toolkits/apify) - Apify is a cloud platform for building, deploying, and managing web scraping and automation tools called Actors. It lets you automate data extraction and workflow tasks at scale—no infrastructure headaches.
- [Autom](https://composio.dev/toolkits/autom) - Autom is a lightning-fast search engine results data platform for Google, Bing, and Brave. Developers use it to access fresh, low-latency SERP data on demand.
- [Beaconchain](https://composio.dev/toolkits/beaconchain) - Beaconchain is a real-time analytics platform for Ethereum 2.0's Beacon Chain. It provides detailed insights into validators, blocks, and overall network performance.
- [Big data cloud](https://composio.dev/toolkits/big_data_cloud) - BigDataCloud provides APIs for geolocation, reverse geocoding, and address validation. Instantly access reliable location intelligence to enhance your applications and workflows.
- [Bigpicture io](https://composio.dev/toolkits/bigpicture_io) - BigPicture.io offers APIs for accessing detailed company and profile data. Instantly enrich your applications with up-to-date insights on 20M+ businesses.
- [Bitquery](https://composio.dev/toolkits/bitquery) - Bitquery is a blockchain data platform offering indexed, real-time, and historical data from 40+ blockchains via GraphQL APIs. Get unified, reliable access to complex on-chain data for analytics, trading, and research.
- [Brightdata](https://composio.dev/toolkits/brightdata) - Brightdata is a leading web data platform offering advanced scraping, SERP APIs, and anti-bot tools. It lets you collect public web data at scale, bypassing blocks and friction.
- [Builtwith](https://composio.dev/toolkits/builtwith) - BuiltWith is a web technology profiler that uncovers the technologies powering any website. Gain actionable insights into analytics, hosting, and content management stacks for smarter research and lead generation.
- [Byteforms](https://composio.dev/toolkits/byteforms) - Byteforms is an all-in-one platform for creating forms, managing submissions, and integrating data. It streamlines workflows by centralizing form data collection and automation.
- [Cabinpanda](https://composio.dev/toolkits/cabinpanda) - Cabinpanda is a data collection platform for building and managing online forms. It helps streamline how you gather, organize, and analyze responses.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Nasa MCP?

With a standalone Nasa MCP server, the agents and LLMs can only access a fixed set of Nasa tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Nasa and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Google ADK?

Yes, you can. Google ADK fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Nasa tools.

### Can I manage the permissions and scopes for Nasa while using Tool Router?

Yes, absolutely. You can configure which Nasa scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Nasa data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
