Nasa Images Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Nasa Images Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A project to search NASA's image library using an MCP server and display images in an interactive UI.
🌟 Features:
screenshot
cd nasa-images-mcp-servernpm installcp .env.example .envEdit the .env file to configure your NASA API key:
NASA_API_KEY=your_api_key_here
PORT=3000npm run build.env fileRate Limits:
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)
npx @kaitoy/nasa-images-mcp-server --stdio#### Run from local build
Pass the --stdio flag to use stdio transport:
node build/index.js --stdio#### Claude Desktop Configuration
Using npx (recommended):
{
"mcpServers": {
"nasa-images": {
"command": "npx",
"args": ["-y", "@kaitoy/nasa-images-mcp-server", "--stdio"],
"env": {
"NASA_API_KEY": "your_api_key_here"
}
}
}
}Using local build:
{
"mcpServers": {
"nasa-images": {
"command": "node",
"args": ["/path/to/nasa-images-mcp-server/build/index.js", "--stdio"],
"env": {
"NASA_API_KEY": "your_api_key_here"
}
}
}
}npm startThe server will start at http://localhost:3000.
PORT=3001 npm startSuitable for local MCP clients (e.g., Claude Desktop) that launch the server as a subprocess.
The latest MCP HTTP transport protocol, suitable for remote or multi-client scenarios.
Key Features:
You can test the server using MCP Inspector:
npx @modelcontextprotocol/inspector http://localhost:3000/mcpnpx @modelcontextprotocol/inspector node /path/to/nasa-images-mcp-server/build/index.js --stdioSteps to connect from a custom client:
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "my-client",
"version": "1.0.0"
}
}
}'The response headers will include mcp-session-id.
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: <your-session-id>" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}'curl -X GET "http://localhost:3000/mcp" \
-H "mcp-session-id: <your-session-id>" \
-H "Accept: text/event-stream"| Endpoint | Method | Description |
|---|---|---|
/ | GET | Server information and endpoint list |
/health | GET | Health check (includes active session count) |
/mcp | POST | JSON-RPC requests (initialization, tool calls, etc.) |
/mcp | GET | SSE stream (for server notifications) |
/mcp | DELETE | Close session |
search_nasa_imagesSearch NASA's image library.
Parameters:
query (string, required): Search query (e.g., "apollo 11", "mars rover")Usage Example (JSON-RPC):
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_nasa_images",
"arguments": {
"query": "apollo 11 moon landing"
}
}
}get_next_imageDisplay the next image from the current search results.
Parameters: None
Usage Example (JSON-RPC):
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_next_image",
"arguments": {}
}
}nasa-image://currentGet the URL of the currently displayed image.
MIME Type: text/uri-list
ui://nasa-images/viewerHTML UI resource for the image viewer.
MIME Type: text/html;profile=mcp-app
┌─────────────────────────────────────────────┐
│ MCP Client (Claude Desktop, etc.) │
│ ↕ stdin/stdout │
└───────────────────┼─────────────────────────┘
│
┌───────────────────┼─────────────────────────┐
│ NASA Images MCP Server │
│ ┌────────────────┴──────────────────────┐ │
│ │ StdioServerTransport │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ McpServer (MCP Apps Pattern) │ │
│ │ - registerAppTool(search_nasa...) │ │
│ │ - registerAppTool(get_next_image) │ │
│ │ - registerAppResource(viewer UI) │ │
│ │ - registerResource(image URL) │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ Session Manager │ │
│ │ - Manage search state per user │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ NASA API Client │ │
│ │ - Image search │ │
│ │ - Image URL retrieval │ │
│ └───────────────────────────────────────┘ │
└───────────────────┼─────────────────────────┘
│ HTTPS
┌───────────────────┼─────────────────────────┐
│ NASA Images API │
│ https://images-api.nasa.gov/search │
└─────────────────────────────────────────────┘┌─────────────────────────────────────────────┐
│ MCP Client (Inspector, Custom App) │
│ │
│ ┌────────────────────────────────────────┐ │
│ │ HTTP Client │ │
│ │ - POST /mcp (JSON-RPC requests) │ │
│ │ - GET /mcp (SSE stream) │ │
│ └────────────────────────────────────────┘ │
│ ↕ │
└───────────────────┼─────────────────────────┘
│ HTTP/SSE
┌───────────────────┼─────────────────────────┐
│ NASA Images MCP Server (Express) │
│ ┌────────────────┴──────────────────────┐ │
│ │ StreamableHTTPServerTransport │ │
│ │ - Session management │ │
│ │ - JSON-RPC over HTTP │ │
│ │ - SSE for notifications │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ McpServer (MCP Apps Pattern) │ │
│ │ - registerAppTool(search_nasa...) │ │
│ │ - registerAppTool(get_next_image) │ │
│ │ - registerAppResource(viewer UI) │ │
│ │ - registerResource(image URL) │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ Session Manager │ │
│ │ - Manage search state per user │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ NASA API Client │ │
│ │ - Image search │ │
│ │ - Image URL retrieval │ │
│ └───────────────────────────────────────┘ │
└───────────────────┼─────────────────────────┘
│ HTTPS
┌───────────────────┼─────────────────────────┐
│ NASA Images API │
│ https://images-api.nasa.gov/search │
└─────────────────────────────────────────────┘npm run watchAutomatically rebuilds when files change.
npm run devBuilds and immediately starts the server.
Error: listen EADDRINUSE: address already in useSolution: Specify a different port:
PORT=3001 npm startRun:
npm run buildto compile TypeScript.
DEMO_KEY, obtain your own API key from api.nasa.govThe client must accept both MIME types:
application/jsontext/event-streamcurl -H "Accept: application/json, text/event-stream" ...Save the mcp-session-id header returned after the initialization request and send it as the mcp-session-id header in subsequent requests.
MIT
Pull requests are welcome! Bug reports and feature requests are accepted via Issues.
If you encounter issues, please create an Issue or refer to the NASA API support page.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.