项目简介

本项目是一个基于Model Context Protocol (MCP) 的服务器实现,作为AI代理与N.I.N.A. (Nighttime Imaging 'N' Astronomy) 天文摄影软件高级API之间的桥梁。它允许AI代理通过 표준化的工具接口控制相机、望远镜支架、调焦器等各种天文摄影设备,执行捕获、对焦、跟踪、圆顶控制等操作,并获取设备状态和图像信息。

主要功能点

  • 全面的设备控制: 支持控制相机、望远镜支架、调焦器、滤镜盘、天文圆顶、旋转器等设备。
  • 成像与处理: 提供图像捕获、曝光设置、增益设置、二分设置、dew heater控制、图像统计及历史查询等功能。
  • 望远镜支架控制: 支持连接、断开、归位、停车、解除停车、翻转、指向特定坐标(Slew)、停止指向等操作。
  • 天文圆顶控制: 支持连接、断开、列表、重新扫描、获取信息、打开/关闭快门、停止移动、设置跟随望远镜、同步到望远镜、指向特定方位角(Slew)、设置/前往停车位、归位等操作。
  • 调焦器控制: 支持连接、断开、列表、重新扫描、获取信息、移动到指定位置、设置温度补偿等操作。
  • 滤镜盘控制: 支持连接、断开、列表、重新扫描、获取信息、切换滤镜、获取滤镜信息等操作。
  • 导星仪控制: 支持连接、断开、列表、重新扫描、获取信息、开始/停止导星、校准导星仪、清除校准数据、获取导星图数据等操作。
  • 平场板控制: 支持连接、断开、列表、重新扫描、获取信息、设置光源开关、设置盖板状态、设置亮度等操作。
  • 应用层面控制: 获取NINA应用版本、切换NINA应用Tab页、获取插件信息、获取NINA应用截图等。
  • 状态监控: 获取所有已连接设备及服务器的当前状态。
  • 与AI代理集成: 接收AI代理(如支持MCP的Claude等)发出的控制命令,并将操作结果或信息返回给AI。
  • 环境配置: 通过环境变量灵活配置NINA连接地址、端口、日志级别、图像保存目录等。

安装步骤

  1. 安装N.I.N.A.软件: 确保您已安装N.I.N.A. v3.0+ 版本。
  2. 安装并配置NINA高级API插件: 在NINA软件中安装并启用高级API v2 插件,并在设置中进行配置。
  3. 克隆仓库: 打开终端或命令提示符,执行以下命令克隆本项目代码:
    git clone https://github.com/PaDev1/Nina_advanced_api_mcp.git
    cd Nina_advanced_api_mcp
  4. 设置环境变量: 在项目根目录下创建一个名为 '.env' 的文件,用于配置MCP服务器连接NINA高级API的参数。示例内容如下:
    NINA_HOST=your_nina_host  # NINA运行所在电脑的IP地址或主机名
    NINA_PORT=1888          # NINA高级API监听的端口,默认为1888
    LOG_LEVEL=INFO          # 日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
    IMAGE_SAVE_DIR=~/Desktop/NINA_Images # 图像保存目录,~表示用户主目录
    请将 'your_nina_host' 替换为NINA运行电脑的实际IP地址或主机名。
  5. 安装Python环境和依赖: 确保您已安装Python 3.8 或更高版本。推荐使用 'uv' 包管理器,执行:
    uv sync
    如果您使用的是 'pip',可以执行:
    pip install -r requirements.txt # 如果有requirements.txt文件,如果没有请根据nina_advanced_mcp.py顶部的import手动安装fastmcp, fastapi, uvicorn, pydantic, aiohttp, requests, python-dotenv

服务器配置(供MCP客户端使用)

您的AI代理(MCP客户端)需要通过配置文件或界面来连接并启动这个MCP服务器。典型的MCP客户端配置会包含以下信息,指示客户端如何找到并运行此服务器程序:

  • 服务器名称 (server name): 一个用于标识此服务器的名称,例如 'nina_advanced_mcp_api'。
  • 启动命令 (command): 启动服务器的可执行命令。根据项目推荐,可以使用 'uv' 或直接使用 'python'。例如:
    • 使用 uv: 'uv'
    • 使用 python: 'python3' 或 'python' (取决于您的系统配置)
  • 命令参数 (args): 传递给启动命令的参数。这些参数告诉命令要执行哪个脚本以及如何执行。
    • 使用 uv: '["run", "--with", "fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv", "fastmcp", "run", "/path/to/your/cloned/repo/nina_advanced_mcp.py"]'
      • '/path/to/your/cloned/repo/nina_advanced_mcp.py' 需要替换为您实际克隆仓库后 'nina_advanced_mcp.py' 文件的完整路径。
      • '--with "..."' 参数确保 'uv' 在执行时包含了所有必要的依赖。
    • 使用 python: '["/path/to/your/cloned/repo/nina_advanced_mcp.py"]'
      • '/path/to/your/cloned/repo/nina_advanced_mcp.py' 需要替换为您实际克隆仓库后 'nina_advanced_mcp.py' 文件的完整路径。
  • 环境变量 (env): 需要传递给服务器进程的环境变量。例如:
    {
      "NINA_HOST": "NINA_IP",  // NINA软件所在电脑的IP地址
      "NINA_PORT": "1888",    // NINA高级API端口
      "LOG_LEVEL": "INFO",    // 日志级别
      "IMAGE_SAVE_DIR": "~/Desktop/NINA_Images" // 图像保存目录
    }
    (请注意:实际配置格式取决于您的MCP客户端实现。此处仅为概念说明。)

基本使用方法

一旦您的MCP客户端配置并成功连接到此NINA MCP服务器,您就可以通过自然语言或客户端界面向AI代理发出控制NINA的指令。AI代理会使用此服务器提供的工具来执行相应的操作。

例如,您可以尝试使用类似以下的指令:

  • "连接相机和望远镜支架。"
  • "告诉我目前连接了哪些设备。"
  • "将望远镜指向仙女座星系 (M31)。"
  • "拍摄一张30秒曝光的图像。"
  • "启动相机的冷却,目标温度设为 -10摄氏度。"
  • "获取上次拍摄图像的统计信息。"
  • "将天文圆顶快门打开。"

信息

分类

桌面与硬件