Skip to main content
Glama
MaxwellCalkin

N2YO Satellite Tracker MCP Server

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
NameRequiredDescriptionDefault
daysNoNumber of days to look ahead (max 10)
minVisibilityNoMinimum visibility in seconds (max 300)
noradIdYesNORAD catalog number of the satellite
observerAltNoObserver altitude in meters above sea level
observerLatYesObserver latitude in degrees
observerLngYesObserver 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"], }, },
  • 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), }, ], }; }
  • 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 || []; }
  • 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; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MaxwellCalkin/N2YO-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server