Skip to main content
Glama

en es

NASA-MCP. Integration via MCP with NASA APIs

NASA is the National Aeronautics and Space Administration of the United States.

NASA-MCP allows you to retrieve astronomical data, space weather information, Earth imagery, and more from NASA's APIs directly from Claude AI and other MCP compatible clients, using the Model Context Protocol (MCP).

NASA-MCP is an MCP server that exposes tools enabling LLMs to query data from various NASA APIs, including APOD (Astronomy Picture of the Day), Asteroids NeoWs, DONKI (Space Weather Database), Earth imagery, EPIC (Earth Polychromatic Imaging Camera), and Exoplanet data.

It includes secure handling of API keys and proper error management for all API requests.

Key Features

  • Access to Astronomy Picture of the Day (APOD) with explanations and imagery

  • Query Near Earth Objects data and asteroid information

  • Retrieve Space Weather data from DONKI, including solar flares, geomagnetic storms, and more

  • Get Earth imagery from Landsat 8 satellite for specific coordinates

  • Access EPIC camera images showing the full Earth disk

  • Query the Exoplanet Archive database for information about planets outside our solar system

Related MCP server: nasa-exoplanet-mcp

Installation

Installing via Smithery

To install NASA API Integration Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @AnCode666/nasa-mcp --client claude

Install with uv

Prerequisites

  • Python 3.10 or higher

  • uv package manager

Installing uv

The first step is to install uv, a package manager for Python.
It can be installed from the command line.

On macOS and Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

On Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

You can also install it with pip:

pip install uv

For more information about installing uv, visit the uv documentation.

Integration with clients like Claude for Desktop

Once uv is installed, you can use the MCP server from any compatible client such as Claude for Desktop, in which case the steps to follow are:

  1. Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json

  2. Add the following block inside "mcpServers":

"nasa-mcp": {
    "command": "uvx",
    "args": [
        "nasa_mcp"
    ],
    "env": {
        "NASA_API_KEY": "YOUR_NASA_API_KEY"
    }
}
  1. Get a free API key from NASA at: https://api.nasa.gov/

  2. Replace YOUR_NASA_API_KEY with your actual API key (leave the quotes). You can also use "DEMO_KEY" for limited testing.

  3. If you already have another MCP server configured, separate each with a comma ,.

In general, to integrate it into any other MCP-compatible client such as Cursor, CODEGPT, or Roo Code, simply go to the MCP server configuration of your client and add the same code block.

Usage Examples

Once properly configured, you can ask things like:

  • "Show me today's astronomy picture of the day"

  • "Find asteroids that will pass near Earth in the next week"

  • "Get information about solar flares from January 2023"

  • "Show me Earth imagery for coordinates 29.78, -95.33"

  • "Find exoplanets in the habitable zone"

DISTRIBUTIONS

Smithery

MCP Review

MCP review certified

Available Tools

21 tools
browse_asteroidsC

Browse the asteroid dataset.

Inputs: no named parameters.

get_asteroid_lookupC

Look up a specific asteroid based on its NASA JPL ID.

Args: asteroid_id: Asteroid ID in the NASA JPL small body (SPK-ID) system.

Inputs: asteroid_id (required).

get_asteroids_feedB

Get a list of asteroids based on their closest approach date to Earth.

Args: start_date: Start date for asteroid search in YYYY-MM-DD format. end_date: End date for asteroid search in YYYY-MM-DD format. The Feed date limit is only 7 Days. If not specified, 7 days after start_date is used.

Inputs: start_date (required), end_date.

get_astronomy_picture_of_dayA

Get NASA's astronomy picture of the day.

Args: date: Date of the image in YYYY-MM-DD format. If not specified, the current date is used. count: If specified, returns 'count' random images. Cannot be used with 'date'. thumbs: If True, returns the thumbnail URL for videos. If APOD is not a video, this parameter is ignored.

Inputs: date, count, thumbs.

get_coronal_mass_ejectionB

Get coronal mass ejection (CME) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_earth_assetsB

Get information about available imagery assets for a specific location and date.

Args: lat: Latitude. lon: Longitude. date: Date in YYYY-MM-DD format. dim: Width and height of the image in degrees (0.025 degrees is approximately 2.7 km).

Inputs: lat (required), lon (required), date (required), dim.

get_earth_imageryB

Get Earth imagery from Landsat 8 satellite.

Args: lat: Latitude. lon: Longitude. date: Image date in YYYY-MM-DD format. If not specified, the most recent image is used. dim: Width and height of the image in degrees (0.025 degrees is approximately 2.7 km). cloud_score: Calculate the percentage of the image covered by clouds (currently not available).

Inputs: lat (required), lon (required), date, dim, +1 more.

get_epic_datesC

Get available dates for EPIC images.

Args: collection: Collection type. Options: natural, enhanced.

Inputs: collection.

get_epic_imageryB

Get images from the EPIC (Earth Polychromatic Imaging Camera).

Args: collection: Collection type. Options: natural, enhanced.

Inputs: collection.

get_epic_imagery_by_dateB

Get images from the EPIC (Earth Polychromatic Imaging Camera) for a specific date.

Args: date: Date in YYYY-MM-DD format. collection: Collection type. Options: natural, enhanced.

Inputs: date (required), collection.

get_exoplanet_dataB

Get data from NASA's Exoplanet Archive.

Args: query: Specific query to filter results using Exoplanet Archive syntax. Example: "pl_orbper > 300 and pl_rade < 2" table: Table to query. Common options: exoplanets (confirmed planets), cumulative (Kepler Objects of Interest), koi (subset of cumulative), tce (Threshold Crossing Events). format: Output format. Options: json, csv, xml, ipac. Default: json.

Inputs: query, table, format.

get_geomagnetic_stormB

Get geomagnetic storm (GST) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_hight_speed_streamC

Get high speed stream (HSS) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_magnetopause_crossingB

Get magnetopause crossing (MPC) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_mars_rover_manifestA

Get the mission manifest for a Mars rover (Curiosity, Opportunity, Spirit). Provides mission details like landing/launch dates, status, max sol/date, total photos, and photo counts per sol.

Args: rover_name: Name of the rover (curiosity, opportunity, spirit).

Inputs: rover_name (required).

get_mars_rover_photosA

Get photos from a Mars rover (Curiosity, Opportunity, Spirit). Specify either sol (Martian day) or earth_date (YYYY-MM-DD), but not both.

Args: rover_name: Name of the rover (curiosity, opportunity, spirit). sol: Martian sol (day number, starting from landing). Use if not using earth_date. earth_date: Earth date in YYYY-MM-DD format. Use if not using sol. camera: Filter by camera abbreviation (e.g., FHAZ, RHAZ, MAST, NAVCAM, PANCAM). See documentation for full list per rover. page: Page number for results (25 photos per page).

Inputs: rover_name (required), sol, earth_date, camera, +1 more.

get_notificationsB

Get DONKI notifications.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 7 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date. notification_type: Notification type. Options: all, FLR, SEP, CME, IPS, MPC, GST, RBE, report.

Inputs: start_date, end_date, notification_type.

get_radiation_belt_enhancementB

Get radiation belt enhancement (RBE) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_solar_energetic_particleB

Get solar energetic particle (SEP) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_solar_flareB

Get solar flare (FLR) data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 30 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

get_wsa_enlil_simulationB

Get WSA+Enlil simulation data.

Args: start_date: Start date in YYYY-MM-DD format. Defaults to 7 days before current date. end_date: End date in YYYY-MM-DD format. Defaults to current date.

Inputs: start_date, end_date.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools are clearly distinct, targeting specific NASA datasets or resources like asteroids, Earth imagery, Mars rover photos, and space weather events. However, some overlap exists: get_epic_imagery and get_epic_imagery_by_date could be confusing as they both retrieve EPIC images, though the latter adds date specificity. Similarly, browse_asteroids and get_asteroids_feed both provide asteroid lists but differ in browsing vs. date-based filtering.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, all using snake_case with 'get_' or 'browse_' prefixes followed by descriptive nouns (e.g., get_asteroid_lookup, get_earth_imagery, get_mars_rover_photos). This uniformity makes the tool set predictable and easy to navigate for an agent.

    Tool Count3/5

    With 21 tools, the count is borderline high for a single server, as it covers multiple domains (asteroids, Earth imagery, Mars rovers, space weather, exoplanets). While each tool is specific, the scope feels broad, potentially overwhelming for an agent. A more focused server might split these into subdomains, but the count is still manageable.

    Completeness4/5

    The tool set provides comprehensive coverage for accessing NASA's public APIs, including data retrieval for asteroids, Earth imagery, Mars rovers, space weather events, and exoplanets. Minor gaps exist, such as no direct update or delete operations (expected for read-only APIs) and limited filtering options in some tools, but agents can work around these with the available query parameters.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      B
      maintenance
      A Model Context Protocol server that provides a standardized interface for AI models to interact with NASA's vast array of data sources including APOD, Mars Rover photos, satellite imagery, and space weather data.
      32
      95 npm
      94
      ISC
    • A
      license
      A
      quality
      D
      maintenance
      MCP server providing AI agents with access to NASA and space/astronomy data including APOD, Mars rover photos, near-Earth asteroids, exoplanets, Earth imagery, natural events, and space weather.
      11
      13 PyPI
      MIT