Skip to main content
Glama
jiangyiqi99

jlceda-ai-agent

by jiangyiqi99

嘉立创 EDA AI Agent

Este es un framework local de automatización de IA para 嘉立创 EDA 专业版. La capa MCP no tiene estado de proyecto; solo el Python Broker conserva en el proceso las conexiones WebSocket y las solicitudes pendientes. Cuando el servicio se detiene, las conexiones, las solicitudes y las imágenes temporales desaparecen.

Arquitectura

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.*)

Las capturas de pantalla no se envían como Base64 por WebSocket. La extensión sube el Blob mediante POST /upload/image y devuelve una URL temporal /files/{id} al llamador de MCP. Las imágenes caducan a los 5 minutos por defecto y se eliminan inmediatamente cuando el servicio finaliza.

Índice

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

Iniciar el backend

El proyecto ya tiene las dependencias instaladas con mcp_server/.venv:

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

Direcciones por defecto:

  • MCP: http://127.0.0.1:8000/mcp

  • WebSocket de la extensión: ws://127.0.0.1:8000/ws

  • Comprobación de estado: http://127.0.0.1:8000/health

  • Subida de imágenes: http://127.0.0.1:8000/upload/image

Configuración automática del cliente MCP

Una vez que el backend está en marcha, puedes ejecutar el script de instalación para que escanee automáticamente los clientes MCP instalados en el equipo y escriba el servicio jlceda-ai-agent en el archivo de configuración global correspondiente:

cd mcp_server
python install.py --install

El script es compatible con clientes como Claude Desktop/Code, Cursor, Windsurf, Codex, Cline, Roo Code, Kilo Code, VS Code, Gemini CLI, OpenCode, Kimi Code, Zed, etc. Solo procesa automáticamente los clientes detectados y no sobrescribe otros servicios MCP de la configuración; si un archivo JSON o TOML no se puede analizar, lo omite.

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 中移除

Después de escribir la configuración, hay que reiniciar completamente el cliente MCP correspondiente. El script de instalación solo se encarga de la configuración del cliente; el backend debe iniciarse por separado como se describe en la siguiente sección.

Variables de entorno disponibles:

Nombre

Valor por defecto

Descripción

JLCEDA_HOST

127.0.0.1

Dirección de escucha

JLCEDA_PORT

8000

Puerto de escucha

JLCEDA_RPC_TIMEOUT

30

Tiempo de espera RPC de la extensión (segundos)

JLCEDA_HEARTBEAT_TIMEOUT

30

Segundos para considerar el proyecto sin conexión

JLCEDA_IMAGE_TTL

300

Duración de las imágenes temporales (segundos)

JLCEDA_MAX_IMAGE_BYTES

12582912

Límite máximo por imagen

JLCEDA_PUBLIC_BASE_URL

vacío

URL base externa tras un proxy inverso

Compilar e instalar la extensión

cd lc_extension
npm install
npm run typecheck
npm run build

Archivos generados:

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

En 安装 嘉立创 EDA 专业版 V3, instala mediante “Avanzado → Administrador de extensiones → Importar”. Después de la instalación es obligatorio habilitar “Permitir interacción externa” en la extensión; de lo contrario, las APIs oficiales SYS_WebSocket y SYS_ClientUrl rechazarán la conexión WebSocket y la subida de imágenes.

La extensión usa el UUID del proyecto activo como project_id y también proporciona el nombre del proyecto en list_projects. Al cambiar de proyecto, el siguiente heartbeat vuelve a registrarla automáticamente. Por lo tanto, la IA debe llamar primero a list_projects e incluir el project_id devuelto en cada uso posterior de las herramientas de EDA.

Si la dirección del backend cambia, sincroniza también:

lc_extension/src/config.ts

Herramientas MCP

Proyectos y bibliotecas:

  • list_projects, project.get_info

  • component.search

Lectura y comprobación de esquemáticos:

  • schematic.get_info, schematic.get_netlist, schematic.run_drc

Componentes y limpieza de esquemáticos:

  • schematic.place_component, schematic.add_component

  • schematic.modify_component, schematic.delete_components

  • schematic.delete_wires, schematic.modify_wire, schematic.clear

  • schematic.clear_pin_no_connect? Wait source schematic.set_pin_no_connect. Need preserve.

Let's check list order: Source: "* schematic.place_componentschematic.add_component

  • schematic.modify_componentschematic.delete_components

  • schematic.delete_wiresschematic.modify_wireschematic.clear

  • schematic.set_pin_no_connect"

We'll use.

Redes y cableado de esquemáticos:

  • schematic.create_net_flag, schematic.create_net_port

  • schematic.create_net_label, schematic.connect_net

  • schematic.create_wire, schematic.connect

  • schematic.auto_layout, schematic.auto_route

PCB:

  • pcb.get_info, pcb.place_component, pcb.modify_component, pcb.delete_components

  • pcb.create_track, pcb.modify_track, pcb.create_board_outline

  • pcb.create_via, pcb.modify_via, pcb.delete_routing_primitives

  • pcb.clear_routing, pcb.route_net, pcb.auto_route, pcb.auto_layout

  • pcb.run_drc

Capturas:

  • capture.schematic, capture.pcb, capture.region

El flujo recomendado de selección de componentes es el siguiente: primero se llama a component.search para leer el nombre, la descripción, el símbolo, la huella, el modelo 3D, los atributos extendidos y library_uuid/device_uuid de cada posible componente; cuando la IA elige una vez conoce estas propiedades, pasa los dos UUID a schematic.place_component para colocarlo con precisión. Los resultados de la búsqueda se devuelven por páginas (20 por defecto, 100 por página como máximo); cuando has_more es true, la IA puede solicitar la siguiente página, evitando saturar el contexto del modelo con una gran cantidad de candidatos. schematic.add_component se mantiene como herramienta rápida de compatibilidad: buscar y colocar el primer resultado.

Para conectar esquemáticos entre distintas zonas se prefiere schematic.connect_net, que coloca las banderas de red, los puertos o las etiquetas del mismo nombre directamente sobre los pines de destino, sin causar cortocircuitos involuntarios por el cruce de cables. Cuando se necesita dibujar cables físicos, usa waypoints de schematic.connect o points de schematic.create_wire para especificar trayectorias ortogonales. Por defecto se comprueba la intersección con hilos de otras redes y se rechaza una operación peligrosa con WIRE_CROSSING. Solo se restringe en la protección cuando el invocador pasa explícitamente allow_crossings=true.

schematic.clear elimina los componentes colocados, las banderas de red y los cables de la página esquemática actual, pero conserva los elementos del marco/título que no tienen pines, referencia de componente ni red. Para una limpieza más precisa, puedes usar schematic.delete_components o schematic.delete_wires.

pcb.route_net llama al enrutado automático de una sola red de 嘉立创; pcb.auto_route admite una lista blanca de redes, una lista de exclusión y políticas de velocidad/plegaje. Tanto el DRC de esquemáticos como el de la placa PCB usan el modo de resultados detallados. Algunas APIs de 嘉立创 siguen estando marcadas como Beta; tras actualizar el EDA, debes volver a ejecutar la comprobación de tipos de TypeScript y hacer una regresión en un dispositivo real.

Verificación

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

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

La verificación automática actual incluye la validación de protocolo, el viaje de ida y vuelta de Broker RPC, la comprobación de capacidades, la subida/lectura de imágenes HTTP y la comprobación de tipos oficial de la extensión con empaquetado .eext.

Límites de diseño

  • No se usa Redis, SQLite ni ninguna base de datos.

  • Las herramientas MCP no mantienen conexión WebSocket, ni estado de proyecto ni de EDA.

  • Broker solo conserva las conexiones en línea, los latidos y las solicitudes en espera.

  • La extensión no conoce MCP; solo gestiona JSON RPC de Broker.

  • No se almacena conversaciones de IA ni datos de esquemático/placa.

  • Las imágenes solo residen en el directorio temporal del sistema y se limpian según el TTL.

Referencia oficial de 嘉立创: Introducción a la API de extensionesLlamada a las API de extensionesSYS_WebSocket

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • Free public MCP for AI agents — 193 tools, 44 workflows. No API key.

  • First AI Agent e-commerce marketplace with 74+ AI products, MCP protocol, and Alipay payments

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jiangyiqi99/lceda_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server