A Model Context Protocol (MCP) server that provides access to the NASA Planetary Data System (PDS) Registry API using FastMCP.
PDS_MCP_Server_Demo.mov
The NASA PDS MCP server enables human-in-the-loop agentic search and exploration of NASA PDS data products, bundles, and collections through a simple interface, directly integrating with the NASA PDS Registry API.
By open-sourcing this MCP server, we aim to support the researchers of the Planetary Data Science community enabling easy access to NASA PDS data for their future research endeavors.

- Mission & Project Search: Find space missions, investigations, and research projects with filtering by keywords and mission types
- Celestial Body Discovery: Search for planets, moons, asteroids, comets, and other astronomical targets by name or type
- Spacecraft & Platform Search: Locate spacecraft, rovers, landers, telescopes, and other instrument-carrying platforms
- Scientific Instrument Lookup: Find cameras, spectrometers, detectors, and other scientific instruments used in space missions
- Data Collection Exploration: Search and filter data collections by mission, target, instrument, or spacecraft relationships
- Product Relationship Mapping: Discover connections between missions, targets, instruments, and data products
- Detailed Product Information: Retrieve comprehensive metadata and details for specific PDS products using URN identifiers
- Reference Data Access: Access categorized lists of target types, spacecraft types, instrument types, and mission types for filtering and discovery
- Which instrument do seismic observations in the PDS?
- What is the identifier of the moon in the PDS?
- What data is collected from these instruments are targeting the Moon? (include URNs if need be)?
- What missions produced these observations?
- Clone this repository:
git clone https://github.com/NASA-PDS/pds-mcp-server.git
cd pds-mcp-server
- Install dependencies:
Requires Python 3.13+.
python3.13 -m venv {env-name}
source {env-name}/bin/activate
pip install -r requirements.txt
If you need to expose the MCP tools as a server, you can run it, standalone, as follows:
python3.13 pds_mcp_server.py
{
"mcpServers": {
"pds-registry": {
"command": "/path/to/{env-name}/bin/python3.13",
"args": ["/path/to/pds_mcp_server.py"],
"env": {}
}
}
}
We recommend using these instructions in your MCP Client:
You are only allowed to make one tool call per request. In the returned search results, output the URNs (identifiers) as additional information alongside the result. After each message, you will propose to the user what next steps they can take and ask them to choose.
This creates a human-in-the-loop agentic search conversation: allowing the user to control how they want to search through the NASA Planetary Data System.
Example on how to set up in Claude Desktop.
To go beyond 3rd party MCP Hosts (Cursor, Claude Desktop, etc.), we have an example of a custom MCP Host built on Gradio UI, HuggingFace smolagents, and the OpenAI SDK. More here.
npx @modelcontextprotocol/inspector python src/main.py
More on MCP Inspector here.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Requires Python 3.13+. Library dependencies listed in requirements.txt
.
This project is licensed under the MIT License - see the LICENSE file for details.
For issues related to:
- PDS Registry API: Contact [email protected] or open an issue here
- This MCP Server: Open an issue in this repository
- MCP Protocol: Check the MCP documentation or FastMCP documentation