Skip to main content

This is a mcp server Calculate celestial object positions and rise/set times

Project description

mcp-stargazing

Calculate the altitude, rise, and set times of celestial objects (Sun, Moon, planets, stars, and deep-space objects) for any location on Earth.

Features

  • Altitude/Azimuth Calculation: Get elevation and compass direction for any celestial object.
  • Rise/Set Times: Determine when objects appear/disappear above the horizon.
  • Supports:
    • Solar system objects (Sun, Moon, planets)
    • Stars (e.g., "sirius")
    • Deep-space objects (e.g., "andromeda", "orion_nebula")
  • Time Zone Aware: Works with local or UTC times.

Installation

pip install astropy pytz numpy astroquery

Usage

Calculate Altitude/Azimuth

from src.celestial import celestial_pos
from astropy.coordinates import EarthLocation
import pytz
from datetime import datetime

# Observer location (New York)
location = EarthLocation(lat=40.7128, lon=-74.0060)

# Time (local timezone-aware)
local_time = pytz.timezone("America/New_York").localize(datetime(2023, 10, 1, 12, 0))
altitude, azimuth = celestial_pos("sun", location, local_time)
print(f"Sun Position: Altitude={altitude:.1f}°, Azimuth={azimuth:.1f}°")

Calculate Rise/Set Times

from src.celestial import celestial_rise_set

rise, set_ = celestial_rise_set("andromeda", location, local_time.date())
print(f"Andromeda: Rise={rise.iso}, Set={set_.iso}")

API Reference (src/celestial.py)

celestial_pos(celestial_object, observer_location, time)

  • Inputs:
    • celestial_object: Name (e.g., "sun", "andromeda").
    • observer_location: EarthLocation object.
    • time: datetime (timezone-aware) or Astropy Time.
  • Returns: (altitude_degrees, azimuth_degrees).

celestial_rise_set(celestial_object, observer_location, date, horizon=0.0)

  • Inputs:
    • date: Timezone-aware datetime.
    • horizon: Horizon elevation (default: 0°).
  • Returns: (rise_time, set_time) as UTC Time objects.

Testing

Run tests with:

pytest tests/

Key Test Cases (tests/test_celestial.py)

def test_calculate_altitude_deepspace():
    """Test deep-space object resolution."""
    altitude, _ = celestial_pos("andromeda", NYC, Time.now())
    assert -90 <= altitude <= 90

def test_calculate_rise_set_sun():
    """Validate Sun rise/set times."""
    rise, set_ = celestial_rise_set("sun", NYC, datetime(2023, 10, 1))
    assert rise < set_

Project Structure

.
├── src/
│   ├── celestial.py     # Core calculations
│   └── utils.py         # Time/location helpers
├── tests/
│   ├── test_celestial.py
│   └── test_utils.py
└── README.md

Future Work

  • Add support for comets/asteroids.
  • Optimize SIMBAD queries for offline use.

Key Updates:

  1. Deep-Space Support: Added examples for "andromeda" in usage and API docs.
  2. Testing: Highlighted deep-space and edge-case tests.
  3. Dependencies: Added astroquery for SIMBAD integration.
  4. Structure: Clarified file roles and test coverage.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_stargazing-0.1.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file mcp_stargazing-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_stargazing-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for mcp_stargazing-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57ef90c0ee1228a30173b231783fa9dd20640d9c8c34f8a9ee7ad0a84e57bf16
MD5 1309a51479dfbf28fed211b42dd5f1ae
BLAKE2b-256 e46963af555dc98261f2efe6e4aedf511a39f3405a34f64a804d3228bb6bcf75

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page