Local astronomical data-reduction copilot MCP server built on Astropy, Photutils, and Lightkurve
Server exposes 6 well-scoped astronomical tools with complete input schemas and descriptions. Tool names follow verb_noun convention (inspect_fits, aperture_photometry, detect_sources_auto, extract_spectrum, fit_lightcurve, generate_sample_datasets). All parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot predict return structure. Descriptions are adequate (100 - 250 chars) but lack dependency hints and recovery guidance. Error handling is implicit (delegated to core modules, not visible in server.py). No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (5 READ_ONLY, 1 WRITE). Missing: pagination guidance, per-item error reporting for batch operations, and explicit constraints on numeric ranges.
Performs circular aperture photometry on local FITS images with background subtraction and CCD error propagation.
Automatically detects astronomical point sources in a local FITS image using peak-finding and background statistics.
Extracts a 1D spectrum from 2D spectroscopic FITS data with wavelength calibration.
Loads, detrends, and fits periodic / transit signals in a local light curve (FITS binary table or CSV).
Generates out-of-the-box synthetic astronomical sample datasets for testing: 1. 'sample_image.fits': 256x256 image with synthetic stars, background noise, and WCS. 2. 'sample_transit.fits': TESS-style light curve table with an exoplanet transit signal. 3. 'sample_variable_star.csv': Time series of a pulsating sinusoidal variable star.
Inspects headers, HDU structure, celestial WCS, and robust image statistics of a local FITS file.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nesting). Descriptions state 'Returns: Dictionary with...' but do not specify keys, types, or nested structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Five tools are READ_ONLY; one (generate_sample_datasets) is WRITE. Annotations enable agents to reason about safety and retry logic.
Numeric parameters lack explicit min/max constraints. E.g., aperture_radius, threshold_sigma, min_period, max_period have no stated bounds. LLMs may pass invalid values (negative radii, inverted period ranges).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling not visible in server.py. Core modules (fits_io, photometry, lightcurve, etc.) are imported but their error classification and recovery guidance are not documented. LLMs cannot know if errors are retryable or user-fixable.
generate_sample_datasets description (60 chars) is minimal. Does not explain when to call it, what files are created, or how they relate to other tools. Lacks dependency hints.