Skip to main content
Glama
MaxwellCalkin

N2YO Satellite Tracker MCP Server

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
NameRequiredDescriptionDefault
categoryFilterNoFilter results by satellite categoryall
observerAltNoObserver altitude in meters above sea level
observerLatYesObserver latitude in degrees
observerLngYesObserver longitude in degrees
searchRadiusNoSearch radius in degrees (max 90)

Implementation Reference

  • 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"], }, },
  • 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; }
  • 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 || []; }

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