Skip to main content
Glama
NASA PDS Registry MCP Server

NASA PDS Registry MCP Server

Official
by NASA-PDS

Agentic Search for the NASA Planetary Data System

An MCP server and reproducible evaluation of multistep natural-language search over the NASA Planetary Data System (PDS) Registry -- the digital data archive for all of NASA's planetary missions, flight and ground-based observations, and laboratory experiments from the 1960s to the present. With more than 1.85 petabytes from 70+ missions, 4,500 datasets, and 700 instruments all peer-reviewed by JPL and other research institutions.

Evaluation study · Results · Dataset · Data engine · Benchmark and reproducibility · MCP server · Development guide

https://github.com/user-attachments/assets/1d6b7035-c07a-4ca3-8bd2-9c19d68c3d5c

Abstract

The NASA Planetary Data System (PDS) serves as a high-quality, hand-curated data source for the whole community of planetary research. However, searching the PDS Registry is difficult, requiring knowledge of exact PDS4 ontology fields and context identifiers to manually construct queries for its public search APIs. The research chain of scientific question -> experimentation -> findings/results is thus bottlenecked by current PDS search capabilities.

We introduce PDS-MCP, an agentic search interface on top of the NASA PDS Registry. From natural language questions, our agent can iteratively resolve PDS entities, inspect relationships, construct valid filters, and retrieve matching products autonomously constructing PDS API queries with no manual human intervention. We evaluate this on our 300-question benchmark, constructed from our scalable data engine, with results achieving 98.02% macro F1 and 95.67% exact result-set match on our full system, compared with 12.29% and 8.33% for single-call MCP and 0.33% on both metrics without PDS access, demonstrating that it can reliably bridge natural-language questions and structured PDS retrieval.

By releasing PDS-MCP publically, we aim to support the researchers of the Planetary Data Science community by making it easier to access NASA PDS data. Our goal is to provide enhanced search capabilities that enable more effective data exploration and improve accessibility for future research endeavors.

Related MCP server: NASA MCP Server

Evaluation study

Research question

Can a language-model agent reliably translate natural-language planetary-data requests into complete PDS Registry result sets, and does multistep MCP search outperform the same model with one or zero PDS tool calls?

Benchmark

The benchmark dataset contains 300 independent questions:

Dimension

Coverage

Multihop questions with two or three context constraints

225

Single-constraint controls

75

Archive-collection retrieval questions

294

Context lookups

6

Target result-set size

1–98 PDS identifiers

Data Engine

The complete benchmark data engine and its dataset documentation are included in this repository.

Ground truth was constructed as follows:

Select compatible PDS context objects → Build a PDS API query → Compile and execute it against the live PDS API → Save search results as target → Derive a natural-language questions as inputs

For each benchmark item,

  • input: the natural-language question

  • target: the desired search results (from the intermediary PDS query)

Thus, the job of the agent run on the benchmark is to use the NLQ to build a PDS API query (without knowledge of the original one used in the data engine) and get the target search results.

Conditions

Condition

Model

PDS access

Purpose

Baseline

GPT-5.6 Luna

None

The same LLM without PDS-MCP or access to the PDS search interface.

Single-call MCP

GPT-5.6 Luna

At most one live MCP call

Tests whether tool availability without iterative search is sufficient.

Multistep MCP (ours)

GPT-5.6 Luna

Iterative live MCP calls

Tests entity resolution, refinement, and collection retrieval.

Results

Same-model PDS retrieval performance across baseline, single-call MCP, and multistep MCP conditions

Condition

Macro precision

Macro recall

Macro F1

Exact match

Mean calls

Mean latency

Baseline

0.33%

0.33%

0.33%

0.33%

0.00

8.00 s

Single-call MCP

13.62%

11.71%

12.29%

8.33%

1.01

29.86 s

Multistep MCP (ours)

98.18%

97.97%

98.02%

95.67%

5.28

47.24 s

Diagnostic analyses

How multistep search works

A request such as:

Find PDS collections from the New Horizons Kuiper Belt Extended Mission 1, collected by the Radio Science Experiment, targeting Arrokoth.

requires the agent to resolve several ontology objects before retrieving data:

  1. Resolve the KEM1 investigation identifier.

  2. Resolve the New Horizons REX instrument identifier.

  3. Resolve Arrokoth and its PDS target identifier.

  4. Search collections using the compatible investigation, instrument, and target constraints.

  5. Return the complete normalized collection-identifier set.

This mirrors the work a user would otherwise perform manually when discovering PDS4 context identifiers and exact Registry filters.

Benchmark and reproducibility

Readers interested in the benchmark can start with the research/data guide. The underlying pds_research data engine samples compatible PDS entities, builds and validates typed query plans, executes live API requests, and writes the resulting questions and target identifier sets.

Artifact

Description

research/data/README.md

Dataset documentation and links to its construction pipeline.

main-300-live.jsonl

Questions, typed query plans, API requests, ground-truth identifiers, difficulty labels, and provenance.

src/pds_research/

Benchmark-generation, validation, query-compilation, and evaluation code.

codex-baseline-main-300-gpt-5.6-luna.jsonl

Raw baseline predictions from the LLM without PDS-MCP or PDS search access.

codex-live-single-call-main-300-gpt-5.6-luna.jsonl

Raw single-call predictions.

codex-live-main-300-gpt-5.6-luna.jsonl

Raw multistep predictions.

three-condition-comparison.csv

Graph-ready aggregate comparison.

three-condition-comparison.json

Machine-readable metrics and resource measurements.

tool-call analysis

Multistep hop-count distribution and exact accuracy by call count.

figures/

Headline, difficulty, retrieval-error, and trajectory-length figures in PNG and SVG formats.

generate_research_figures.py

Dependency-free script that regenerates the supporting SVG figures from committed metrics.

Recompute identifier-set metrics with:

pds-research score \
  research/data/main-300-live.jsonl \
  research/results/codex-live-main-300-gpt-5.6-luna.jsonl

See DEVELOPMENT.md for environment setup, server execution, MCP client configuration, and test commands.

MCP server

The FastMCP server in src/pds_mcp_server.py exposes live PDS Registry operations for:

  • Investigation, target, instrument-host, and instrument search.

  • Context-product traversal.

  • Collection search by investigation, target, instrument, and host.

  • Detailed product retrieval by PDS identifier.

The server can be used from Claude Desktop, Cursor, Codex, or another MCP-compatible host. Setup instructions are in DEVELOPMENT.md.

Example research queries

  • Find Apollo 17 collections produced by the Lunar Surface Experiments Package Heat Flow Experiment and targeting the Moon.

  • Find InSight collections produced by the Auxiliary Payload Sensor Subsystem temperature and wind sensor and targeting Mars.

  • Find Cassini collections produced by the Imaging Science Subsystem Wide Angle camera and hosted on the Cassini Orbiter.

  • Find New Horizons KEM1 radio-science collections targeting Arrokoth.

These examples are drawn from the released benchmark; the complete set is available in main-300-live.jsonl.

License

Code is released under the MIT License.

Support

  • PDS Registry API: contact pds-operator@jpl.nasa.gov or open an issue in the PDS API repository.

  • This server and study: open an issue in this repository.

Available Tools

7 tools
crawl_context_productCrawl Context ProductA

Crawl a single PDS Context product and return other PDS Context products it is associated with. Ex. Mars 2020: Perseverance Rover (Investigation) is associated with Mars (Target) and Mastcam (Instrument), so it returns Mars and Mastcam.

WARNING: Takes a long time to run and performs several sequential API calls. Use wisely.

Inputs: urn (required).

get_productGet ProductB

Get a single PDS product by its URN identifier.

Inputs: urn (required). Returns: result

search_collectionsSearch CollectionsB

Search PDS data collections filtered by instrument, target, instrument host, or investigation. Example: Mars Reconnaissance Orbiter HiRISE data collections targeting Mars.

Inputs: limit, ref_lid_target, ref_lid_instrument, ref_lid_investigation, +1 more. Returns: result

search_instrument_hostsSearch Instrument HostsA

Search PDS Context products that are Instrument Hosts (spacecraft, rovers, telescopes).

Instrument Hosts are platforms that carry scientific instruments: spacecraft, rovers, landers, telescopes. Example: Cassini Orbiter - urn:nasa:pds:context:instrument_host:spacecraft.cassini

Use for queries about specific spacecraft, rovers, or platforms that carry instruments.

Inputs: limit, keywords, instrument_host_type. Returns: result

search_instrumentsSearch InstrumentsA

Search the latest-versioned instances of PDS Context products that are Instruments.

Instruments are scientific devices (cameras, spectrometers, etc.) used on spacecraft to collect data. Example: Cassini RADAR - urn:nasa:pds:context:instrument:radar.cassini

Use for queries about specific instruments, instrument types, or instruments on missions/spacecraft.

Inputs: limit, keywords, instrument_type. Returns: result

search_investigationsSearch InvestigationsA

Search PDS Context products that are Investigations (missions/projects).

Investigations are organized missions or projects that collect scientific data. Example: Cassini-Huygens - urn:nasa:pds:context:investigation:mission.cassini-huygens

Use for queries about space missions, mission timelines, or finding missions that studied specific targets.

Inputs: limit, keywords. Returns: result

search_targetsSearch TargetsA

Search PDS Context products that are Targets (celestial bodies, phenomena).

Targets are objects of scientific study: planets, moons, asteroids, comets, etc. Example: Mars - urn:nasa:pds:context:target:planet.mars

Use for queries about specific celestial bodies, finding targets by type, or targets studied by missions.

Inputs: limit, keywords, target_type. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 7 tools

    Disambiguation5/5

    The four search_* tools map cleanly onto distinct PDS Context product types (Investigations, Targets, Instrument Hosts, Instruments), and descriptions reinforce the boundaries. crawl_context_product, search_collections, and get_product each target clearly different operations, leaving little room for misselection.

    Naming Consistency5/5

    All tool names follow a predictable verb_noun snake_case pattern (search_investigations, crawl_context_product, get_product). The search_ prefix is used consistently for the five query tools, and the verb choices accurately reflect each operation.

    Tool Count5/5

    Seven tools is well-scoped for a specialized registry query server, with each tool earning its place by covering a distinct resource or operation. Nothing feels redundant or missing count-wise.

    Completeness4/5

    Core workflows are covered: search across the four context types, search collections, traverse associations, and fetch by URN. Minor gaps exist—no dedicated search_products or bundle search, and the only product retrieval is by exact URN, but agents can largely work around these.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Provides standardized access to 20+ NASA data sources including astronomy pictures, Mars rover photos, near-Earth objects, satellite imagery, space weather, and planetary data through a unified interface optimized for AI consumption.
      23
      13 npm
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides access to NASA's public APIs including Astronomy Picture of the Day, Mars Rover Images, and Near Earth Objects data, enabling users to query and retrieve space-related information through natural language.
      24 PyPI
      5
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables querying of the Cassini-Huygens mission dataset with tools for listing, searching, counting, aggregating, and browsing activities.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables querying NASA Exoplanet Archive data using ADQL TAP, planet search, composite parameters, Kepler candidates, and microlensing events.
      112 npm
      MIT