mcp观星助手添加福利群:解决AI开发者的「MCP实战痛点」计算地球上任何位置的天体(太阳、月亮、行星、恒星和深空天体)的高度、升起时间和落下时间,并可选地进行光污染分析。
pip install astropy pytz numpy astroquery rasterio geopy
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}°")

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}")

from src.light_pollution import load_map
# Load a GeoTIFF light pollution map
vriis_data, bounds, crs, transform = load_map("path/to/map.tif")
print(f"Map Bounds: {bounds}")

celestial_pos(celestial_object, observer_location, time) (src/celestial.py)celestial_object:名称(例如,"sun","andromeda")。observer_location:EarthLocation 对象。time:带时区的 datetime 或 Astropy 的 Time。(altitude_degrees, azimuth_degrees)。celestial_rise_set(celestial_object, observer_location, date, horizon=0.0) (src/celestial.py)date:带时区的 datetime。horizon:地平线高度(默认:0°)。Time 对象的 (rise_time, set_time)。load_map(map_path) (src/light_pollution.py)map_path:指向 GeoTIFF 文件的路径。(vriis_data, bounds, crs, transform)。运行测试:
pytest tests/
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_

. ├── src/ │ ├── celestial.py # Core celestial calculations │ ├── light_pollution.py # Light pollution map utilities │ ├── utils.py # Time/location helpers │ └── main.py # CLI entry point ├── tests/ │ ├── test_celestial.py │ └── test_utils.py └── README.md
light_pollution.py。rasterio 和 geopy。