集成方式:import / MCP / CLI / sidecar#

目标#

同一套能力有三条调用链,全部派生自同一份工具清单 tool_inventory(Facade())``(``e2m2e/api/facade.py),没有第二份清单文件。 本篇说明各链路的入口与适用场景。

进程内 import#

Python 直接调用,最短路径,教程全部使用这种方式:

from e2m2e.api import Facade

facade = Facade()
result = facade.orbit_propagation(
    initial_state=[7000.0, 0.0, 0.0, 0.0, 7.5, 0.0],
    epoch="2027-08-02T00:00:00",
    duration=3600.0,
)
print(result.status, result.n_points)

三个暴露类:``Facade``(一档任务)、``facade.catalog``(轨道库)、 ``facade.spatiography``(分区分析)。

MCP#

在 MCP 客户端里注册服务器,用自然语言驱动:

uv pip install "e2m2e[mcp]"
e2m2e mcp-serve

客户端配置(command 指向装了 e2m2e 的环境里的可执行文件):

{
  "mcpServers": {
    "e2m2e": {
      "command": "/path/to/venv/bin/e2m2e",
      "args": ["mcp-serve"],
      "cwd": "/path/to/CODE-core"
    }
  }
}

工具 schema 从 Request 模型生成,返回统一信封 {status, data, error, meta}。 长任务(transfer_design、orbit_family_generation)自动跑 worker 子进程,取消即 kill(见 转移轨道设计)。

CLI#

每个 mcp_exposed 工具有一个同名子命令(下划线转连字符),参数从同一份 Pydantic 模型生成,输出同一个信封 JSON(stdout):

e2m2e design-orbit --orbit-type HALO --collinear-point 2 --amplitude 30000.0
e2m2e orbit-propagation --help
e2m2e valid-ranges

进度与用法错误写 stderr,便于脚本管道区分。

sidecar(GUI)#

Tauri 壳经 stdio JSON 行 + 二进制帧协议驱动(ADR 0035):

e2m2e serve-stdio

大数组(轨迹、场数据)走二进制帧:帧头 magic 为 ASCII "E2M2" 小端 u32 (0x324D3245),后接 dtype/ndim/shape,唯一实现在 e2m2e/api/frames.py。

怎么选#

方式

适用

说明

import

Python 项目、批处理

直接拿 Response 对象

MCP

LLM Agent、交互式会话

自然语言驱动,schema 自动生成

CLI

脚本管道、cron

信封 JSON 进 stdout

sidecar

GUI 应用

二进制帧传大数组

延伸#

  • 工具权威清单:tool_inventory(Facade());

  • MCP 部署细节见 README“快速开始”一节。