CelestialMCP
为Claude等AI助手设计的模型上下文协议(MCP)服务器。它提供了访问天文数据的工具,如天体位置、上升/设定时间、能见度和目录信息。
概述
CelestialMCP使用mcp框架构建,并利用天文学引擎库提供精确的天文计算。它提供了几种工具来确定天体的位置,计算它们的上升和设定时间,并列出恒星和深空天体目录中的可用天体。
特性
- 实时天体数据:访问各种天体的当前天文数据。
- 综合对象详细信息:检索赤道和水平(高度/方位角)坐标、能见度状态、上升/过境/设定时间。
- 专业数据:对于相关物体,获取距离(太阳系物体)、相位照明(月球和行星)和即将到来的月相(月球)。
- 广泛的目录:利用本地目录:
- 太阳系天体(太阳、月球、行星)。 - 恒星(例如,来自HYG数据库)。 - 深空天体(DSO),包括梅西耶、NGC和IC天体。
- 可配置观察器:所有计算均基于预先配置的观察者位置(默认值:加拿大温哥华)和当前系统时间。
- 轻松目录更新:包括一个下载和更新综合天文目录的脚本。
工具
服务器为AI提供了三个主要工具:
getCelestialDetails:检索特定天体的详细天文信息。listCelestialObjects:列出系统已知的可用天体,可按类别过滤。getStarHoppingPath:计算从明亮的起始恒星到目标天体的跳星路径。
设置和安装
先决条件
- Node.js(版本>=18.19.0,如中所述
package.json) - npm(通常随Node.js一起提供)
步骤
- 克隆存储库(如果您还没有):
git clone https://github.com/Rkm1999/CelestialMCP
cd CelestialMCP- 安装依赖项:
npm install- 下载天文目录:
这一步对于访问各种恒星和深空物体至关重要。
npm run fetch-catalogs此脚本将HYG恒星数据库和OpenNGC(新通用目录)深空天体目录下载到 data/ 目录。如果未下载这些文件,应用程序将尝试使用 sample_stars.csv 和 sample_dso.csv 从 data/ 目录(如果存在)。如果找不到目录文件,则相应的目录将为空。
- 构建项目:
这将TypeScript代码编译为JavaScript。
npm run build- 启动服务器:
npm startMCP服务器将启动,连接的AI助手将可以使用这些工具。
与Claude Desktop一起使用
要将CelestialMCP与Claude Desktop一起用于本地开发,请将以下配置添加到您的Claude Desktop配置文件中:
# Install dependencies
npm install
# Fetch star and deep sky object catalogs (IMPORTANT!)
npm run fetch-catalogs
# Build the project
npm run build
# Start the server
npm startWindows:%APPDATA%/Claude/Claude_desktop_config json MacOS:~/库/应用程序支持/Claude/Claude_desktop_config json
{ “mcpServers”:{ “CelestialMCP”:{ “command”:“node”,//或者您的节点可执行路径 “args”:\[“/aolutel/path/to/your/CelestialMCP/project/dist/index.js”\]//替换为实际的绝对路径 } } }
目录数据
这 npm run fetch-catalogs 脚本下载:
hygdata_v41.csv:HYG恒星数据库(约120000颗恒星)。ngc.csv:OpenNGC目录(约14000个深空天体)。
这些文件存储在 data/ 目录。如果找不到这些主目录文件,应用程序将尝试加载 sample_stars.csv 和 sample_dso.csv 如果它们存在于 data/ 目录。对于全面的数据,运行 npm run fetch-catalogs 强烈推荐。
工具使用
这些工具执行的所有天文计算都使用 预先配置的观察者位置 (参见 src/config.ts)以及 当前系统时间 当提出请求时。
1. getCelestialDetails
目的: 检索特定天体的全面天文数据。这包括其当前位置(赤道和水平坐标)、能见度(例如,地平线以上/以下、能见度质量)、当天的上升/过境/设定时间,以及相关物体与地球的距离、照明相位和即将到来的月相(月球)。
参数:
objectName(string):天体的名称或目录标识符。该工具可以将常见名称(例如“仙女座星系”)解析为它们的目录ID(例如“M31”)。
*示例:“火星”、“天狼星”、“M42”、“NGC 253”、“猎户座星云”、“月球”、“太阳”*
克劳德提示示例:
- “从配置的位置获取木星的详细信息。”
- “月球的当前坐标是多少?”
- “告诉我织女星的情况,包括它的升起和今天的设定时间。”
- “今晚可以看到漩涡星系(M51)吗?”
- “显示有关太阳当前位置和升起/落下时间的信息。”
2. listCelestialObjects
目的: 列出系统已知的天体,然后可以使用查询 getCelestialDetails。对象可以按类别过滤。这有助于发现哪些对象可用于查询。
参数:
category(字符串,可选):按特定类别筛选对象列表。如果省略,则默认为“全部”。有效类别包括:
- planets:太阳系天体(太阳、月亮、水星、金星、火星、木星、土星、天王星、海王星、冥王星)。 - stars:命名或编目的恒星。 - messier:梅西耶星表中的天体(如M1、M31)。 - ic:索引目录中的对象(例如IC 434)。 - ngc:新总表中的天体(如NGC 7000)。 - dso:所有深空天体(结合梅西耶、IC、NGC和其他DSO,如这些特定目录中没有的普通命名星云或星系(如果有的话))。 - all:所有类别中的所有可用对象(默认)。
克劳德提示示例:
- “列出所有可用的梅西耶天体。”
- “我可以获得哪些行星的信息?”
- “给我看一些明亮的星星,我可以用它仰望
stars类别。" - “列出目录中的所有NGC对象。”
- “什么深空物体(
dso)有空吗?" - “你能列出系统已知的所有对象吗?”
3. getStarHoppingPath
目的: 计算从明亮的起始恒星到目标天体的跳星路径。每一跳都在指定的视场(FOV)内。该工具通过从一颗可识别的恒星“跳跃”到另一颗恒星,帮助观察者手动定位较暗的物体。
参数:
targetObjectName(string):要查找的天体的名称或目录标识符。
*示例:“M13”、“仙女座星系”、“火星”、“NGC 7000”*
fovDegrees(数字,正):用户设备(如双筒望远镜、望远镜目镜)的视场(FOV),单位为度。
*示例:5.0*
maxHopMagnitude(数字,可选,默认值:8.0):跳跃路径中包含的恒星的最大(最暗)恒星星等。较亮的恒星具有较低的星等值。
*示例:7.5*
initialSearchRadiusDegrees(数字,正数,可选,默认值:20.0):目标对象周围的角半径(以度为单位),用于搜索合适的明亮起始恒星。
*示例:25.0*
startStarMagnitudeThreshold(数字,可选,默认值:3.5):恒星在跳跃序列中被视为良好、明亮的“起始恒星”的最大(最暗)星等。
*示例:4.0*
克劳德提示示例:
- “找到一条5度视场的M13跳星路径。”
- “你能用8x50双筒望远镜(FOV约6度)和不小于7等的恒星给我一个到环形星云(M57)的恒星跳跃序列吗?”
- 我需要找到NGC 253。我的望远镜有1度的视野。在距离目标20度以内,找到一条从比3等亮的恒星开始的路径。"
- “假设视场为2度,最大跳星等为8.5,则生成一个关于Sombrero星系的跳星指南。”
项目结构
CelestialMCP/
├── src/
│ ├── tools/ # MCP Tools provided to the AI
│ │ ├── CelestialDetailsTool.ts # Tool to get detailed info for an object
│ │ ├── ListCelestialObjectsTool.ts # Tool to list available objects
│ │ └── StarHoppingTool.ts # Tool to calculate star hopping paths
│ ├── utils/ # Utility functions
│ │ └── astronomy.ts # Core astronomy calculations and catalog loading
│ ├── config.ts # Observer's location and atmospheric conditions configuration
│ └── index.ts # MCP Server entry point
├── scripts/
│ └── fetch-catalogs.js # Script to download astronomical catalogs
├── data/ # Directory for catalog data files (e.g., hygdata_v41.csv, ngc.csv)
│ ├── README.md # Information about data files
│ ├── sample_dso.csv # Sample DSO data if full catalog isn't downloaded
│ └── sample_stars.csv # Sample star data if full catalog isn't downloaded
├── package.json
└── tsconfig.json默认配置
默认情况下,观察者的位置设置为加拿大温哥华。您可以在中更改此设置 src/config.ts: 此配置用于所有计算,除非工具特别允许覆盖它(当前工具不允许)。
export const OBSERVER_CONFIG = {
latitude: 49.2827, // Observer latitude
longitude: -123.1207, // Observer longitude
altitude: 30, // Observer altitude in meters
temperature: 15, // Default temperature in Celsius
pressure: 1013.25 // Default pressure in hPa
};许可证
麻省理工学院
