NASA PDS MCP Server for Planetary Data Discovery
Discover NASA planetary data with the MCP server and access PDS data products from the 1960s to today.
npx -y @NASA-PDS/pds-mcp-serverOverview
The NASA PDS MCP Server implements the Model Context Protocol (MCP) to make Planetary Data System (PDS) products discoverable and accessible via a consistent HTTP API. The server indexes PDS archive metadata (PDS4 labels and other catalog metadata) and exposes it so clients and applications can discover data products, explore collections, and retrieve access URLs across missions from the 1960s to the present.
For developers, the MCP server provides a lightweight, API-first way to query PDS holdings without having to crawl or parse label files directly. It is useful for building search UIs, analytics pipelines, data brokers, or automated ingest systems that need programmatic access to planetary science data. The repository, tools, and example configuration make it straightforward to run locally, in containers, or as part of a cloud deployment.
Features
- Implements the Model Context Protocol (MCP) API for PDS data discovery
- Indexing of PDS4 labels and product metadata across missions and instruments
- HTTP API for collections, products, and metadata search
- Docker-friendly and suitable for cloud deployment
- Open-source: repository and issue tracking on GitHub
- Pluggable configuration for index sources, caching, and authentication
- Swagger/OpenAPI schema and example clients for quick integration
Installation / Configuration
Prerequisites:
- Docker (recommended) or a JVM runtime if running a native build (see project docs)
- Git
Clone the repository:
Run with Docker (recommended):
# Build the image (optional if images are published)
# Run the server, exposing port 8080 and mounting a local data directory
Run locally (development mode)
# If the project uses a language-specific build tool, replace with the appropriate command.
# Example (if Java + Maven):
# mvn spring-boot:run
# Or invoke the executable/jar:
Basic configuration (example config.yml)
server:
port: 8080
index:
dataDirs:
- /var/lib/pds-mcp/data
refreshIntervalMinutes: 60
logging:
level: INFO
Common environment variables / configuration options
| Variable / Key | Purpose |
|---|---|
| MCP_PORT / server.port | HTTP port for the MCP API (default: 8080) |
| index.dataDirs | Paths (or mounted volumes) containing PDS index files / labels |
| index.refreshIntervalMinutes | How often to refresh the index from source files |
| logging.level | Log verbosity (DEBUG, INFO, WARN, ERROR) |
See the repository README and config examples for the full set of options and advanced configuration (authentication, storage backends).
Available Resources
- Source code and issue tracker: https://github.com/NASA-PDS/pds-mcp-server
- API schema / OpenAPI: look for openapi.yaml or /openapi.json in the repo or served by the running service (commonly at /swagger or /openapi.json)
- Sample data and test fixtures: repository contains sample index/label files to exercise the server
- Client examples: language snippets (curl, Python, JavaScript) are often included in the repo or API docs
Use Cases
- Search for products by instrument and time range (curl)
This returns metadata records matching the instrument and temporal constraints, including product IDs and access URLs.
- List collections for a mission (curl)
Use the collections endpoint to enumerate logical groupings of products (e.g., mission, instrument, data level).
- Integrate with a Python client
=
=
=
This pattern allows downstream pipelines to fetch metadata and then download data files for processing.
- Build a web-based discovery UI
- Use the MCP API endpoints as the backing API for an interactive search interface (filters, faceting, time sliders).
- The OpenAPI/Swagger schema can drive autogenerated client code or API explorers.
- Automate bulk retrieval
- Query for products matching search criteria, then iterate product access URLs in a script to download archives or stage data into cloud storage.
Tips for Developers
- Start with the provided sample index files so you can exercise the API without needing a full PDS archive.
- Use Docker mounts for index directories to update files without rebuilding the container.
- Check the OpenAPI schema served by the running server to discover exact endpoints and request/response formats.
- Monitor logs and increase logging verbosity while configuring indexing and data-source paths.
For full implementation details and advanced configuration, consult the repository: https://github.com/NASA-PDS/pds-mcp-server.