jlceda-ai-agent
嘉立创 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 生成 .eextIniciar el backend
El proyecto ya tiene las dependencias instaladas con mcp_server/.venv:
cd mcp_server
source .venv/bin/activate
python main.pyDirecciones por defecto:
MCP:
http://127.0.0.1:8000/mcpWebSocket de la extensión:
ws://127.0.0.1:8000/wsComprobación de estado:
http://127.0.0.1:8000/healthSubida 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 --installEl 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 |
|
| Dirección de escucha |
|
| Puerto de escucha |
|
| Tiempo de espera RPC de la extensión (segundos) |
|
| Segundos para considerar el proyecto sin conexión |
|
| Duración de las imágenes temporales (segundos) |
|
| Límite máximo por imagen |
| 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 buildArchivos generados:
lc_extension/build/dist/jlceda-ai-agent_v0.1.0.eextEn 安装 嘉立创 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.tsHerramientas MCP
Proyectos y bibliotecas:
list_projects,project.get_infocomponent.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_componentschematic.modify_component,schematic.delete_componentsschematic.delete_wires,schematic.modify_wire,schematic.clearschematic.clear_pin_no_connect? Wait sourceschematic.set_pin_no_connect. Need preserve.
Let's check list order:
Source:
"* schematic.place_component、schematic.add_component
schematic.modify_component、schematic.delete_componentsschematic.delete_wires、schematic.modify_wire、schematic.clearschematic.set_pin_no_connect"
We'll use.
Redes y cableado de esquemáticos:
schematic.create_net_flag,schematic.create_net_portschematic.create_net_label,schematic.connect_netschematic.create_wire,schematic.connectschematic.auto_layout,schematic.auto_route
PCB:
pcb.get_info,pcb.place_component,pcb.modify_component,pcb.delete_componentspcb.create_track,pcb.modify_track,pcb.create_board_outlinepcb.create_via,pcb.modify_via,pcb.delete_routing_primitivespcb.clear_routing,pcb.route_net,pcb.auto_route,pcb.auto_layoutpcb.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 buildLa 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 extensiones、Llamada a las API de extensiones、SYS_WebSocket。
This server cannot be installed
Maintenance
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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