
Nasa Images
io.github.kaitoyPublished by GitHub account kaitoyv1.1.3Updated Oct 24, 2026
MCP server with UI for NASA images
Overview
Searches NASA's image library by keyword and shows results in an interactive image viewer, with sequential browsing of matches.
- What you can do
- Search NASA's image library by keyword through the NASA Images API
- Step through the current search results one image at a time
- Expose the URL of the currently displayed image as a resource
- Render an interactive HTML image viewer UI inside the client
- When to use it
- Useful when you want an assistant to find NASA photos or mission imagery on a topic and browse the results visually, for example for research, education or presentation material.
- Requirements
- Runs locally as a Node.js package (Node.js 18 or higher, npm or yarn) over stdio, or as an HTTP server on a port such as 3000. Needs a NASA API key supplied in the NASA_API_KEY environment variable, obtainable free from NASA, and outbound HTTPS access to the NASA Images API.
Installation
In SourceWeft
- Open Nasa Images in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
NASA Images MCP Server
A project to search NASA's image library using an MCP server and display images in an interactive UI.
🌟 Features:
- Dual Transport Support: Supports both stdio and Streamable HTTP transport
- Image Search: Search by keywords using NASA's Images API
- Interactive UI: Beautiful image viewer using MCP Apps Pattern
- Image Navigation: Display search results sequentially
- Session Management: Stateful session management
Requirements
- Node.js 18 or higher
- npm or yarn
- NASA API Key (get free at nasa.gov/api)
Installation
- Clone the repository:
- Install dependencies:
- Set up environment variables:
Edit the .env file to configure your NASA API key:
- Build:
Getting a NASA API Key
- Visit https://api.nasa.gov/
- Enter your name and email address in the form
- The API key will be sent to your email immediately
- Add it to your
.envfile
Rate Limits:
- DEMO_KEY: 30 requests/hour, 50 requests/day
- Registered key: 1000 requests/hour
Usage
stdio Mode (Recommended for MCP Clients like Claude Desktop)
In stdio mode, the server communicates via stdin/stdout — no HTTP server is started. Logs are written to stderr.
Run with npx (no installation required)
Run from local build
Pass the --stdio flag to use stdio transport:
Claude Desktop Configuration
Using npx (recommended):
Using local build:
HTTP Server Mode
The server will start at http://localhost:3000.
Start on a Different Port
About Transports
stdio Transport
Suitable for local MCP clients (e.g., Claude Desktop) that launch the server as a subprocess.
- Communicates via stdin/stdout
- Single session per process
- No network configuration required
Streamable HTTP Transport
The latest MCP HTTP transport protocol, suitable for remote or multi-client scenarios.
Key Features:
- ✅ Stateful Sessions: Issues a unique session ID for each client
- ✅ SSE Support: Supports push notifications from the server via Server-Sent Events
- ✅ JSON-RPC over HTTP: Communication via standard HTTP request/response
- ✅ Session Management: Automatic session lifecycle management
Integration with MCP Clients
Connecting with MCP Inspector (HTTP mode)
You can test the server using MCP Inspector:
Connecting with MCP Inspector (stdio mode)
Using with Custom MCP Clients
Steps to connect from a custom client:
- Initialize Request (POST /mcp):
The response headers will include mcp-session-id.
- Subsequent Requests:
- SSE Stream (GET /mcp):
Endpoints
Available Tools
1. search_nasa_images
Search NASA's image library.
Parameters:
query(string, required): Search query (e.g., "apollo 11", "mars rover")
Usage Example (JSON-RPC):
2. get_next_image
Display the next image from the current search results.
Parameters: None
Usage Example (JSON-RPC):
Available Resources
nasa-image://current
Get the URL of the currently displayed image.
MIME Type: text/uri-list
ui://nasa-images/viewer
HTML UI resource for the image viewer.
MIME Type: text/html;profile=mcp-app
Architecture
stdio Mode
HTTP Mode
Main Components
- src/index.ts: Express server and transport management
- src/mcp-server.ts: MCP server logic (tool and resource registration)
- src/session-manager.ts: Session management (search state persistence)
- src/nasa-api.ts: NASA API client
- src/types.ts: TypeScript type definitions
Development
Watch Mode
Automatically rebuilds when files change.
Development Mode
Builds and immediately starts the server.
Troubleshooting
Port Already in Use
Solution: Specify a different port:
"Cannot find module" Error
Run:
to compile TypeScript.
API Rate Limit Error
- If using
DEMO_KEY, obtain your own API key from api.nasa.gov - Limited to 30 requests per hour
"Not Acceptable" Error
The client must accept both MIME types:
application/jsontext/event-stream
Session Not Found
Save the mcp-session-id header returned after the initialization request and send it as the mcp-session-id header in subsequent requests.
Security Notes
- This server has CORS enabled (for development)
- In production, implement proper CORS settings and rate limiting
- Manage NASA API keys via environment variables; do not hardcode them
License
MIT
References
- Model Context Protocol Specification
- MCP TypeScript SDK
- MCP Apps Extension
- Streamable HTTP Transport
- NASA Images API
- NASA Open APIs
Contributing
Pull requests are welcome! Bug reports and feature requests are accepted via Issues.
Support
If you encounter issues, please create an Issue or refer to the NASA API support page.
Source: README.md at commit cda5828
Tools
0Version history
1- v1.1.3LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts