Skip to main content
Glama
HanKin666

sentaurus-mcp

by HanKin666
README.md
# Sentaurus MCP|让 LLM 访问 Sentaurus

**中文** | [English](README.en.md)

## 目录

- [这是什么](#这是什么)
- [快速开始](#快速开始)
- [能做什么](#能做什么)
- [实际软件版本](#实际软件版本)
- [手动安装与部署](#手动安装与部署)
- [首次使用:连接诊断与引导](#首次使用连接诊断与引导)
- [远程服务器连接](#远程服务器连接)
- [怎么向助手提问](#怎么向助手提问)
- [运行原理](#运行原理)
- [常见问题](#常见问题)
- [开发与验证](#开发与验证)
- [开发背景](#开发背景)
- [参考与许可](#参考与许可)

## 这是什么

**Sentaurus MCP 让 AI 助手通过工具读取实验记录和日志,并提交 Sentaurus 仿真脚本。** 你用自然语言提出任务,助手调用 MCP;真正计算的是 Sentaurus。

Sentaurus 通常装在服务器上,AI 助手通常在你的电脑上。因此需要先登录服务器,再配置服务器上的 Sentaurus 运行环境。

| 名称 | 在这里负责什么 | 在哪里运行 |
| --- | --- | --- |
| AI 助手/LLM 客户端 | 理解你的要求,调用工具,解释返回的结果 | 通常在你的电脑上 |
| SSH | 让本机客户端在服务器上启动 MCP 并交换信息 | 连接你的电脑和服务器 |
| MCP 接口 | 接收助手的请求,保存实验、查询状态和读取日志 | Sentaurus 所在服务器 |
| 后台执行器(Worker) | 从队列取出实验,启动 Sentaurus,记录运行状态 | 同一服务器,单独启动并保持运行 |
| Sentaurus | 执行结构、网格和器件仿真 | 服务器 |
| VNC Viewer | 显示服务器桌面,方便查看 Sentaurus 原生界面 | 你的电脑;当前 MCP 不通过它控制软件 |

**目前发布的是第二个测试版 `v0.1.0-alpha.2`。** Python 包内仍显示 `0.1.0`,因为发布时尚未同步修改包版本号;不能仅凭这个数字判断代码是否更新。下载第二个测试版或仓库 `main` 时包含连接向导,最早的 `alpha.1` 不包含。下面的说明以 `main` 为准。

公开 MCP 已通过模拟任务测试,真实 Sentaurus 的完整运行流程尚未验收。作者使用 Sentaurus 的科研经历与这个公开工具的验证状态是两回事。本仓库不包含私人工作台或实验数据。

## 快速开始

### 只知道服务器端口号和密码?先把这段话发给 LLM

复制下面的指令,发给**能访问本机文件、运行命令并配置 MCP 的 AI 助手**。普通网页聊天窗口如果没有这些权限,只能指导你操作,不能代你安装。

```text
请帮我安装并连接这个 Sentaurus MCP:
https://github.com/HanKin666/sentaurus-mcp

我是新手,目前只知道服务器端口号和密码,不确定是 VNC 还是 SSH。
请使用仓库 main 分支的最新说明和连接向导,先检查本机是否已安装。
一次只问我当前缺少的必要信息,不要让我先理解全部技术配置。

先问我服务器地址,以及平时用什么软件连接。
如果我只知道端口,不要把它当作服务器地址,也不要猜测 SSH 端口。
密码请让我在本地隐藏输入,不要让我发到对话里。

如果可以读取已有连接配置,请先让我指定具体文件或连接条目;
仅提取服务器地址、端口和用户名,不读取密码或私钥内容。
识别连接方式后,告诉我:
本机安装、服务器连接、后台执行器、Sentaurus 验证分别到了哪一步。
只保存配置或看到远程桌面时,不要说仿真已经可用。
在真正提交仿真前,先说明准备运行的实验和需要的资源。
```

助手能否替你安装,取决于它是否有文件访问和命令执行能力;连接向导本身只收集信息并生成配置。

### 接下来助手应该怎么问,你怎么回答

| 助手会问 | 你提供什么 |
| --- | --- |
| “服务器地址是什么?” | 管理员给的 IP/域名;不知道就提供你已保存连接的地址栏或连接名称,遮住密码 |
| “平时用什么软件连接?” | 例如 VNC Viewer、终端或 SSH 客户端;不知道可以直接说不知道 |
| “端口是多少?是端口还是显示编号?” | 把已知值告诉助手。像 `:1`、`:01` 可能是 VNC 显示编号,需要确认实际 TCP 端口 |
| “是否检查这个地址和端口的协议?” | 同意后,向导只读取该地址和端口返回的协议标识,用于判断可能是 SSH 还是 VNC;这一步不会登录服务器 |
| “用户名是什么?” | SSH 通常需要 Linux 用户名;有些 VNC 连接只有密码,用户名可暂留空 |
| “是否在本地保存连接信息?” | 选择本机保存路径;配置为 `.txt`,密码如需保存则进入系统凭据库 |
| “已有 SSH 权限吗?” | 有就继续 SSH 配置;只有 VNC 就按下面的限制处理 |

**只有“服务器端口号+密码”还不足以确定服务器**,至少还需要地址。助手应帮助你找到缺少的信息,而不是反复要求你填写完整技术配置。

### 如果你只有 VNC

你可以先用向导保存连接信息,继续通过 VNC 查看 Sentaurus。**当前 MCP 没有 VNC 自动控制或通过 VNC 自动部署服务器代理的功能**;仅有 VNC 密码不能让后台执行器远程接通。

助手应告诉你缺的是哪一项:可用的 SSH 登录方式,或者在服务器本机运行 MCP 客户端的条件。可以把下面这句话发给管理员:

> 我已有 VNC 远程桌面访问,希望连接 Sentaurus MCP。请确认是否允许 SSH 登录,并提供服务器地址、SSH 端口、Linux 用户名和允许的认证方式;如果不允许 SSH,请确认能否在服务器本机运行 Python MCP 服务及客户端。

### 想让助手读取已有配置?

先指明**具体文件或连接条目**,例如:

```text
允许你读取我指定的连接配置文件,提取服务器地址、端口和用户名,
用于设置 Sentaurus MCP。不要读取或输出密码、私钥,不扫描其他目录。
如果格式不支持,请指出还缺哪个字段。
```

这需要助手本身具备文件访问能力。当前向导的 `--load` 仅支持本向导生成的配置,**不自动解析所有 VNC/SSH 客户端配置**。不要为此开放整台电脑或整个用户目录的读取权限。

有经验的用户或负责部署的助手,可以继续看[手动安装与部署](#手动安装与部署)和[远程服务器连接](#远程服务器连接)。

## 能做什么

| 你想完成的事 | 当前支持情况 |
| --- | --- |
| 保存输入脚本,建立一个实验 | 支持;记录输入文件指纹,提交前检查文件是否变化 |
| 提交 SDE、SDevice 或 SVisual 批处理任务 | 已实现调用入口;真实软件命令需在你的安装环境验证 |
| 同时提交多个实验 | 支持排队和最大并行数量设置;默认一次运行一个 |
| 查看当前及历史实验 | 支持查询状态、阶段、进程编号和耗时 |
| 查看求解日志 | 支持增量读取,避免每次传回整份日志 |
| 查看产生了哪些结果文件 | 支持文件清单;暂不解析 TDR 或自动绘图 |
| 关闭 AI 客户端后继续计算 | 独立后台执行器正常运行时,任务可继续 |
| 在 Sentaurus Workbench 中直接添加原生工程或实验 | **尚未实现**;当前保存的是批处理目录 |
| 自动判断收敛、提取击穿电压或优化器件参数 | **尚未实现** |
| 根据 CPU、内存和许可证自动排满资源 | **尚未实现**;目前只限制并行任务数 |
| 打包下载、取消任务、重启后自动恢复 | **尚未实现** |

## 实际软件版本

记录日期:2026-09-09。以下是作者当前可核实的软件版本,**不是要求使用者安装完全相同的版本,也不代表兼容性验收通过**。

| 软件 | 已记录版本 | 核实范围 |
| --- | --- | --- |
| Sentaurus TCAD | T-2022.03 | 来自科研实验清单;SDE、SDevice、SVisual、Workbench 各自的构建号及补丁号尚未逐一核实 |
| Codex 桌面应用 | 26.901.6511.0 | 本机已安装版本 |
| Windows | 10.0.19045 | 本机系统构建号 |
| RealVNC Viewer | 7.13.1.57 | 本机查看器;远端 VNC 服务端版本待核实 |
| Python | 3.12.10,64 位 | 本机 MCP 测试环境 |
| MCP Python SDK | 1.30.0 | 已安装的 `mcp` 包 |
| HTTPX / Pydantic | 0.28.1 / 2.13.5 | 本机运行依赖 |
| pytest / pip | 8.4.2 / 25.0.1 | 本机测试与安装工具 |
| Git | 2.53.0.windows.2 | 本机版本管理工具 |
| 本项目 | v0.1.0-alpha.2;包元数据为 0.1.0 | GitHub 测试版标签与 Python 包版本不是同一个编号 |

服务器 Linux、服务器 Python、SSH 客户端/服务端构建号、许可证管理器、可选凭据库和实际选用的 LLM 模型版本尚未完整核实,不填猜测值。本机还检测到 VNC Server 6.5.0.41730 和 SangforVNC 7,1,0,2;仅安装这些软件不能证明当前连接使用了它们。

<details>
<summary>作者本机的历史安装记录</summary>

本机还存在旧包名 `sentaurus-workbench-mcp==0.1.0`,使用者无需安装它。按下文新建虚拟环境即可。

</details>

## 手动安装与部署

这一节供负责部署的助手或熟悉终端的用户使用。**第 1~4 步在 Linux 仿真服务器上操作。** 第 5 步仅适用于客户端也在该服务器上;如果客户端在自己的电脑上,请改看[远程服务器连接](#远程服务器连接)。

### 1. 准备环境

需要:

- Python 3.10 或以上版本。
- 已安装、可正常批处理运行的 Sentaurus 和有效许可证。
- 一个你有写入权限的数据目录。
- 支持 MCP 标准输入输出连接的客户端。

本工具不安装 Sentaurus,也不提供许可证。请先确认同一账号可以直接运行你的仿真脚本。

### 2. 下载并安装

```bash
git clone https://github.com/HanKin666/sentaurus-mcp.git
cd sentaurus-mcp
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
```

### 3. 配置仿真程序和数据目录

复制示例配置:

```bash
cp examples/config.example.json config.json
```

修改 `config.json`。以下路径都是占位示例,必须换成你自己的**绝对路径**:

```json
{
  "root": "/absolute/path/to/experiments",
  "max_parallel": 1,
  "tools": {
    "sde": ["/absolute/path/to/sde", "-e", "-l", "{input}"],
    "sdevice": ["/absolute/path/to/sdevice", "{input}"],
    "svisual": ["/absolute/path/to/svisual", "-b", "{input}"]
  }
}
```

| 配置项 | 含义 |
| --- | --- |
| `root` | 输入、结果、日志及实验索引的存储位置 |
| `max_parallel` | 最多同时运行多少个实验;不是每个实验的 CPU 核数 |
| `tools` | 允许调用的程序及其参数;需要核对本机 Sentaurus 版本 |
| `{input}` | 执行时自动替换为该阶段的输入文件名 |

许可证、运行库等环境变量沿用服务器已有设置。不要把账号、密码或私有配置提交到仓库。

### 4. 单独启动后台执行器

在一个独立终端中执行,路径替换为实际配置文件位置:

```bash
export SENTAURUS_MCP_CONFIG="/absolute/path/to/sentaurus-mcp/config.json"
sentaurus-worker
```

保持这个终端运行。长期使用时,可由服务器的服务管理器管理该进程。

**后台执行器负责排队和启动仿真,必须独立于 AI 客户端启动。** 不要让客户端在启动 MCP 时顺便启动它,否则客户端退出可能影响后台任务。

### 5. 连接 AI 客户端

下面是**客户端与 MCP 在同一台机器**时的通用 JSON 配置示例。具体配置文件位置和外层格式由客户端决定:

```json
{
  "mcpServers": {
    "sentaurus": {
      "command": "/absolute/path/to/sentaurus-mcp/.venv/bin/sentaurus-mcp",
      "env": {
        "SENTAURUS_MCP_CONFIG": "/absolute/path/to/sentaurus-mcp/config.json",
        "SENTAURUS_ENABLE_ACTIONS": "1"
      }
    }
  }
}
```

- `SENTAURUS_ENABLE_ACTIONS=1`:允许建立、提交实验。
- 改为 `0` 或不设置:只允许查询。
- MCP 和后台执行器必须使用同一个配置文件。
- 客户端在 Windows、Sentaurus 在 Linux 时,需要配置 SSH 标准输入输出连接,让 MCP 在服务器上运行;不能直接把服务器路径填成 Windows 本地命令。可使用下文的本地配置向导生成连接配置;服务器安装仍需另行完成。
- Windows 本地安装时,可执行文件通常位于 `.venv/Scripts/sentaurus-mcp.exe`;这不代表 Windows 已能运行你的 Sentaurus。

连接成功后,客户端应能发现下表中的 **8 个工具**。提交前确认后台执行器已经启动。

## 首次使用:连接诊断与引导

这里有两个不同的操作:**配置向导**负责询问信息、保存本地配置;**环境诊断**负责检查程序路径、目录权限以及 Worker 是否在线。两者都不会替你安装或启动服务器上的 Sentaurus。

### 弹窗或终端问答配置

在自己的电脑上更新安装后运行(将输出路径改到本机合适的数据盘):

```bash
python -m pip install -e '.[setup]'
python -m sentaurus_mcp.setup --gui --output connection-local.txt
```

去掉 `--gui` 则在终端逐项询问。弹窗需要 Python 的 Tk 支持;没有桌面或 Tk 时使用终端模式。`--load connection-local.txt --output connection-new.txt` 可读取指定的旧配置作为默认值,绝不自动扫描其他程序的配置和密码。

向导询问:VNC/SSH/不确定、主机地址、实际 TCP 端口、用户名(VNC 可留空)、认证方式;SSH 还询问服务器 Python 和 MCP 配置路径,未知可先留空。`主机:1` 可能是 VNC 显示编号,不自动猜为 TCP 端口。选择“不确定”时,仍需要提供端口;可授权读取该端口握手来识别 SSH 或 VNC,不扫描其他端口,不尝试登录。

配置保存为 UTF-8 `.txt`(内部为 JSON),包含非密码连接信息、状态以及条件满足时生成的只读 MCP 配置;已有文件不覆盖。密码在本地隐藏输入,可选保存到系统凭据库,文本只存凭据引用。安全凭据库不可用时不会退回明文保存;配置仍含服务器地址等信息,请只保存在自己的电脑上。

**当前向导不自动使用保存的密码登录,也不安装服务器代理。** 保存配置前还需提供服务器地址。VNC 用户的后续步骤见[如果你只有 VNC](#如果你只有-vnc)。SSH 后台认证仍需用户配置密钥/认证代理等方案。已有软件“登录成功”与向导“配置已保存”是不同状态。

已在本地测试参数校验、单端口握手、文本配置保存与读取,以及 VNC 终端问答流程;图形弹窗和各平台真实凭据库仍需用户环境验证。切勿把密码发给助手或填入 MCP 工具调用参数。

更新安装后,可让助手调用 `diagnose_environment`。即使没有配置,也会返回当前主机的环境、配置、存储权限、执行器心跳和程序路径状态;不创建实验目录,不启动仿真,也不验证许可证。

只有 VNC 时,调用 `get_connection_guide(mode="vnc")` 获取限制说明。有 SSH 时,提供主机、用户名、端口、服务器 Python 和配置路径,生成只读客户端配置。该工具不连接、不自动安装,也不接收密码。

本机终端示例(替换占位内容):

```bash
python -m sentaurus_mcp.doctor
python -m sentaurus_mcp.doctor --mode vnc
python -m sentaurus_mcp.doctor --mode ssh --host server.example.com --user your_user --port 22 --remote-python /absolute/path/.venv/bin/python --remote-config /absolute/path/config.json
```

最后一条默认仅生成配置;加 `--probe` 才通过 SSH 执行远程只读诊断。服务器须先安装包含诊断模块的版本。连接检查最多等待 30 秒,不会停止仿真,也不会部署或启动执行器。请先自行准备认证、核对主机密钥。当前向导支持域名和 IPv4,暂不支持 IPv6。

收到远程诊断也不等于许可证有效;未收到时明确标为失败或未检查。部署步骤见[手动安装与部署](#手动安装与部署)。

## 远程服务器连接

**本机运行 MCP 不需要服务器登录信息;从自己的电脑连接远程服务器时,需要先配置 SSH。** 本地连接向导见上文;没有接收密码的 MCP 工具。

### 需要准备哪些信息

| 信息 | 从哪里获取、填在哪里 |
| --- | --- |
| 服务器地址 | 向管理员获取 IP 或域名,替换示例中的 `server.example.com` |
| SSH 端口 | 向管理员确认,替换示例中的 `22`;不要照填 VNC 端口 |
| Linux 用户名 | 替换 `your_user`,该账号需有实验目录写入权和软件执行权限 |
| 登录认证 | 交互登录可用密码;后台连接建议使用管理员允许的 SSH 密钥或其他非交互认证 |
| MCP 与配置文件路径 | 填服务器上的绝对路径,必须与独立后台执行器使用的配置一致 |
| Sentaurus 运行环境 | 在服务器配置软件、许可证及必要环境变量 |

**SSH 用于执行程序,VNC 用于查看远程桌面。** VNC 的显示编号、端口和密码不能当作 SSH 配置;能够打开 VNC 不代表已具备 SSH 登录或仿真权限。

### 先由你在本地终端测试登录

以下主机名和用户名均为占位内容:

```bash
ssh -p 22 your_user@server.example.com
```

首次连接时,向管理员核对服务器主机密钥指纹,再确认保存。若使用密码,由你在 SSH 提示中输入;终端不显示密码字符是正常现象。不要把密码或私钥内容放进 README、客户端配置、命令参数或发给 LLM。

**一次密码登录成功,不代表 MCP 后台连接可以自动登录。** 多数客户端后台启动 SSH 时没有交互终端。下面的配置明确启用非交互模式,未准备好认证时会直接失败,不会弹出密码框。密钥有口令时,可由你通过本机 SSH 认证代理加载;也可由管理员配置组织允许的认证方案。若只允许逐次输入密码,需要客户端提供安全交互认证能力,当前项目没有实现这一功能。

### 配置客户端通过 SSH 启动服务器上的 MCP

先按前文在服务器安装 MCP、配置 Sentaurus,并独立启动后台执行器。然后在本机客户端中填写:

```json
{
  "mcpServers": {
    "sentaurus": {
      "command": "ssh",
      "args": [
        "-T",
        "-o",
        "BatchMode=yes",
        "-o",
        "StrictHostKeyChecking=yes",
        "-p",
        "22",
        "your_user@server.example.com",
        "env",
        "SENTAURUS_MCP_CONFIG=/absolute/path/to/sentaurus-mcp/config.json",
        "SENTAURUS_ENABLE_ACTIONS=0",
        "/absolute/path/to/sentaurus-mcp/.venv/bin/sentaurus-mcp"
      ]
    }
  }
}
```

这里的 `ssh` 是**本机**的 OpenSSH 客户端;如果不在搜索路径中,改为实际可执行文件路径。后面的 MCP 和配置文件路径都是**服务器端**路径。示例路径不含空格;远程路径含空格时需正确处理远端 shell 引号,不能直接照搬。

- `-T` 不分配伪终端,让 MCP 使用标准输入输出通信。
- `BatchMode=yes` 禁止交互认证提示;请提前准备认证。
- `StrictHostKeyChecking=yes` 要求主机密钥已核验并保存。
- 默认 `SENTAURUS_ENABLE_ACTIONS=0`,先只读检查;需要建立、提交实验时改为 `1`。
- 需要指定密钥时,可在主机名前添加 `"-i", "/absolute/local/path/to/private_key"`,或使用本机 SSH 配置。这里只填写文件路径,不填写密钥内容。
- 非交互连接未必加载交互登录的环境配置。服务器后台执行器必须具备 Sentaurus 的许可证和运行库环境;MCP 的标准输出也不能混入登录脚本的提示文字。

连接后先让助手列出实验,再测试授权范围内的提交。发现 8 个 MCP 工具只证明接口可连接,**不证明 Sentaurus 已运行或仿真已通过验证**。

常见错误:`Permission denied` 通常指认证问题;连接拒绝或超时需检查地址、SSH 端口和网络;主机密钥不匹配需向管理员核实,不能直接关闭检查;“执行器不在线”需检查后台进程和配置路径。

这些是连接配置说明,尚未作为本项目的远程端到端测试结果。参数依据:[OpenSSH 命令说明](https://man.openbsd.org/ssh.1)、[SSH 配置说明](https://man.openbsd.org/ssh_config.5)。

## 怎么向助手提问

完成配置并提供你已检查的输入脚本后,可以这样说:

> 用我提供的 SDevice 输入文件建立实验。先保存输入,告诉我实验编号,暂时不要提交。

> 提交刚才的实验。随后查询状态,告诉我当前阶段和已用时间。

> 读取这个实验新增的日志。把日志中的报错与可能原因分开说明,不要自动重跑。

> 列出这个实验生成的文件,告诉我哪些是日志、哪些是原生结果。

这些是**使用方式示例**,不是已经完成的仿真结果。助手需要拿到完整脚本;本工具不会自动补齐物理模型,也不会自动认定结果正确。

<details>
<summary>展开查看工具名称和用途</summary>

| 工具名称 | 用途 |
| --- | --- |
| `create_experiment` | 保存文本输入和阶段配置,不启动计算 |
| `submit_experiment` | 将已准备实验加入队列;重复提交不会重新启动同一实验 |
| `list_experiments` | 分页列出历史实验 |
| `get_experiment` | 查询状态、输入清单、进程编号及耗时 |
| `read_log` | 按字节位置读取一段日志 |
| `list_artifacts` | 列出结果文件,不把大型 TDR 文件塞进对话 |
| `diagnose_environment` | 只读检查当前主机环境与执行器状态 |
| `get_connection_guide` | 生成连接说明或 SSH 配置,不执行登录 |

输入格式:`files` 是“文件名 → 文本内容”的字典;`stages` 是阶段列表,每项包含 `tool` 和 `input_file`。工具名必须出现在配置的 `tools` 中,输入文件必须已提供。当前每个实验的文本输入合计上限为 2 MB。

能力说明也可通过资源 `sentaurus://capabilities` 读取。

</details>

## 运行原理

一次实验的流程是:保存脚本 → 提交到队列 → Worker 启动 Sentaurus → 查询状态、读取日志和列出结果文件。提交后助手会拿到实验编号,可以之后用这个编号继续查询,无需让同一次对话请求一直等待仿真结束。

实验按“项目 / 实验编号”保存。下面是目录示意,结果文件名由你的脚本决定:

```text
数据目录/
├── experiments.sqlite3       # 实验索引和运行状态
└── 项目名称/
    └── 实验编号/
        ├── 输入脚本
        ├── manifest.json     # 输入指纹和阶段配置
        ├── runner.log        # 执行器日志
        ├── stage-0.log       # 第一阶段日志
        ├── state.json        # 正常结束流程写出的最终状态
        └── 仿真产生的结果文件
```

同一项目可以保存多个实验,但当前目录**不是 Workbench 原生工程**。数据库中的运行状态可持续查询,输入和结果文件也独立保留。

## 常见问题

### 显示“完成”,就代表仿真正确吗?

不代表。`completed` 只表示各阶段程序正常退出。数值收敛、物理合理性和指标验收仍需检查,默认验证标签为“未审查”。

### 对话超时会停止仿真吗?

本工具没有固定的仿真运行时限。独立后台执行器正常工作时,MCP 客户端正常退出不会主动停止仿真。断线后先查询原实验,避免重复建立任务。

服务器关机、进程崩溃或外部调度器终止仍会影响任务;本版本尚不能自动恢复这些情况。

### 为什么提交不了?

先检查后台执行器是否在线、两个进程是否使用同一配置、是否启用了写入操作,以及输入文件是否在建立实验后被修改。修改过的输入会被指纹检查拒绝,应建立新的实验记录。

### 为什么一直显示运行中?

先查真实进程和日志。异常退出后状态可能没有及时写回,本版本尚未实现自动校正。不要直接清空运行状态来绕过并发限制。

### 可以直接读取 TDR 画图吗?

暂时只能列出文件。TDR 解析、原生切片图、曲线提取和打包导出还没有实现。

### 记录了哪些时间和资源?

记录阶段耗时、总运行耗时、进程编号、操作系统标识和主机可见 CPU 数量。**主机 CPU 数量不是本实验实际使用的核数**;进程内存峰值、完整硬件配置和优化到达目标的总耗时尚未完整采集。

### 可以给任意人使用吗?

输入脚本会以运行账号的权限执行,本工具不是脚本沙箱。应只连接可信客户端,并在操作系统或调度器中设置资源和账号权限。

## 开发与验证

安装测试依赖并运行:

```bash
python -m pip install -e '.[test]'
python -m pytest -q
```

已记录的本机验证:Windows、Python 3.12,**12 项测试通过(第二个测试版本)**,覆盖真实 MCP 协议连接、客户端退出后后台任务继续、重复提交、输入校验和并发数量限制。

测试使用短小的 Python 模拟任务,**没有执行真实 Sentaurus 仿真**。已提供 Linux 自动测试配置,其运行状态以仓库“操作(Actions)”页面为准。详见[验证记录](VALIDATION.md)。

## 开发背景

本项目源于使用 Codex 辅助开展 Sentaurus TCAD 科研的实践。开发工作结合了通过 VNC Viewer 查看远程 Sentaurus 原生界面、脚本执行、日志分析和结果核对,并逐步将实验管理流程整理为可复用的 MCP 接口。

| 组成 | 在这套工作方式中的作用 |
| --- | --- |
| Codex | 辅助编写与修改脚本、整理实验流程、分析日志及开发工具 |
| VNC Viewer | 查看远程 Sentaurus 界面,辅助人工核对结构和运行情况 |
| Sentaurus | 执行实际的结构、网格及器件仿真 |
| 本项目 MCP 与独立后台执行器 | 为 AI 客户端提供实验准备、任务提交、状态查询和日志读取接口,并启动批处理任务 |

当前发布版本通过服务器上的独立后台执行器启动仿真,不依赖 Codex 操作 VNC Viewer;其他支持相应 MCP 连接方式的 AI 客户端也可接入。VNC 图形界面自动操作、SDE 自动交互建模和原生截图不属于当前发布版本的功能。

开发过程中使用的私人科研工作台、服务器配置和器件实验数据不随本仓库发布。上述背景说明不代表当前 MCP 已完成真实 Sentaurus 端到端验证;验证范围以[验证记录](VALIDATION.md)为准。

## 参考与许可

说明文档的组织参考了 [Playwright MCP](https://github.com/microsoft/playwright-mcp) 和 [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) 的用途介绍、快速开始与分层说明方式。

架构调研参考:[Ansys Mechanical MCP](https://github.com/ansys/pymechanical-mcp)、[Ansys AEDT MCP](https://github.com/ansys/pyaedt-mcp)、[OpenFOAM MCP](https://github.com/SciMate-AI/openfoam-mcp)。本项目独立实现,没有复制这些项目的源代码。

本项目使用官方 MCP Python SDK,版本约束为 `>=1.12,<2`。

本项目原创代码与文档采用 [Apache License 2.0](LICENSE),版权声明:Copyright 2026 HanKin666。第三方依赖遵循各自的许可证。

本许可证不授予 Sentaurus 或其他第三方商业软件的使用权;使用者仍需自行取得相应授权。项目非 Synopsys 官方产品,不包含商业软件、手册或授权文件。

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource/action: listing vs fetching experiment metadata, preparing vs launching an experiment, reading logs vs listing files. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (list_experiments, get_experiment, create_experiment, submit_experiment, read_log, list_artifacts). There is no mixing of conventions or vague verbs.

Tool Count5/5

Six tools is well-scoped for an experiment management server, covering the essential lifecycle without bloat. Each tool serves a clear, necessary role.

Completeness4/5

The surface covers the main workflow: create, submit, monitor (get/read_log), and list artifacts. Missing operations like delete/cancel or update are not explicitly present, but the core experiment lifecycle is well served and the absence is a minor gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues