STK-MCP 是一个设计用于使大型语言模型(LLMs)或其他 MCP 客户端与 Ansys/AGI STK(系统工具包)交互的 MCP(模型上下文协议)服务器。STK 是领先的数字任务工程软件。
此项目允许通过 MCP 服务器控制 STK,支持 STK Desktop(仅限 Windows)和 STK Engine(Windows 和 Linux)。它利用了官方 MCP Python SDK 中的 FastMCP。
该项目的主要目标是弥合程序化交互与 STK 强大仿真能力之间的差距。通过强大的 CLI 和 MCP 服务器暴露 STK 功能,用户可以使用简单的命令或由 LLM 驱动的应用程序指挥 STK 仿真。
MCP 应用程序在 src/stk_mcp/app.py 中定义,将 STK 操作作为 MCP 工具暴露出来,这些工具由 src/stk_mcp/cli.py 中的 CLI 入口点动态管理。
Typer 提供支持的 CLI 入口点。list-tools 命令枚举可用的 MCP 工具。cli.py)、MCP(app.py)、STK 逻辑(stk_logic/)和 MCP 工具(tools/)。agi.stk12 Python 轮子必须可用。通常可以在您的 STK 安装下的 CodeSamples\Automation\Python 找到。git clone <repository-url>
cd stk-mcp
# 创建虚拟环境
uv venv
# 激活它
# 在 Windows(PowerShell/CMD)中:
# .venv\Scripts\activate
# 在 Linux(bash/zsh)中:
source .venv/bin/activate
uv add ./agi.stk12-12.10.0-py3-none-any.whl
# 或:uv add path/to/your/STK/CodeSamples/Automation/Python/agi.stk1.2-*.whl
# 仅限 Windows:COM 桥接用于桌面自动化
uv add "pywin32; platform_system == 'Windows'"
pyproject.toml 中的依赖项)
uv sync
这是一个命令行应用程序。确保在运行命令之前激活虚拟环境。
uv run -m stk_mcp.cli list-tools
打印工具名称及其描述的表格。
使用 run 命令启动 MCP 服务器。服务器会自动启动并管理 STK 实例。
使用 uv run 运行,因此无需将包安装到 site-packages。
1) STK Engine(推荐用于自动化,Windows/Linux):
uv run -m stk_mcp.cli run --mode engine
2) STK Desktop(仅限 Windows,显示 GUI): 确保关闭 STK Desktop;服务器将启动并管理其自身的实例。
uv run -m stk_mcp.cli run --mode desktop
默认情况下,服务器将在 http://127.0.0.1:8765 监听 MCP 连接。
3. 命令选项:
您可以使用 --help 标志查看所有选项:
stk-mcp run --help
一旦服务器运行,您可以使用任何 MCP 客户端连接到它,例如 MCP Inspector。
http://127.0.0.1:8765)。setup_scenario、create_location 和 create_satellite。在运行服务器的终端中按 Ctrl+C。生命周期管理器将自动关闭 STK Engine 或 Desktop 实例。
服务器公开以下 MCP 工具/资源。
| 名称 | 类型 | 描述 | Desktop (Windows) | Engine (Windows) | Engine (Linux) |
|---|---|---|---|---|---|
setup_scenario | 工具 | 创建/配置 STK 场景;设置时间段并重放动画。 | 是 | 是 | 是 |
create_location | 工具 | 创建/更新 Facility(默认)或 Place 在纬度/经度/海拔(千米)。 | 是 | 是 | 是 |
create_satellite | 工具 | 创建/配置卫星从远地点/近地点(千米),升交点赤经和倾角;两体传播。 | 是 | 是 | 否 |
注:
create_satellite 尚未支持,因为它依赖于 COM 特定的转换;计划使用 Connect 的替代方案。资源:
| 名称 | 类型 | 描述 | Desktop (Windows) | Engine (Windows) | Engine (Linux) |
|---|---|---|---|---|---|
resource://stk/objects | 资源 | 列出活动场景中的所有对象。返回 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/objectsresource://stk/objects/satelliteresource://stk/objects/location(设施和地点的别名)访问和 LLA 示例:
resource://stk/analysis/access/Satellite/ISS/Facility/Boulderresource://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.py。CLI 使用此配置,生成带有时间戳、级别和上下文的结构化日志。
src/stk_mcp/stk_logic/decorators.py 处理(@require_stk_tool 和 @require_stk_resource)。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.7pywin32(仅限 Windows)注:
欢迎贡献!请参阅 CONTRIBUTING.md 文件获取指南。