Skip to main content
Glama

jpl_sbdb

Search for asteroid and comet data, including close approach details, using the Small-Body Database via NASA’s MCP Server to access space-related information.

Instructions

Small-Body Database (SBDB) - asteroid and comet data

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cadNoInclude close approach data
sstrYesSearch string (e.g., asteroid name, number, or designation)

Implementation Reference

  • Main execution logic for the 'jpl_sbdb' tool: constructs JPL SBDB API request, transforms parameters, fetches data via axios, and formats response.
    export async function jplSbdbHandler(params: SbdbParams) { try { const { sstr, full_precision, solution_epoch, orbit_class, body_type, phys_par, close_approach, ca_time, ca_dist, ca_tbl, format } = params; // Construct the SBDB query URL const url = 'https://ssd-api.jpl.nasa.gov/sbdb.api'; // Prepare the query parameters const queryParams: Record<string, any> = { sstr }; // Add optional parameters if (full_precision) queryParams.full_precision = full_precision ? 'yes' : 'no'; if (solution_epoch) queryParams.solution_epoch = solution_epoch; if (orbit_class) queryParams.orbit_class = orbit_class ? 'yes' : 'no'; if (body_type !== 'all') queryParams.body_type = body_type; if (phys_par) queryParams.phys_par = phys_par ? 'yes' : 'no'; if (close_approach) queryParams.close_approach = close_approach ? 'yes' : 'no'; if (ca_time !== 'all') queryParams.ca_time = ca_time; if (ca_dist !== 'au') queryParams.ca_dist = ca_dist; if (ca_tbl !== 'approach') queryParams.ca_tbl = ca_tbl; if (format !== 'json') queryParams.format = format; // Transform parameter names from underscore to hyphenated format const transformedParams = transformParamsToHyphenated(queryParams); // Make the request to SBDB API const response = await axios.get(url, { params: transformedParams }); // Return the response return { content: [ { type: "text", text: `Retrieved data for small body "${params.sstr}".` }, { type: "text", text: JSON.stringify(response.data, null, 2) } ], isError: false }; } catch (error: any) { console.error('Error in JPL SBDB handler:', error); return { isError: true, content: [{ type: "text", text: `Error: ${error.message || 'An unexpected error occurred'}` }] }; } }
  • Zod input schema sbdbParamsSchema defining parameters for the JPL SBDB tool.
    export const sbdbParamsSchema = z.object({ sstr: z.string().min(1), full_precision: z.boolean().optional().default(false), solution_epoch: z.string().optional(), orbit_class: z.boolean().optional().default(false), body_type: z.enum(['ast', 'com', 'all']).optional().default('all'), phys_par: z.boolean().optional().default(false), close_approach: z.boolean().optional().default(false), ca_time: z.enum(['all', 'now', 'fut', 'past']).optional().default('all'), ca_dist: z.enum(['au', 'ld', 'lu']).optional().default('au'), ca_tbl: z.enum(['elem', 'approach']).optional().default('approach'), format: z.enum(['json', 'xml']).optional().default('json') });
  • src/index.ts:503-506 (registration)
    Tool registration in tools/manifest response listing 'jpl_sbdb' tool.
    name: "jpl_sbdb", id: "jpl/sbdb", description: "Small-Body DataBase (SBDB) - primarily orbital data on all known asteroids and comets" },
  • src/index.ts:1032-1048 (registration)
    Detailed tool registration in tools/list including name, description, and inputSchema for 'jpl_sbdb'.
    name: "jpl_sbdb", description: "Small-Body Database (SBDB) - asteroid and comet data", inputSchema: { type: "object", properties: { sstr: { type: "string", description: "Search string (e.g., asteroid name, number, or designation)" }, cad: { type: "boolean", description: "Include close approach data" } }, required: ["sstr"] } },
  • Helper utility transformParamsToHyphenated used by jplSbdbHandler to convert underscore param names to hyphens for JPL API.
    export function transformParamsToHyphenated(params: Record<string, any>): Record<string, any> { const transformed: Record<string, any> = {}; for (const [key, value] of Object.entries(params)) { // Replace underscores with hyphens for parameter names const transformedKey = key.replace(/_/g, '-'); transformed[transformedKey] = value; } return transformed; }

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/ProgramComputer/NASA-MCP-server'

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