Skip to main content
Glama
README.md
# Multisim MCP + Skills

[![Glama MCP server score](https://glama.ai/mcp/servers/yxy050208/multisim-mcp/badges/score.svg)](https://glama.ai/mcp/servers/yxy050208/multisim-mcp)
[![DeepSeek Harness npm bundle](https://img.shields.io/npm/v/multisim-mcp-dsh-plugin.svg?label=dsh%20plugin)](https://www.npmjs.com/package/multisim-mcp-dsh-plugin)

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

让 AI Agent 根据实验要求自动生成 Multisim 电路、运行仿真、提取实验数据,并导出
电路图、CSV、波形图和实验报告。

> 当前源码候选版为 `1.3.0rc3`;GitHub/PyPI 当前公开稳定版仍为 `v1.2.0`,rc3 尚未创建公开标签或发行包。项目非 NI 官方产品,需要本机安装并授权
> Multisim 14+;COM 在独立 32 位 Python worker 中运行,MCP 前端可使用 32 或 64 位
> Python。

开发分支已加入[组合模拟电路原生工作流](docs/COMPOSED_ANALOG_WORKFLOW.md):宿主 AI
可通过 `run_generated_analog_project` 提交组合网表与采样指标,完成原生连接核对、
OP/AC、完整电路图和报告导出。已在 Multisim 14.3 实测两级(14 器件)和四级
(24 器件)RC+理想运放电路;这不代表任意真实芯片或开关电源已支持。
另已完成 [LM324AJ 毕业设计场景插件验收](docs/THESIS_PLUGIN_ACCEPTANCE_20260909.md):
经 MCP stdio 生成两级电路,运行原生 OP/AC/TRAN,根据测量校准零点后以相同指标复验。
真实模型依赖本地授权模板;校准电压源的硬件实现和其他芯片仍未验收。

新增 [2N3904 共射原生验收](docs/COMMON_EMITTER_NATIVE_ACCEPTANCE.md):通过
`run_natural_common_emitter` 执行中文需求,生成原生图纸并检查工作点、1kHz 增益和
脉冲响应。图纸使用真实直流/脉冲源、共射布局和隐藏测量面板。要求重建本地模板包,
当前仅实测 Multisim 14.3;新工程仍需图面复核,不代表第二阶段全部完成。

当前源码候选版的准确变更、验证结果和发布边界见
[`1.3.0rc3 发布说明`](docs/RELEASE_NOTES_v1.3.0rc3.md);已发布的 rc1 仍保留在
[`rc1 发布说明`](docs/RELEASE_NOTES_v1.3.0rc1.md)。

后续源码开发新增 [桥式整流原生插件工作流](docs/RECTIFIER_NATIVE_ACCEPTANCE.md):
`run_natural_rectifier` 从低压交流输入、负载电流和纹波要求生成 1N4001GP 桥式电路,
核对原生模型、引脚及保存参数,运行 OP/TRAN 并导出图纸、波形与报告。
已完成默认工况、4V/5mA、18V/60Hz/200mA 和更严格纹波工况的本机实测。
这些新增能力属于源码候选版,尚未进入公开发行包;不包含稳压电源或实物设计认证。

进一步新增 [原生整流电容优化闭环](docs/RECTIFIER_OPTIMIZATION.md):
`optimize_natural_rectifier` 固定负载比较九个电容候选,检查输入/负载/电容变化及启动,
选定通过全部声明工况的最小候选,重开保存工程复验并导出对比报告。
12V/100mA/纹波≤0.3V 的本机测试完成 27 次原生运行,将电容从4700μF降至3900μF。

> `v1.2.0` 是**不含 React 前端的 MCP Core 正式版**:包含 Python MCP 服务、CLI、EDA
> 核心、模型/DeepSeek 适配、测试、文档及可选 loopback 桥接 API;不包含仍在独立
> 开发的 React Workbench 前端。GitHub、PyPI 与 MCP Registry 均已发布 `v1.2.0`。

四个开发阶段和 1.0 发布门禁见 [`1.0 路线图`](docs/ROADMAP_TO_1.0.md)。

[PyPI 安装包](https://pypi.org/project/multisim-mcp/) ·
[官方 MCP Registry 条目](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.yxy050208%2Fmultisim-mcp) ·
[DeepSeek Harness npm 插件](https://www.npmjs.com/package/multisim-mcp-dsh-plugin) ·
[GitHub Release](https://github.com/yxy050208/multisim-mcp/releases/tag/v1.2.0)

## 开源发布状态

`1.2.0` 已同步发布到 GitHub Release、PyPI 与
`io.github.yxy050208/multisim-mcp` 官方 MCP Registry 条目。由本地 NI
样例提取的 XML 模板不属于
MIT 代码授权范围,公开仓库默认不应包含这些文件。用户需要运行
`tools/bootstrap_local_component_pack.py`,从自己已授权的 Multisim 安装生成本地模板包。

请不要上传 `analysis/`、`.ms14`、解码 XML、类型库转储、实验输出或当前包含 142 个
本地模板的开发 wheel。完整发布步骤见 [`docs/PUBLISHING.md`](docs/PUBLISHING.md)。

`1.2.0` 正式核心将公共面扩展为 78 个工具、20 个资源模板和 5 个双语提示词,新增
审批式设计规划、诊断/补丁评估、全局优化、自主纠错、Multisim/ngspice 差分验证与
可恢复作业。详情见 [`v1.2.0 发布说明`](docs/RELEASE_NOTES_v1.2.0.md)。

开发分支新增只读的 `review_design_requirements` 需求契约审查:在基线实验前区分硬约束、
软目标、偏好和假设,并拦截同一信号上的明显冲突。接口说明见
[`需求契约审查`](docs/REQUIREMENT_ENGINEERING.md)。
开发分支还新增 `bind_requirement_review_to_design`,把契约绑定到已有设计快照并报告
缺失信号与可优化参数,以及 `snapshot_open_circuit` 的 COM 导入快照入口;已发布的
`v1.2.0` 仍保持 78 个工具,开发分支公共面为 95 个工具。

开发分支已提供 [自然语言 RC/RLC/OPAMP 工程入口](docs/NATURAL_ENGINEERING.md):从明确的中文/英文需求生成
可编辑 Multisim 工程,原生仿真并比较 E24 候选,导出带验收状态的报告。当前为有限规则解析,
尚不代表通用 AI 自动设计或任意电路支持。
可选 `--planner model` 接入已配置的模型,先检查原始需求与提案的一致性,再执行原生实验。
模型调用、拒绝原因和原生实验会共同留档;本机 Ollama/Qwen3 与 Multisim 14.3 已完成一次真实联合测试。
绑定结果中的 `native_optimization_readiness` 带有完整性摘要;在用户明确批准、通过运行时门禁后,
`run_native_parameter_sweep` 才会对当前打开工程执行有界 R/C/L 参数扫描,并在每次运行后恢复原值。
扫描完成后可用 `rank_native_sweep_results` 按均值、峰峰值、RMS 或目标值距离自动排序候选方案。
`prepare_native_sweep_patch` 会把最佳候选转换为现有审批体系可处理的标准可逆 `DesignPatch`。
通过显式审批后,`apply_native_sweep_patch_to_copy` 只写入新的 `.ms14` 副本,并重新打开源工程。
`compare_native_sweep_baseline` 会自动识别原始参数组并计算改进量;
`export_native_sweep_report` 导出中文为主的 Markdown、JSON 和 SHA-256 清单;传入已批准生成的
`.ms14` 副本后,还会把优化工程复制到报告目录并建立相对链接,形成可移交的证据包;传入原始
扫描结果后,还会生成基线/优化波形 CSV 与 SVG 对照图。

## 已实现的完整闭环

`run_circuit_experiment` 可以从同一份受限 SPICE 网表完成:

1. 网表和实验命令安全校验。
2. 生成可编辑 `.ms14` 原理图。
3. 由真实 Multisim 打开并反向枚举验证。
4. 导出原理图 PNG。
5. 运行 DC、AC、瞬态或工作点实验。
6. 导出 raw、CSV、SVG 波形和命令日志。
7. 生成 Markdown、中英双语独立 HTML/PDF 报告及带 SHA-256 的 `manifest.json`。

对于较长实验,`submit_circuit_experiment` 持久任务接口会立即返回
`job_id`,可通过 `get_experiment_job`、`list_experiment_jobs`、
`cancel_experiment_job`、`retry_experiment_job` 或 `multisim://jobs/{job_id}` 查询、
取消和重试任务。每个实验
运行在隔离任务进程中;全部 Multisim COM/编解码操作还会进入长期驻留的 32 位
COM worker。worker 崩溃、RPC 超时或心跳超时不会拖垮 MCP 服务,后续调用可重启
COM worker,服务重启后未完成任务会安全地重新排队。

1.0 还加入了可计算的设计验收与批量实验:

- `run_verified_circuit_experiment` 接收版本化 `ExperimentSpec`,自动测量时域频率、
  THD、增益、带宽、截止频率、上升时间、过冲、纹波、功耗等指标,并把逐项
  `pass` / `fail` / `unverified` 结论写入 `verification.json` 和实验报告。
- `measure_experiment` 与 `verify_experiment_requirements` 可对已注册实验重新计算
  指标;信号或证据缺失时只返回 `unverified`,不会猜测结果。
- `plan_experiment_sweep`、`run_experiment_sweep`、`submit_experiment_sweep` 支持
  参数、容差、温度与可复现 Monte Carlo 扫描。每次扫描最多 100 个运行点,长扫描
  复用持久任务的取消、超时、崩溃恢复与输出锁。
- 扫描输出 `summary.json`、扁平 `data.csv` 和每个运行点的原始产物,并通过
  `multisim://sweeps/{sweep_id}/summary|data` 读取。

验收请求的核心结构如下;`operator` 支持 `at_least`、`at_most`、`between` 和
`approximately`:

```json
{
  "spec": {
    "schema_version": 1,
    "title": "分压器验收",
    "netlist": "VIN vin 0 DC 10\nR1 vin vout 1k\nR2 vout 0 1k\n.end\n",
    "commands": "dc VIN 0 10 1",
    "requirements": [
      {
        "id": "gain",
        "metric": "gain",
        "signal": "V(vout)",
        "reference_signal": "V(vin)",
        "operator": "approximately",
        "target": 0.5,
        "tolerance_percent": 1
      }
    ],
    "theoretical_values": {"gain": 0.5}
  },
  "output_dir": "C:\\experiments\\divider-verified"
}
```

扫描的 `mode` 可设为 `parameter`、`tolerance`、`temperature` 或
`monte_carlo`。元件数值使用有限数字替换已声明的 `{{NAME}}` 占位符;建议先调用
`plan_experiment_sweep` 检查完整展开结果,再提交真实运行。

已经在 Multisim 14.3 上完成分压器、耦合电感、数字门/JK 时序以及
函数发生器 + 示波器联合实验的真实验证。

1.0 加入不分发 NI 数据库资产的可移植元件与数据仪器:

- `@TRANSFORMER`、`@POTENTIOMETER`、`@RELAY`、`@CRYSTAL`、功率二极管/MOS;
- `@DFF`、`@TFF`、`@COUNTER4`、`@SHIFT_REGISTER4`、`@ADC1`、`@DAC1`;
- `read_virtual_multimeter`、`analyze_bode_response` 和 `analyze_logic_signals`;
- `export_formal_experiment_report`,以及 5 个新的正式报告/清单 Resource。

适配器语法与社区 JSON 接口见 [`docs/COMPONENT_ADAPTERS.md`](docs/COMPONENT_ADAPTERS.md),
真实版本边界见 [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md)。
工作目录持久化格式见 [`docs/WORKSPACE_MANIFESTS.md`](docs/WORKSPACE_MANIFESTS.md)。
1.0 真实回归覆盖适配器原理图打开/回导、变压器瞬态、继电器与功率器件工作点、
晶振 AC、DFF 瞬态以及双语正式报告的完整事务发布。

## 能力成熟度

稳定:

- Multisim COM 连接、打开、保存、枚举和导出。
- DC/AC/瞬态分析、波形输入注入、RLC 读写。
- 安全子集 SPICE 实验和 raw/CSV 解析。
- MCP stdio、运行环境诊断和报告生成。
- 持久实验队列、进度/取消/超时、输出锁和崩溃/无响应 worker 恢复。
- 版本化实验指标、严格 PASS/FAIL/未验证判定,以及四类确定性批量扫描。
- 项目、实验和优化目录共用的版本化 manifest,支持修订、状态恢复和 SHA-256 完整性校验。

实验性:

- 自动原理图支持 R/L/C、标量及波形电压/电流源、B/E/F/G/H 受控源、
  K/T/O/U 耦合与传输线、二极管、NPN/PNP、NMOS/PMOS、JFET/MESFET、
  电压/电流控制开关、五端运放及 2–16 端通用 X 子电路;扩展族暂用通用载体符号。生成后会通过
  Multisim 反向网表确认器件没有被静默丢弃。
- 直接粘贴的厂商 `.subckt` 宏模型可递归展开为可编辑原生器件,保留嵌套依赖、
  局部节点和 `PARAMS:` 参数;`editable_model_coverage` 会区分完整展开、部分展开和
  仅载体状态,详见 [`docs/VENDOR_SPICE_MODELS.md`](docs/VENDOR_SPICE_MODELS.md)。
- 已加入原生 NOT/AND/OR/NAND/NOR/XOR/XNOR 和 JK 触发器预览;
  原理图打开/回导、组合逻辑真值表和 JK 翻转时序均已真实验证。
- 支持原生 XFG 函数发生器和四通道 XSC 示波器状态,实验波形同时导出为
  CSV、SVG 和 Markdown 报告。
- 自动生成的原理图探针暂不作为实验数据来源;实验数据来自同一网表经 Multisim
  命令引擎执行的结果。

## 快速开始

### AI Agent Preview 安装

在源码目录运行以下命令可为多个 Agent 生成 MCP 配置。Agent 可以是 64 位,
`-Python32` 必须指向已安装 pywin32 且能连接 Multisim 的 32 位 Python:

```powershell
.\tools\install-agent.ps1 `
  -Client all `
  -Python32 C:\path\to\python32\python.exe
```

配置会写入 `generated-config/`。将对应 JSON 的 `mcpServers.multisim` 节点复制到
Qwen、ChatGPT、DeepSeek 或其他支持 MCP 的 Agent 配置后重启客户端,再调用
`runtime_status` 自检。完整边界见 [`多 Agent 安装说明`](docs/MULTI_CLIENT_INSTALL.md)。

最简单的兼容部署仍是直接安装到 32 位 Python:

```powershell
C:\path\to\python32\python.exe -m pip install "multisim-mcp==1.1.0"
C:\path\to\python32\Scripts\multisim-mcp.exe
```

也可以把 MCP 前端安装到 64 位 Python,并为 COM worker 单独保留一套安装了本项目和
`pywin32` 的 32 位 Python。若系统 `py` launcher 能发现 32 位 Python,会自动选择;
否则设置:

```powershell
$env:MULTISIM_MCP_WORKER_PYTHON = 'C:\path\to\python32\python.exe'
C:\path\to\python64\python.exe -m multisim_mcp.server
```

Linux/Docker 仅提供 MCP 工具发现和兼容性诊断,不能运行 Multisim 仿真。容器中的
`runtime_status` 会返回 `introspection-only`;所有 COM 自动化能力仍要求上述 Windows
环境。根目录 `Dockerfile` 用于 Glama 等目录验证 MCP 协议和工具定义。

从源码安装并生成本地元件模板包:

```powershell
cd mcp_server
.\setup.ps1 -Python C:\path\to\python32\python.exe
npm install --global electronics-workbench-decoder@0.2.0
cd ..
$env:PYTHONPATH = (Resolve-Path .\mcp_server).Path
C:\path\to\python32\python.exe .\tools\bootstrap_local_component_pack.py `
  --output C:\MultisimMcp\component-pack
$env:MULTISIM_MCP_TEMPLATE_DIR = 'C:\MultisimMcp\component-pack'
cd mcp_server
.\run_server.ps1
```

模板包生成器会连接已授权的 Multisim,并新建一个临时空白电路以取得与当前安装版本
一致的工程骨架;执行前请保存正在编辑的工作。alpha 版本生成的 schema 1 包需要重建。

`v1.1.0` 提供安装诊断和配置生成命令。默认情况下它们不会启动
Multisim,也不会修改现有客户端配置:

```powershell
# 人类可读诊断;完整工作流未就绪时给出逐项修复建议
C:\path\to\python32\Scripts\multisim-mcp.exe doctor --lang zh

# 可选:显式启动/连接 Multisim,验证许可证和 COM 激活
C:\path\to\python32\Scripts\multisim-mcp.exe doctor --lang zh --connect

# 便于 Agent/脚本解析的稳定 JSON;--strict 可用于 CI
C:\path\to\python32\Scripts\multisim-mcp.exe --json doctor

# 输出 Claude Desktop JSON 片段
C:\path\to\python32\Scripts\multisim-mcp.exe config `
  --client claude-desktop `
  --python C:\path\to\python32\python.exe `
  --template-dir C:\MultisimMcp\component-pack

# 输出 Codex config.toml 片段
C:\path\to\python32\Scripts\multisim-mcp.exe config `
  --client codex `
  --python C:\path\to\python64\python.exe `
  --worker-python C:\path\to\python32\python.exe `
  --template-dir C:\MultisimMcp\component-pack

# 输出 DeepSeek Harness Cordis 插件片段
C:\path\to\python32\Scripts\multisim-mcp.exe config `
  --client deepseek-harness `
  --python C:\path\to\python32\python.exe `
  --template-dir C:\MultisimMcp\component-pack `
  --work-dir C:\msre_exp `
  --artifact-export-dir C:\MultisimMcp\exports `
  --tool-profile experiment

# 在 Harness 项目根安装五个双语实验 Skill
C:\path\to\python32\Scripts\multisim-mcp.exe harness-skills --output .dsh/skills

# 自动发现模型 Provider 并安全预览(不写文件、不联网)
C:\path\to\python32\Scripts\multisim-mcp.exe configure --auto --json

# 确认后写入仅含环境变量引用的配置
C:\path\to\python32\Scripts\multisim-mcp.exe configure --auto --apply

# 使用 UTF-8 文件做一次明确、无工具的模型调用
C:\path\to\python32\Scripts\multisim-mcp.exe model `
  --input .\prompt.txt `
  --json

# 显式启用四个只读 EDA 工具分析安全 SPICE 网表(不会执行网表)
C:\path\to\python32\Scripts\multisim-mcp.exe model-diagnose `
  --input .\diagnosis-prompt.txt `
  --netlist .\circuit.cir `
  --json
```

配置生成器默认只打印可复制片段;`--output` 写入新文件,除非再传入 `--force`,
否则不会覆盖已有文件。它不会自动合并 Claude Desktop、Codex 或 Harness 的现有配置。
DeepSeek 模型与官方 Harness 的分层、凭据边界和版本兼容性见
[`DeepSeek / Harness 适配说明`](docs/DEEPSEEK_HARNESS.md)。
`--tool-profile core|experiment|optimization|full` 可限制客户端发现的工具;
省略时保持 112 个工具全部可用的 `full` 兼容模式。产物导出只有在设置
`--artifact-export-dir` 后可用,并且只能写入该目录之下。
Harness Skill 安装默认不覆盖现有文件;需要恢复打包版本时显式增加 `--force`。
模型 Provider 自助配置支持 DeepSeek、OpenAI、Ollama 和任意
OpenAI-compatible 服务;默认只预览,`--apply` 才原子写入,`--probe` 才联网。
配置文件不会保存 API Key 值。完整变量表、手动配置和安全边界见
[`模型 Provider 自助配置`](docs/MODEL_PROVIDER_CONFIGURATION.md)。
第一版模型运行时支持非流式 Chat Completions、用量、取消、显式失败回退和白名单
有界工具循环;普通 `model` 命令不公开工具。独立的 `model-diagnose` 可对严格
`CircuitDesign` JSON 或安全 SPICE 网表启用四个只读 EDA 工具,不执行仿真或修改设计。
详见 [`模型 Provider 运行时`](docs/MODEL_PROVIDER_RUNTIME.md) 与
[`只读 EDA 模型诊断`](docs/READ_ONLY_EDA_DIAGNOSIS.md)。
仓库维护者可用 `python tools/check_deepseek_harness_compat.py --json` 验证固定的
Harness 本地契约;版本与上游检查细节见适配说明。
需要把集成作为 Harness 插件安装时,可使用
[`integrations/deepseek-harness`](integrations/deepseek-harness) 中的独立 bundle;
`multisim-mcp-dsh-plugin@1.1.0` 已公开发布到 npm。固定版本安装命令为
`dsh plugin --profile web add multisim-mcp-dsh-plugin@1.1.0`;维护者的发布后
Trusted Publishing 与后续 OIDC 暂存流程见
[`npm 发布手册`](docs/DEEPSEEK_HARNESS_NPM_RELEASE.md)。

手工 MCP 客户端配置:

```json
{
  "mcpServers": {
    "multisim": {
      "command": "C:\\path\\to\\python32\\python.exe",
      "args": ["-m", "multisim_mcp.server"]
    }
  }
}
```

详细安装、工具、安全开关和测试说明见 [`mcp_server/README.md`](mcp_server/README.md)。
元件覆盖和剩余边界见 [`docs/COMPONENT_COVERAGE.md`](docs/COMPONENT_COVERAGE.md)。
从 alpha 升级请阅读 [`docs/MIGRATION_TO_1.0.md`](docs/MIGRATION_TO_1.0.md);任务与
实验恢复流程见 [`docs/RECOVERY.md`](docs/RECOVERY.md)。
1.0 之后的纠错、优化、多 EDA 后端和可视化工作台计划见
[`2.0 综合路线图`](docs/ROADMAP_TO_2.0.md)。阶段 A 已加入第一版传输无关
[`EDA 核心与后端边界`](docs/EDA_CORE.md)和受限 SPICE 转换器;原理图生成与独立
SPICE 仿真、同步/验证/持久任务完整实验均已通过应用服务执行,现有 MCP 工具签名与
job 存储格式保持兼容;实验 staging、报告、原子发布和回滚已移入独立流水线。
面向 DeepSeek Harness、其他 Agent 和未来 Workbench 的稳定返回值约定见
[`Agent API 契约`](docs/AGENT_API.md),可从 `runtime_status.api_contract` 读取。
产品定位、标准审批流程、极简界面原则和“AI 工程电路控制台”路线见
[`产品愿景`](docs/PRODUCT_VISION.md)。

## 仓库结构

- `mcp_server/`:MCP server、COM adapter、原理图构建器和测试。
- `skills/multisim-workflow/`:面向 Agent 的实验工作流。
- `docs/`:架构、实测流程和能力边界。
- `analysis/`、`tools/`:互操作研究材料;发布前需要独立做来源和隐私审计。

## 安全

- 默认只允许 `op`、`dc`、`ac`、`tran` 实验命令。
- 任意 Multisim 命令文件默认关闭,需要显式不安全环境开关。
- MCP 启动过程不会自动安装 Python 或 npm 依赖。
- 默认拒绝覆盖已有实验文件。
- 仅适合可信本机 stdio 使用,不应直接暴露到网络。

详见 [`SECURITY.md`](SECURITY.md)。

## License

项目自有代码采用 MIT License。NI Multisim、商标、格式以及本地安装样本仍受其各自
权利和许可条款约束。本仓库不应提交 NI 二进制、许可证材料或未确认可再分发的样本。