Skip to main content
Glama
EmiRoberti77

NASA MCP Server

by EmiRoberti77

NASA MCP Server

A Model Context Protocol (MCP) server that provides access to NASA's Astronomy Picture of the Day (APOD) API. This server exposes tools that can be used by AI assistants like Cursor to fetch NASA's daily space images.

Features

  • NASA Picture of the Day: Fetch today's or any historical NASA Astronomy Picture of the Day

  • Current Date: Get the current date in ISO format

  • Easy Integration: Simple setup for Cursor and other MCP-compatible clients

Related MCP server: space-mcp-server

Prerequisites

  • Node.js (v18 or higher)

  • npm or yarn

  • A NASA API key (free at api.nasa.gov)

Installation

  1. Clone or navigate to this repository:

cd ts_mcp
  1. Install dependencies:

npm install
  1. Create a .env file in the root directory:

NASA_API_KEY=your_nasa_api_key_here

You can get a free NASA API key by visiting api.nasa.gov and generating one.

Building

Build the TypeScript project:

npm run build

Or use the MCP-specific build command:

npm run build:mcp

For development with watch mode:

npm run dev

Running the Server

Start the MCP server:

npm start

The server runs using stdio (standard input/output) communication, which is required for MCP protocol.

Integrating with Cursor

To use this MCP server with Cursor, you need to add it to your Cursor settings:

  1. Open Cursor Settings:

    • Press Ctrl+, (Windows/Linux) or Cmd+, (Mac)

    • Or go to File > Preferences > Settings

  2. Search for "MCP" or navigate to the MCP settings section

  3. Add a new MCP server configuration. The configuration should look like this:

{
  "mcpServers": {
    "nasa-mcp-server": {
      "command": "node",
      "args": [
        "C:\\code\\MCP\\ts_mcp\\dist\\index.js"
      ],
      "env": {
        "NASA_API_KEY": "your_nasa_api_key_here"
      }
    }
  }
}

Important Notes:

  • Replace C:\\code\\MCP\\ts_mcp\\dist\\index.js with the absolute path to your built index.js file

  • Make sure you've built the project first (npm run build)

  • Replace your_nasa_api_key_here with your actual NASA API key

  • On Windows, use double backslashes (\\) or forward slashes (/) in the path

  • On Mac/Linux, use forward slashes in the path

Alternative: Using npm script

You can also configure Cursor to run the server via npm:

{
  "mcpServers": {
    "nasa-mcp-server": {
      "command": "npm",
      "args": [
        "start"
      ],
      "cwd": "C:\\code\\MCP\\ts_mcp",
      "env": {
        "NASA_API_KEY": "your_nasa_api_key_here"
      }
    }
  }
}

Usage

Once integrated with Cursor, you can use the MCP tools in your conversations:

Get Today's NASA Picture

Get today's NASA picture of the day

Get a Specific Date's Picture

Get the NASA picture from 2026-01-31

Example Result:

Artemis I: Flight Day 13

Get Current Date

What's today's date?

Available Tools

nasaPicOfDayTool

Fetches the NASA Astronomy Picture of the Day for a specific date or today.

Parameters:

  • date (optional): Date in YYYY-MM-DD format. If not provided, defaults to today.

Returns:

  • title: The title of the image

  • date: The date of the image

  • url: URL to the image

  • explanation: Explanation of the image

getCurrentDate

Gets the current date in ISO format.

Returns:

  • Current date as an ISO string

Project Structure

ts_mcp/
├── src/
│   ├── index.ts              # Main MCP server entry point
│   └── tools/
│       ├── nasaPicOfTheDay.ts # NASA APOD tool implementation
│       └── getCurrentDate.ts  # Current date tool implementation
├── dist/                      # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── .env                       # Environment variables (not in git)

Development

Scripts

  • npm run build - Compile TypeScript to JavaScript

  • npm run build:mcp - Build with tsup for MCP distribution

  • npm run dev - Watch mode for development

  • npm start - Run the compiled server

Dependencies

  • @mastra/mcp - MCP server framework

  • @mastra/core - Core tooling utilities

  • axios - HTTP client for API requests

  • zod - Schema validation

  • dotenv - Environment variable management

Troubleshooting

Server won't start

  • Make sure you've built the project: npm run build

  • Verify your .env file exists and contains NASA_API_KEY

  • Check that Node.js is installed and in your PATH

Cursor can't find the server

  • Verify the path in Cursor settings is correct and absolute

  • Ensure the dist/index.js file exists after building

  • Restart Cursor after changing MCP settings

  • Check Cursor's developer console for error messages

API errors

  • Verify your NASA API key is valid

  • Check your internet connection

  • Ensure the date format is YYYY-MM-DD if providing a date

License

ISC

Resources

Available Tools

2 tools
getCurrentDateC

Get todays date

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Get todays date' and does not disclose whether the date is local or UTC, whether it includes time, or what format is returned. For a read-only tool this is minimally transparent but lacks important behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler. It is front-loaded and easy to read. However, the typo 'todays' and the lack of any elaboration prevent a perfect score for structure, though brevity is a plus.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is extremely simple, so the description is minimally adequate, but without an output schema, the agent does not know what return shape to expect. Key contextual details like date format and timezone are missing, making it insufficient for full autonomous invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and per the baseline, 0 params gets a score of 4. The description does not need to explain parameters that do not exist, and the schema already confirms an empty object. No additional parameter information is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets today's date using a specific verb and resource. It distinguishes from the sibling tool (nasaPicOfDayTool) since that is obviously about NASA pictures, not dates. However, it is vague about what format or timezone the date is in, which keeps it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when this tool should be used over alternatives. There is no mention of alternatives or exclusionary conditions. The sibling tool is unrelated but no explicit comparison is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nasaPicOfDayToolC

get the NASA picture of the day

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNothe date to fetch picture should be YYYY-MM-DD format

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the purpose and gives no details about the return format (e.g., URL, image bytes, metadata), potential side effects, or error behavior. This is minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler words, effectively front-loaded. It is concise, though perhaps too terse to convey necessary details, which slightly reduces its value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and a single parameter, the description should at least mention what the result looks like or that the date is optional. It does neither, leaving the tool under-specified for an agent that needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% description coverage for the 'date' parameter with format guidance. The description itself adds no extra parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'get the NASA picture of the day' clearly states a specific action and resource, distinguishing it from the sibling tool getCurrentDate. However, it does not mention the optional date parameter, slightly narrowing the scope implied by the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs the sibling getCurrentDate. The intended context is implied by the name, but there are no explicit alternatives or exclusions, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 2 tool updatesv1.0.0
    • First observedgetCurrentDate
    • First observednasaPicOfDayTool

TDQS

C2.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one retrieves a NASA picture of the day, the other retrieves the current date. There is no overlap or ambiguity between them.

Naming Consistency3/5

Both names are in camelCase, but their stylistic patterns differ: 'nasaPicOfDayTool' is a noun phrase with a 'Tool' suffix, while 'getCurrentDate' follows a verb_noun imperative. This inconsistency in naming convention across the small set makes it less coherent.

Tool Count3/5

With only two tools, the server feels thin for a domain as broad as NASA data. The count is borderline, hinting at an incomplete or minimal implementation rather than a well-scoped set.

Completeness1/5

The tool surface is severely incomplete for a NASA MCP server. Many obvious capabilities such as Mars rover photos, near-earth object tracking, or astronomy data are missing, leaving the server with only a trivial utility and a date function.

Maintenance

ActivityInactive
ResponsivenessNo issues

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.
    23
    53 npm
    92
    ISC
  • A
    license
    A
    quality
    C
    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
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    An extensible Model Context Protocol server framework with a plugin architecture, enabling easy addition of API services like the bundled NASA APOD tools for astronomy content.
    8
    8
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that fetches NASA's Astronomy Picture of the Day (APOD) for a given date, returning title, explanation, and image URLs.
    -