STK-MCP协议服务器

STK-MCP是一个MCP(模型上下文协议)服务器,使大型语言模型(LLMs)或其他MCP客户端能够与Ansys/AGI STK(系统工具包)交互,支持STK桌面版(仅Windows)和STK引擎(Windows和Linux)。

  • by alti3
  • Python
  • 本地部署
  • 42 星标
  • 更新于
在 GitHub 查看 alti3/stk-mcp

使用说明

STK-MCP

STK-MCP是一个MCP(模型上下文协议)服务器,旨在使大型语言模型(LLM)或其他MCP客户端能够与 Ansys/AGI STK (系统工具包)-领先的数字任务工程软件。

该项目允许通过MCP服务器控制STK,支持STK桌面(仅限Windows)和STK引擎(Windows和Linux)。它利用 FastMCP 从官方 MCP Python SDK.

概述

该项目的主要目标是弥合程序化交互与STK强大仿真功能之间的差距。通过通过强大的CLI和MCP服务器公开STK功能,用户可以使用简单的命令或LLM驱动的应用程序命令STK仿真。

MCP应用程序,定义见 src/stk_mcp/app.py,将STK操作公开为MCP工具,由中的CLI入口点动态管理 src/stk_mcp/cli.py.

特性

  • CLI入口点由 Typer.
  • 双模式操作:STK引擎(Windows/Linux)和STK桌面(Windows)。
  • 操作系统感知:在非Windows平台上自动禁用桌面模式。
  • 托管生命周期:STK实例与MCP服务器一起启动/停止。
  • 工具发现: list-tools 命令枚举可用的MCP工具。
  • 模块化架构:CLI(cli.py),MCP(app.py)STK逻辑(stk_logic/),以及MCP工具(tools/).

先决条件

  • 操作系统: Windows或Linux。STK桌面模式需要Windows。
  • python 版本3.12或更高版本。
  • Ansys/AGI STK: 已安装12.x版桌面或引擎。
  • STK Python API: 这 agi.stk12 与STK安装相对应的Python轮必须可用。通常在以下位置找到 CodeSamples\Automation\Python 在STK安装中。

安装

  1. 克隆仓库
    git clone <repository-url>
    cd stk-mcp
    
  2. 创建并激活虚拟环境
    # Create the virtual environment
    uv venv
    
    # Activate it
    # On Windows (in PowerShell/CMD):
    # .venv\Scripts\activate
    # On Linux (in bash/zsh):
    source .venv/bin/activate
    
  3. 使用uv添加依赖项(首选)
    • 从STK安装(本地文件)中添加STK Python轮:
    uv add ./agi.stk12-12.10.0-py3-none-any.whl
    # or: uv add path/to/your/STK/CodeSamples/Automation/Python/agi.stk12-*.whl
    
  4. 同步环境(从安装deps pyproject.toml)
    uv sync
    

用法

此项目是一个命令行应用程序。在运行命令之前,请确保您的虚拟环境已激活。

列出可用工具

uv run -m stk_mcp.cli list-tools

打印工具名称及其描述表。

运行MCP服务器

使用 run 命令启动MCP服务器。服务器将自动启动并管理STK实例。

与一起跑步 uv run 因此,您不需要将该包安装到站点包中。

1) STK引擎(建议用于自动化,Windows/Linux):

uv run -m stk_mcp.cli run --mode engine

2) STK桌面(仅限Windows,显示GUI): 确保STK桌面已关闭;服务器将启动并管理自己的实例。

uv run -m stk_mcp.cli run --mode desktop

服务器将启动、初始化STK并监听MCP连接 http://127.0.0.1:8765 默认情况下。

3.命令选项: 您可以通过查看所有选项 --help 标志:

stk-mcp run --help

与服务器交互

服务器运行后,您可以使用任何MCP客户端(如MCP检查器)连接到它。

  1. 打开控制台中提供的MCP检查器URL(例如。, http://127.0.0.1:8765).
  2. 在列表中找到“STK Control”服务器。
  3. 使用“工具”部分执行 setup_scenario, create_location,以及 create_satellite.

停止服务器

按 Ctrl+C 在服务器运行的终端中。生命周期管理器将自动关闭STK引擎或桌面实例。

MCP工具和资源

服务器公开以下MCP工具/资源。

名称 类型 描述 桌面(Windows) 引擎(Windows) Linux引擎
setup_scenario 工具 创建/配置STK场景;设置时间段并倒带动画。 是 是 有
create_location 工具 创建/更新 Facility (默认)或 Place 纬度/经度/高度(公里)。 是 是 有
create_satellite 工具 根据远地点/近地点(公里)、RAAN和倾角创建/配置卫星;双体道具。 是 是 否

资源:

名称 类型 描述 桌面(Windows) 引擎(Windows) Linux引擎
resource://stk/objects Resource 列出活动场景中的所有对象。返回JSON记录: {name, type}。 是 是 有
resource://stk/objects/{type} 资源 列出按筛选的对象 type (例如。, satellite, facility, place, sensor).返回JSON记录。 是 是 有
resource://stk/health 资源 报告基本状态:模式、场景名称和对象计数。 是 是 有
resource://stk/analysis/access/{object1}/{object2} 资源 计算两个对象之间的访问间隔。提供以下路径 Satellite/SatA 和 Facility/FacB (有或没有领导 */). 是 是 有
resource://stk/reports/lla/{satellite} 资源 返回场景开始/停止间隔内的卫星LLA星历表。提供类似路径 Satellite/SatA (有或没有领导 */). 是 是 有

示例:

  • 读取所有对象: resource://stk/objects
  • 只读卫星: resource://stk/objects/satellite
  • 读取地面位置: resource://stk/objects/location (设施和场所的别名)

访问和LLA示例:

  • 计算访问: resource://stk/analysis/access/Satellite/ISS/Facility/Boulder
  • 获取ISS LLA(60秒): resource://stk/reports/lla/Satellite/ISS (可选 step_sec 论点)

配置和日志记录

配置集中在 src/stk_mcp/stk_logic/config.py 使用 pydantic-settings. 默认值可以用环境变量(前缀 STK_MCP_).

  • STK_MCP_DEFAULT_HOST (默认值 127.0.0.1)
  • STK_MCP_DEFAULT_PORT (默认值 8765)
  • STK_MCP_LOG_LEVEL (默认值 INFO)
  • STK_MCP_DEFAULT_SCENARIO_NAME (默认值 MCP_STK_Scenario)
  • STK_MCP_DEFAULT_START_TIME (默认值 20 Jan 2020 17:00:00.000)
  • STK_MCP_DEFAULT_DURATION_HOURS (默认值 48.0)

日志记录通过以下方式标准化 src/stk_mcp/stk_logic/logging_config.pyCLI使用 这种配置,生成具有时间戳、级别和上下文的结构化日志。

实施说明

  • STK访问使用全局锁进行序列化,以避免并发问题。
  • 常见的STK可用性检查是通过中的装饰器处理的 src/stk_mcp/stk_logic/decorators.py (@require_stk_tool 和 @require_stk_resource).
  • 使用重试逻辑执行可能暂时不稳定的STK Connect命令 (tenacity)in src/stk_mcp/stk_logic/utils.py (safe_stk_command).
  • 长时间运行的内部操作是定时的 @timed_operation 用于诊断。

依赖项

管理方式 uv:

  • agi.stk12 (STK安装的本地车轮)
  • mcp[cli]>=1.6.0
  • uvicorn>=0.30 (对于CLI服务器显式)
  • rich>=13.7 (CLI表输出)
  • typer>=0.15.2
  • pydantic>=2.11.7

笔记:

  • 在macOS(Darwin)上,不支持STK引擎/桌面。服务器将启动,但依赖STK的工具/资源不可用。
  • 服务器通过全局锁序列化STK访问,以避免对STK引擎/桌面实例的多线程访问的并发问题。

贡献

欢迎投稿!请参阅 贡献.md 文件指南。