MCP 服务¶
可选的 Model Context Protocol 服务让 LLM 客户端通过标准工具完成电路校验、仿真、 探索和签核。MCP 与本地 HTTP 服务调用同一组 application operations;数值计算仍由 Rust 求解器和原生 BSIM 后端完成,MCP 本身不包含器件方程。
适配层使用 MCP Python SDK 2.x,并协商 MCP 2026-07-28 协议。初始化响应会明确
上报当前安装的 Circuit Optimization 版本。
安装与启动¶
uv pip install -e ".[mcp]"
# 本地 LLM 客户端推荐使用 stdio
circuit-opt mcp --transport stdio --workspace .
# 等价入口
circuit-opt-mcp --workspace .
python -m circuitopt.mcp --workspace .
本机 Streamable HTTP:
该服务没有鉴权,因此 HTTP transport 会主动拒绝非 loopback 监听地址。使用上述
默认参数时,端点为 http://127.0.0.1:8342/mcp。
客户端配置¶
客户端需要从已安装 Circuit Optimization 和 circuitopt-core 的环境启动:
{
"mcpServers": {
"circuit-optimization": {
"command": "/项目绝对路径/.venv/bin/circuit-opt-mcp",
"args": [
"--workspace",
"/项目绝对路径"
]
}
}
}
客户端启动配置中的路径必然与机器有关;campaign 和测试台内部仍使用项目相对路径, 不会把机器路径写进电路配置。
工具¶
| 工具 | 行为 |
|---|---|
get_capabilities |
返回已安装模型、分析、合法参数、工艺角和任务类型 |
validate_circuit |
校验电路 JSON、分析参数和 signoff 契约 |
run_analysis |
同步运行指定分析并返回有界摘要 |
submit_exploration |
提交设计空间探索 |
submit_mismatch_mc |
提交 mismatch Monte Carlo |
submit_signoff |
提交工作区内的多测试台 PVT campaign |
list_jobs |
列出后台任务 |
get_job |
轮询状态,并可获取摘要或保存完整结果 |
cancel_job |
请求协作式取消 |
inspect_signoff_result |
按 case 和 PVT 筛选已保存的 signoff 结果 |
run_analysis(save_result=true) 会把完整序列化结果写到 results/mcp/;直接响应保留
标量指标,对长向量做压缩。submit_signoff 始终保存完整结果。这样既不会让协议响应
携带数 MB 波形,又不会丢掉 PVT 行或原始数据。
Resources¶
circuitopt://capabilities:JSON 能力快照。circuitopt://workflow:给 LLM 的简短调用顺序。
后台任务与取消¶
探索、失配 MC 和 signoff 共用进程内 JobManager:
取消是协作式的:正在运行的候选、MC 样本或 PVT 点会先结束。被取消的 signoff 会写出
带 stopped_early: true 的部分结果;模型失败和不收敛仍保持显式 invalid,不会被替代。
文件安全¶
--workspace是 MCP 唯一可访问的文件树。- 工具只接受相对路径;绝对路径、
..和符号链接逃逸会立即失败。 - signoff campaign 必须是 JSON。
- 生成结果只能写入已被 Git 忽略的
results/mcp/。 - MCP 不提供任意 shell 执行或任意文件读取。
MCP 与 FastAPI 适配器共用 circuitopt.service.operations;两者都不实现数值逻辑或
静默求解降级。