jiangyiqi99

嘉立创 EDA AI Agent

Community jiangyiqi99
Updated

嘉立创 EDA AI Agent

这是一个面向嘉立创 EDA 专业版的本地 AI 自动化框架。MCP 层无项目状态;只有 Python Broker 在进程内保存 WebSocket 连接和待处理请求。服务停止后,连接、请求和临时图片都会消失。

架构

MCP Client / AI Agent
        |
        | Streamable HTTP: POST /mcp
        v
Stateless MCP tools
        |
        | in-process call
        v
In-memory asyncio Broker
        |
        | JSON over WebSocket: /ws
        v
JLCEDA TypeScript Extension
        |
        v
JLCEDA Extension API (eda.*)

截图不会通过 WebSocket 传 Base64。Extension 通过 POST /upload/image 上传 Blob,并将 /files/{id} 临时 URL 返回给 MCP 调用方。图片默认 5 分钟过期,服务退出时立即删除。

目录

mcp_server/
  main.py                 # 独立服务入口
  application.py          # HTTP、WebSocket、MCP ASGI 组合
  mcp_api/                # 无状态 MCP 工具定义
  broker/                 # 唯一有状态组件(仅内存)
  protocol/               # WebSocket JSON 协议
  files/                  # 临时图片存储
  tests/

lc_extension/
  src/main.ts
  src/websocket/          # 注册、心跳、RPC 响应、重连
  src/commands/           # schematic、PCB、DRC、capture
  src/utils/
  extension.json
  build/dist/             # npm run build 生成 .eext

启动后端

项目已经使用 mcp_server/.venv 安装依赖:

cd mcp_server
source .venv/bin/activate
python main.py

默认地址:

  • MCP:http://127.0.0.1:8000/mcp
  • Extension WebSocket:ws://127.0.0.1:8000/ws
  • 健康检查:http://127.0.0.1:8000/health
  • 图片上传:http://127.0.0.1:8000/upload/image

自动配置 MCP Client

后端启动后,可运行安装脚本自动扫描本机已安装的 MCP Client,并把jlceda-ai-agent 服务写入相应的全局配置文件:

cd mcp_server
python install.py --install

脚本支持 Claude Desktop/Code、Cursor、Windsurf、Codex、Cline、Roo Code、Kilo Code、VS Code、Gemini CLI、OpenCode、Kimi Code、Zed 等常见 Client。它只自动处理已检测到的 Client,不会覆盖配置中的其他 MCP 服务;JSON 或TOML 无法解析时会跳过该文件。

python install.py --list                         # 查看支持项及扫描结果
python install.py --install codex,cursor         # 指定 Client
python install.py --url http://127.0.0.1:9000/mcp
python install.py --dry-run                      # 只预览
python install.py --uninstall                    # 从检测到的 Client 中移除

写入配置后需要完全重启对应的 MCP Client。安装脚本只负责 Client 配置,后端服务仍需按下节所述单独启动。

可用环境变量:

名称 默认值 说明
JLCEDA_HOST 127.0.0.1 监听地址
JLCEDA_PORT 8000 监听端口
JLCEDA_RPC_TIMEOUT 30 Extension RPC 超时秒数
JLCEDA_HEARTBEAT_TIMEOUT 30 项目离线判定秒数
JLCEDA_IMAGE_TTL 300 临时图片有效期秒数
JLCEDA_MAX_IMAGE_BYTES 12582912 单张图片上限
JLCEDA_PUBLIC_BASE_URL 反向代理后对外返回的基础 URL

构建并安装 Extension

cd lc_extension
npm install
npm run typecheck
npm run build

生成文件:

lc_extension/build/dist/jlceda-ai-agent_v0.1.0.eext

在嘉立创 EDA 专业版 V3 中通过“高级 → 扩展管理器 → 导入”安装。安装后必须为该扩展启用“允许外部交互”,否则官方 SYS_WebSocketSYS_ClientUrl API 会拒绝 WebSocket 与图片上传。

Extension 使用当前工程 UUID 作为 project_id,同时在 list_projects 中提供工程名称。切换工程后,下一次心跳会自动重新注册。因此 AI 应先调用 list_projects,再将返回的 project_id 放进后续每个 EDA 工具调用。

如果后端地址改变,请同步修改:

lc_extension/src/config.ts

MCP 工具

工程与库:

  • list_projectsproject.get_info
  • component.search

原理图读取与检查:

  • schematic.get_infoschematic.get_netlistschematic.run_drc

原理图器件与清理:

  • schematic.place_componentschematic.add_component
  • schematic.modify_componentschematic.delete_components
  • schematic.delete_wiresschematic.modify_wireschematic.clear
  • schematic.set_pin_no_connect

原理图网络与布线:

  • schematic.create_net_flagschematic.create_net_port
  • schematic.create_net_labelschematic.connect_net
  • schematic.create_wireschematic.connect
  • schematic.auto_layoutschematic.auto_route

PCB:

  • pcb.get_infopcb.place_componentpcb.modify_componentpcb.delete_components
  • pcb.create_trackpcb.modify_trackpcb.create_board_outline
  • pcb.create_viapcb.modify_viapcb.delete_routing_primitives
  • pcb.clear_routingpcb.route_netpcb.auto_routepcb.auto_layout
  • pcb.run_drc

截图:

  • capture.schematiccapture.pcbcapture.region

推荐的 AI 选型流程是:先调用 component.search,读取每个候选项的名称、描述、符号、封装、3D 模型、扩展属性以及 library_uuid/device_uuid;AI 选定后,再将这两个 UUID 传给 schematic.place_component 精确放置。搜索结果按页返回(默认 20、最多 100 条/页),当 has_moretrue 时 AI 可以继续请求下一页,避免一次把大量候选塞满模型上下文。schematic.add_component 仍保留为“搜索并放置第一个结果”的兼容快捷工具。

跨区域原理图连接优先使用 schematic.connect_net。它把同名网络标志、端口或标签直接放到各个目标引脚上,不会因导线交叉形成意外短路。需要绘制实体导线时,使用 schematic.connectwaypointsschematic.create_wirepoints显式指定正交路径;默认会检查与不同网络导线的相交,并以 WIRE_CROSSING 拒绝危险操作。只有调用方明确传入 allow_crossings=true 时才跳过该保护。

schematic.clear 会删除当前图页中的已放置器件、网络标志和导线,但保留无引脚、无位号、无网络的图框/标题栏图元。精确清理可改用 schematic.delete_componentsschematic.delete_wires

pcb.route_net 会调用嘉立创的单网络自动布线;pcb.auto_route 支持网络白名单、排除列表和速度/布通率策略。原理图与 PCB 的 DRC 均使用详细结果模式。部分嘉立创 API仍标记为 Beta,升级 EDA 后应重新运行 TypeScript 类型检查并做真机回归。

验证

cd mcp_server
.venv/bin/python -m pytest -q

cd ../lc_extension
npm audit --audit-level=moderate
npm run typecheck
npm run build

当前自动验证包含协议校验、Broker RPC 往返、能力检查、HTTP 图片上传/读取,以及 Extension 的官方类型检查和 .eext 打包。

设计边界

  • 不使用 Redis、SQLite 或任何数据库。
  • MCP 工具不持有 WebSocket、工程或 EDA 状态。
  • Broker 只保存在线连接、心跳时间和正在等待的请求。
  • Extension 不认识 MCP,只处理 Broker JSON RPC。
  • 不存储 AI 对话或 PCB/原理图数据。
  • 图片只存在系统临时目录并按 TTL 清理。

嘉立创官方参考:扩展 API 入门调用扩展 APISYS_WebSocket

MCP Server · Populars

MCP Server · New

    qcri

    🦡 codebadger

    🦡 codebadger is a containerized Model Context Protocol (MCP) server that gives AI agents and LLMs deep, queryable access to a codebase's structure and data flow through Joern Code Property Graphs (CPGs).

    Community qcri
    boringSQL

    DryRun PostgreSQL MCP

    PostgreSQL schema intelligence MCP server with offline linting, migration safety, query validation for AI coding assistants.

    Community boringSQL
    emerzon

    mtdata

    A MetaTrader 5 research toolkit with 90+ AI tools for forecasting, regime detection, pattern recognition, and live trading.

    Community emerzon
    OpenImageDebugger

    Open Image Debugger: Enabling visualization of in-memory buffers on GDB/LLDB

    An advanced in-memory image visualization plugin for GDB and LLDB on Linux, with experimental support for MacOS and Windows. Previously known as gdb-imagewatch. Also available as an extension for VSCode and forks

    Community OpenImageDebugger
    HQBase

    HQBase

    Your team's email workspace. In your Cloudflare account.

    Community HQBase