STK-MCP
](https://www.python.org/downloads/) ](https://pypi.org/project/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安装中。
安装
- 克隆仓库
git clone
cd stk-mcp- 创建并激活虚拟环境
# 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- 使用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- 同步环境(从安装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 engine2) 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检查器)连接到它。
- 打开控制台中提供的MCP检查器URL(例如。,
http://127.0.0.1:8765). - 在列表中找到“STK Control”服务器。
- 使用“工具”部分执行
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.0uvicorn>=0.30(对于CLI服务器显式)rich>=13.7(CLI表输出)typer>=0.15.2pydantic>=2.11.7
笔记:
- 在macOS(Darwin)上,不支持STK引擎/桌面。服务器将启动,但依赖STK的工具/资源不可用。
- 服务器通过全局锁序列化STK访问,以避免对STK引擎/桌面实例的多线程访问的并发问题。
贡献
欢迎投稿!请参阅 贡献.md 文件指南。
