get_satellites_above
Retrieve real-time satellite data above a specific location by inputting latitude, longitude, and optional parameters like altitude, radius, and category filter for accurate tracking.
Instructions
Get all satellites currently above an observer location
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| categoryFilter | No | Filter results by satellite category | all |
| observerAlt | No | Observer altitude in meters above sea level | |
| observerLat | Yes | Observer latitude in degrees | |
| observerLng | Yes | Observer longitude in degrees | |
| searchRadius | No | Search radius in degrees (max 90) |
Implementation Reference
- src/server.ts:965-993 (handler)Main MCP tool handler: validates args, computes categoryId, fetches satellites via N2YOClient, returns JSON response with count.private async getSatellitesAbove(args: any): Promise<CallToolResult> { SatelliteValidator.validateAboveRequest(args); const categoryId = args.categoryFilter && args.categoryFilter !== "all" ? this.n2yoClient.getCategoryId(args.categoryFilter) : 0; const satellites = await this.n2yoClient.getSatellitesAbove( args.observerLat, args.observerLng, args.observerAlt || 0, args.searchRadius || 70, categoryId ); return { content: [ { type: "text", text: JSON.stringify( { satellites, count: satellites.length }, null, 2 ), }, ], }; }
- src/server.ts:354-392 (registration)Tool registration in getTools(): defines name, description, and input schema.{ name: "get_satellites_above", description: "Get all satellites currently above an observer location", inputSchema: { type: "object", properties: { 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, }, searchRadius: { type: "number", description: "Search radius in degrees (max 90)", default: 70, maximum: 90, }, categoryFilter: { type: "string", enum: ["all", "military", "weather", "gps", "amateur"], default: "all", description: "Filter results by satellite category", }, }, required: ["observerLat", "observerLng"], }, },
- src/n2yo-client.ts:36-44 (schema)Type definition for satellites above data returned by the API.export interface SatelliteAbove { satid: number; satname: string; intDesignator: string; launchDate: string; satlat: number; satlng: number; satalt: number; }
- src/n2yo-client.ts:380-396 (helper)N2YOClient helper: constructs API endpoint and fetches satellites currently above the observer location.async getSatellitesAbove( observerLat: number, observerLng: number, observerAlt: number = 0, searchRadius: number = 70, categoryFilter: number = 0 ): Promise<SatelliteAbove[]> { const response = await this.makeRequest(`/above/${observerLat}/${observerLng}/${observerAlt}/${searchRadius}/${categoryFilter}`, { observer_lat: observerLat, observer_lng: observerLng, observer_alt: observerAlt, search_radius: searchRadius, category_filter: categoryFilter, }); return response.above || []; }