get_visual_passes
Track upcoming satellite visual passes from your location by entering NORAD ID, coordinates, and optional parameters like days ahead and minimum visibility duration.
Instructions
Get upcoming visual passes of a satellite for an observer location
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look ahead (max 10) | |
| minVisibility | No | Minimum visibility in seconds (max 300) | |
| noradId | Yes | NORAD catalog number of the satellite | |
| observerAlt | No | Observer altitude in meters above sea level | |
| observerLat | Yes | Observer latitude in degrees | |
| observerLng | Yes | Observer longitude in degrees |
Implementation Reference
- src/server.ts:175-218 (registration)Tool registration in getTools() method, including name, description, and detailed input schema for get_visual_passes.{ name: "get_visual_passes", description: "Get upcoming visual passes of a satellite for an observer location", inputSchema: { type: "object", properties: { noradId: { type: "string", description: "NORAD catalog number of the satellite", }, observerLat: { type: "number", description: "Observer latitude in degrees", minimum: -90, maximum: 90, }, observerLng: { type: "number", description: "Observer longitude in degrees", minimum: -180, maximum: 180, }, observerAlt: { type: "number", description: "Observer altitude in meters above sea level", default: 0, }, days: { type: "number", description: "Number of days to look ahead (max 10)", default: 10, maximum: 10, }, minVisibility: { type: "number", description: "Minimum visibility in seconds (max 300)", default: 300, maximum: 300, }, }, required: ["noradId", "observerLat", "observerLng"], }, },
- src/server.ts:943-963 (handler)Primary MCP tool handler: validates arguments, fetches visual passes from N2YO client, and returns formatted JSON result.private async getVisualPasses(args: any): Promise<CallToolResult> { SatelliteValidator.validateVisualPassRequest(args); const passes = await this.n2yoClient.getVisualPasses( args.noradId, args.observerLat, args.observerLng, args.observerAlt || 0, args.days || 10, args.minVisibility || 300 ); return { content: [ { type: "text", text: JSON.stringify({ passes, count: passes.length }, null, 2), }, ], }; }
- src/n2yo-client.ts:360-378 (helper)N2YOClient helper method that constructs and calls the N2YO API for visual passes (with mock implementation).async getVisualPasses( noradId: string, observerLat: number, observerLng: number, observerAlt: number = 0, days: number = 10, minVisibility: number = 300 ): Promise<VisualPass[]> { const response = await this.makeRequest(`/visualpasses/${noradId}/${observerLat}/${observerLng}/${observerAlt}/${days}/${minVisibility}`, { id: noradId, observer_lat: observerLat, observer_lng: observerLng, observer_alt: observerAlt, days, min_visibility: minVisibility, }); return response.passes || []; }
- src/n2yo-client.ts:19-34 (schema)TypeScript interface defining the structure of visual pass data returned by the tool.export interface VisualPass { startAz: number; startAzCompass: string; startEl: number; startUTC: number; maxAz: number; maxAzCompass: string; maxEl: number; maxUTC: number; endAz: number; endAzCompass: string; endEl: number; endUTC: number; mag: number; duration: number; }