KiCAD-MCP-Server
KiCAD MCP es una implementación del Protocolo de Contexto de Modelo (MCP) que permite a modelos de lenguaje grandes (LLMs) como Claude interactuar directamente con KiCAD para el diseño de placas de circuito impreso.
Documentación
Discusiones. Entra aquí.
https://github.com/mixelpixx/KiCAD-MCP-Server/discussions/73
🚀 Conoce Konnect — la próxima generación
Konnect es este proyecto reconstruido desde cero en Rust como un plugin nativo de KiCAD 10: un único binario sin dependencias de ejecución, construido sobre la API IPC oficial de KiCAD en lugar de SWIG, con 171 herramientas, habilidades y agentes de Claude integrados, auditorías de revisión de diseño y un pipeline de fabricación. Es donde ocurre el nuevo desarrollo — con licencia AGPL-3.0 (gratis para individuos y código abierto; licencias comerciales disponibles para empresas).
Este servidor Python/TypeScript permanece completamente abierto (MIT) y mantenido.
Servidor MCP de KiCAD
Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a asistentes de IA como Claude interactuar con KiCAD para la automatización del diseño de PCB. Construido sobre la especificación MCP 2025-06-18, este servidor proporciona esquemas de herramientas completos y acceso al estado del proyecto en tiempo real para flujos de trabajo inteligentes de diseño de PCB.
Descripción general
El Protocolo de Contexto de Modelo es un estándar abierto de Anthropic que permite a los asistentes de IA conectarse de forma segura a herramientas y fuentes de datos externas. Esta implementación proporciona un puente estandarizado entre los asistentes de IA y KiCAD, permitiendo el control en lenguaje natural de las operaciones de diseño de PCB.
Capacidades clave:
- 244 herramientas registradas, 184 de ellas indexadas para descubrimiento por palabras clave
- 184 herramientas en 17 categorías con validación JSON Schema
- Descubrimiento de herramientas por palabras clave mediante
search_tools/get_category_tools - 23 recursos dinámicos que exponen el estado del proyecto
- Flujo de trabajo completo de esquemáticos con 65 herramientas (autoría, ediciones por lotes, jerarquía, diseño) y carga dinámica de símbolos (~10,000 símbolos)
- Integración del enrutador automático Freerouting (Java, Docker o Podman)
- Herramientas personalizadas de creación de huellas y símbolos
- Integración de piezas JLCPCB con catálogo de más de 2.5M de componentes y búsqueda en biblioteca local
- Enriquecimiento de hojas de datos mediante LCSC
- Cumplimiento total del protocolo MCP 2025-06-18
- Soporte multiplataforma (Linux, Windows, macOS)
- Integración en tiempo real con la interfaz de KiCAD mediante API IPC (experimental)
- Manejo integral de errores y registro de actividad
Prueba Arduino MCP: ahora puedes hacer que Claude te ayude en el IDE, ¡en tiempo real!:
https://github.com/mixelpixx/arduino-ide
Novedades en v2.8.2
Una versión de parche con tres correcciones. Las bibliotecas estándar de KiCad 10 se encuentran en instalaciones donde la tabla de bibliotecas global se refiere a ellas mediante una variable. Las nuevas hojas se escriben de la manera en que KiCad las escribe. Un salto de línea en un valor ya no hace que KiCad descarte una hoja. Gracias a @zerthimon, quien informó y corrigió los dos primeros y rastreó el tercero.
Bibliotecas estándar de KiCad 10
- Las tablas de bibliotecas globales de KiCad 10 contienen una fila que apunta a la propia tabla de
bibliotecas estándar de KiCad. Cuando esa fila usa
${KICAD10_TEMPLATE_DIR}, como en Linux, el servidor no encontraba ninguna:search_symbolsdevolvía vacío ylist_library_symbolsfallaba paraDevice. Ahora se sigue la fila, por lo que se encuentran las 223 bibliotecas de símbolos y 155 de huellas (#438, #439). - Cargar una tabla de bibliotecas pasó de aproximadamente medio segundo a unos pocos milisegundos, porque las variables de ruta ahora se resuelven una vez por tabla en lugar de una vez por fila.
Hojas jerárquicas
add_hierarchical_sheetescribe una hoja como lo hace KiCad. Usa los nombres de propiedadSheetnameySheetfile, y coloca el número de página dentro del bloque de la hoja, una vez por cada uso de la hoja principal. KiCad 10 marcaba el formato antiguo cuando se abría el proyecto (#436, #437).- Los números de página son únicos en todo el proyecto, y agregar una hoja dentro de una sub-hoja ya no falla.
Saltos de línea en valores
- Un valor de varias líneas, como una Descripción establecida con
edit_schematic_component, se escribía con un salto de línea sin procesar que KiCad no puede leer. En una sub-hoja, KiCad omitía toda la hoja del diseño sin un error. En la demo complex_hierarchy de KiCad, uno de esos valores redujo la lista de conexiones de 68 componentes a 10. Los saltos de línea ahora se escriben de la manera en que KiCad los escribe (#441). get_schematic_componentdevuelve campos cuyos valores contienen comillas, como la Descripción del símbolo GND estándar de KiCad. Antes, esos campos faltaban en su resultado.
Instalación
- Las instrucciones de instalación ahora clonan la rama
stable, que contiene la última versión.mainpuede incluir correcciones que aún no se han publicado.
Detalles completos en el CHANGELOG.
Novedades en v2.8.1
Una versión de parche con tres correcciones para esquemáticos jerárquicos y máquinas solo con KiCad 10. Surgieron de la revisión de las correcciones que se incluyeron en v2.8.0.
Las piezas en hojas reutilizadas obtienen una referencia por uso
- Una hoja colocada más de una vez obtiene una entrada de instancia, con su propia referencia, para cada uso. La demo complex_hierarchy de KiCad usa una hoja de amplificador dos veces. Antes, una pieza colocada allí tenía una entrada, y kicad-cli la listaba dos veces con "schematic has annotation errors" (#428).
annotate_schematicnumera cada uso por separado y omite números ya utilizados en otras hojas del proyecto. Mantiene las unidades de una pieza de múltiples unidades en un solo número y da a los símbolos de alimentación el cero inicial de KiCad (#432).add_schematic_component,batch_add_componentsyannotate_schematicinforman la referencia en cada uso, para que los llamadores no den esos números a otras piezas.- Las hojas guardadas en un subdirectorio ahora encuentran su raíz, como en la
demo royalblue54L_feather de KiCad, que guarda sus hojas en
sch/.add_hierarchical_sheetescribe rutas correctas a cualquier profundidad (#428).
Máquinas solo con KiCad 10
- El registro de bibliotecas globales escribe la tabla de la versión más reciente de KiCad. Solía crear una tabla 9.0 que KiCad 10 nunca lee. Sin una tabla global aún, ahora devuelve un error, porque crear una ocultaría las bibliotecas estándar de KiCad (#425).
${KICAD10_3RD_PARTY}(bibliotecas de Plugin and Content Manager) se resuelve en su ubicación predeterminada. La DLL de cairo ahora se encuentra en instalaciones de KiCad 10 y carpetas de instalación personalizadas (#425).
Detalles completos en el CHANGELOG.
Novedades en v2.8.0
Un trabajador bloqueado o atascado se recupera solo
Una mala solicitud podía terminar el trabajador de Python, y un comando que se colgaba dentro de pcbnew bloqueaba cada llamada en cola detrás de él. En cualquier caso, cada llamada de herramienta posterior fallaba hasta que el servidor MCP se reiniciaba manualmente. Ahora una solicitud cuya respuesta no se puede enviar obtiene un error en lugar de terminar el trabajador (#405), y el puente reinicia un trabajador que sale o se atasca, fallando solo la llamada en curso (#390, @siddolo). Un trabajador que sigue fallando permanece inactivo después de tres reinicios en cinco minutos en lugar de reaparecer para siempre. En Windows, un archivo de registro bloqueado por otro programa ya no silencia el registro, y un kicad-skip faltante ahora desactiva solo las herramientas de esquemáticos que lo necesitan (#389, @AmirF194).
Las ediciones de esquemáticos llegan donde KiCad las espera
- Las piezas colocadas en una sub-hoja obtienen la ruta de instancia jerárquica que KiCad escribe (#423, @zerthimon).
connect_to_netya no coloca una etiqueta donde solía estar el pin de una pieza movida (#427).add_schematic_wireinforma un punto final que no se ajustó a un pin en lugar de llamar éxito a un cable flotante (#404, informado por @andersresen).- Una unidad de una pieza de múltiples unidades se puede mover, rotar o eliminar por sí sola, el arrastre mantiene el cableado ortogonal y lleva las banderas de no conexión, las etiquetas de red miran hacia donde mira su pin, y los símbolos colocados mantienen la visibilidad de campos de la biblioteca (#391, @komar3456).
edit_componentrealmente intercambia la huella, manteniendo las redes, el enlace de esquemático, los atributos y el bloqueo (#411, @AmirF194).sync_schematic_to_boardlee solo las hojas del propio diseño y mantiene las redes sin etiquetar (#400, #402), y colocar un símbolo ya no escribe atributos solo de KiCad 10 en esquemáticos de KiCad 8 o 9 (#351).
Controlador de interfaz gráfica, opcional
Once herramientas controlan la interfaz gráfica en vivo de KiCad: menús, barras de herramientas, diálogos y
botones de complementos de acción (#333, @rossvonfange). Nada se instala hasta que ejecutas
install_gui_driver, y el asistente escucha solo cuando
KICAD_GUI_DRIVER_ENABLE=1 está configurado, en 127.0.0.1, con un token por sesión.
KiCad 10, IPC y Freerouting
- La colocación IPC en KiCad 10 vuelve a colocar la huella real de la biblioteca (#378, @AlloyPlane), y la rotación IPC mantiene los modelos 3D (#422, @Putpluto).
- KiCad 10 y las carpetas de instalación personalizadas se encuentran en Windows (#416,
@DieterMayerOSS; scripts de configuración: #356, @LiJoeAllen), y un KiCad iniciado desde
PATHse detecta en Linux (#401, @famez). - El diálogo de aserción
PCB_VIA::GetWidthen KiCad 9 y 10 ha desaparecido, y KiCad 8 vuelve a funcionar (#398, @scorp508). autorouteyimport_sesinforman una importación fallida en lugar de éxito, la versión de Java se lee del JAR de Freerouting, y las pistas enrutadas mantienen el espacio libre de borde alrededor de los orificios de montaje (#417, #418, #419, @outstanda).
Listado de redes más rápido
list_schematic_nets y generate_netlist resuelven cada red en una pasada por
hoja: aproximadamente diez veces más rápido en los proyectos de demostración de KiCad, con resultados
idénticos (#394, @markszente).
Nuevas herramientas
- Controlador de interfaz gráfica: las once herramientas anteriores.
- Digi-Key:
digikey_search_parts,digikey_check_library_availability,digikey_test_connection(#368, @karu2003). set_net_color(#375, @JMcordobamendez).
search_tools ahora indexa 184 de las 244 herramientas registradas, en 17 categorías.
Detalles completos en el CHANGELOG.
Novedades en v2.7.0
El puente ya no cruza sus cables
El protocolo Node-Python no tenía IDs de solicitud: después de un tiempo de espera, el siguiente comando se resolvía silenciosamente con el resultado tardío del comando anterior, y cada respuesta posterior estaba desfasada. Las llamadas a herramientas ahora llevan un ID que Python devuelve; las respuestas obsoletas se descartan en lugar de entregarse mal (#373). El transporte MCP también se conecta antes de que Python se inicie, por lo que los clientes ya no se acumulan contra un servidor silencioso durante hasta dos minutos durante el calentamiento de pcbnew (#377).
Dos clases de corrupción de archivos corregidas
add_symbol_property eliminaba un paréntesis de cierre en cada llamada y podía empalmar
un símbolo de unidad en un hermano de nivel superior (#362, @karu2003). Y el escape
S-expression ahora es simétrico: las lecturas (#336) y escrituras (#324) comparten una
implementación consciente del escape, por lo que un valor de propiedad que contiene \" sobrevive un
ciclo completo — 419 de los archivos de símbolos estándar de KiCad llevan tales valores.
8 nuevas herramientas
- Validación:
validate_schematic,validate_symbol_library— localizan daños estructurales con línea/columna, confirmados mediantekicad-clien una copia. - Tablas de bibliotecas:
list_library_table,remove_library_table_entry,set_library_table_uri— el CRUD faltante alrededor deregister_*_library. - Edición de símbolos:
set_symbol_pin_type(correcciones masivas de tipos de pines con ejecución de prueba),find_duplicate_symbols(la misma pieza almacenada dos veces). - Anotación inversa:
backannotate_footprints— las elecciones de huellas de PCB fluyen de vuelta al esquemático, lo contrario desync_schematic_to_board.
Todo por @karu2003. Con #359 (@AmirF194) registrando 15 herramientas de símbolos existentes,
search_tools ahora indexa 169 herramientas en 15 categorías.
Calidad de vida
autorouteorganiza sus archivos de trabajo.dsn/.sesen un directorio temporal y limpia en cada salida — sin más basura junto a tu placa, sin importaciones SES obsoletas, y una ejecución interrumpida dice "terminated externally" en lugar deexit code 4294967295(#249, delimitado por los rastros de @Dewieinns).- Los símbolos colocados heredan la Huella predeterminada de la biblioteca (#300, implementación de @stefangordon).
add_layerrealmente agrega capas de cobre internas (#222) — anteriormente escribía en IDs de capas que no eran de cobre y renombraba F.SilkS.sync_schematic_to_boardcoincide por UUID de símbolo, no solo por refdes (#250).- Las herramientas JLCPCB decodifican el nuevo esquema
source-db-v2ascendente (#352, @stefanobaldo) y degradan con gracia cuando la base de datos de piezas no está disponible (#264, @fage2022). setup-macos.sh --verifyahora falla cuando faltan los requisitos de Python en lugar de pasar en un servidor que no puede iniciarse (#350, @francisrath).
Detalles completos en el CHANGELOG.
Novedades en v2.6.0
Un error que mataba la sesión está corregido
Eliminar cualquier cosa de una placa — un componente, una traza, un contorno de placa —
funcionó exactamente una vez. La siguiente operación, incluso una simple lectura, fallaba con un
error SwigPyObject, y solo close_project y luego open_project lo recuperaban.
BOARD.Remove() transfiere la propiedad de C++ a Python, por lo que soltar la referencia ejecutaba
un destructor sobre un objeto que KiCad aún señalaba, corrompiendo el estado de SWIG
en todo el proceso. Se vieron afectados seis puntos de llamada; todos ahora usan BOARD.Delete().
10 herramientas nuevas
- Importación de PCB de proveedores:
import_pcbconvierte archivos.brdde PADS, Altium, Eagle, CADSTAR, Fabmaster, P-CAD, SolidWorks PCB y Cadence Allegro binario mediante el importador nativo de KiCad 10. - Esquemáticos jerárquicos:
remove_hierarchical_sheet,set_sheet_property,get_sheet_propertiesyhierarchical_placepara organizar huellas según la jerarquía del esquemático. - Lint y reparación de esquemáticos:
lint_offgridencuentra y ajusta de forma segura geometría fuera de la rejilla que rompe silenciosamente la colocación de uniones;repair_flat_symbolscorrige símbolos de SnapEDA/SamacSys que bloquean kicad-skip;lint_schematic_cosmeticordena nombres de pines y orientación de etiquetas. - Orígenes de placa:
set_board_origin/get_board_origin.
Tus clases de red .kicad_pro dejan de desaparecer
Los guardados de placa ya no permiten que pcbnew serialice un modelo de proyecto en memoria obsoleto
sobre tus clases de red editadas manualmente y netclass_patterns. Abrir un proyecto
ya no reescribe el archivo en absoluto.
Cambio importante: las herramientas de esquemático fallan de forma audible ante una hoja no analizable
Las herramientas que solían devolver resultados parciales o vacíos ahora devuelven un error
estructurado schematic_load_failed que nombra los símbolos problemáticos. Omitir silenciosamente
una hoja rota producía un mapa incompleto de pad a red reportado como éxito,
lo cual es peor. repair_flat_symbols corrige la causa habitual. Consulta
KNOWN_ISSUES.md, sección 7.
Detalles completos en el CHANGELOG.
Novedades en v2.5.0
20 herramientas nuevas de ciclo de vida de placa y geometría
- Ciclo de vida:
open_board,reload_board,save_board,save_as,is_dirty,discard_or_reload,create_board_from_schematic. - Edición de gráficos:
clear_board_outline,replace_board_outline,list_graphics,delete_graphic,update_graphic,move_footprint_text. - Consultas de geometría:
batch_move_components,get_component_geometry,get_pads,get_net_pads,get_ratsnest,estimate_airwire_lengths,check_placement_clearance.
Todas respetan la fijación de sesión del backend, por lo que una placa guardada mientras la GUI de KiCad
posee la sesión se enruta a la GUI en lugar de escribir una copia en memoria obsoleta,
incluido el caso incómodo en que save_as cambia la identidad de la placa
a mitad de sesión.
El formato se normaliza y se aplica
pre-commit run --all-files(black, isort, prettier, flake8, mypy, eslint) ahora es una puerta real de CI, que es lo que CONTRIBUTING siempre afirmó.npm run lintsolía ejecutarblacken modo escritura contra lo queblackestuviera enPATH, reformateando silenciosamente tu árbol de trabajo con una versión que discrepaba de CI. Ahora solo verifica;npm run format:pyes la ruta de escritura.- El recuento de herramientas del README está fijado al registro mediante una prueba, por lo que se autocorrige en lugar de desviarse.
Detalles completos en el CHANGELOG.
Novedades en v2.4.1
Tres herramientas registradas pero sin backend ahora funcionan
assign_net_to_class,check_clearanceyset_layer_constraintstenían cada una un esquema completo y una entrada de enrutador, pero ningún controlador de despacho, por lo que cada llamada devolvíaUnknown command. Se encontró mediante una auditoría de cobertura de documentación.- Las restricciones por capa se escriben en un archivo de reglas personalizadas
.kicad_drucon ámbito de proyecto, quekicad-cli pcb drcy la GUI detectan; no existe una API de pcbnew para ellas.
Fallos silenciosos eliminados
autoroutefue abandonado por el puente Node a los 30 s mientras Freerouting aún se ejecutaba, reportando fallo contra un.sesválido que existía en disco. Su tiempo de espera ahora deriva de lostimeoutyattemptsque pases.get_board_2d_viewomitía--layerspor completo cuando no se daban capas, y KiCad 9+ entonces rechaza la exportación, sin producir archivo alguno.create_zonelanzabaAttributeErroren cada llamada a través del backend IPC.
Nuevas herramientas de aprovisionamiento de componentes
search_parts_registry/get_registry_part/download_registry_partreutilizan una huella o símbolo existente verificado en lugar de generar uno. Las descargas están en lista blanca de hosts, con verificación de extensión y límite de tamaño.get_jlcpcb_partdevuelve stock en vivo y precios por niveles cuando las credenciales de la plataforma abierta JLCPCB están configuradas, con respaldo a la instantánea local.
CI ahora ejecuta realmente la suite de pruebas
- El trabajo de Python había sido un no-op de cuatro formas independientes, y Actions estaba deshabilitado en todo el repositorio: 32 ejecuciones fallidas y 0 exitosas en toda la historia del proyecto. Las 1551 pruebas de Python y 63 de TypeScript ahora controlan cada push.
Detalles completos en el CHANGELOG.
Novedades en v2.4.0
Gestión de bibliotecas de símbolos
import_symbol/export_symbol/rename_symbolcopian un símbolo entre bibliotecas.kicad_sym, extraen uno a un archivo independiente y renombran un símbolo, incluidos sus fragmentos de sub-símbolo y cualquier referencia(extends ...)de símbolos derivados en la misma biblioteca.add_symbol_propertyyadd_library_symbol_propertyestablecen campos BOM personalizados (Fabricante, MPN, LCSC, ...) en un símbolo de biblioteca o en la definición en caché de un esquemático.update_symbol_from_libraryactualiza definicioneslib_symbolsen caché en un esquemático, una lista o cada proyecto bajo un directorio: el equivalente programático de Actualizar símbolo desde biblioteca de KiCad.replace_instance_lib_idsintercambia referenciaslib_idsegún un mapeo explícito de antiguo a nuevo, para migrar un esquemático entre bibliotecas.
Descubrimiento de símbolos más rápido
- Los directorios de bibliotecas, rutas resueltas, bloques de símbolos extraídos y listas de símbolos
analizadas ahora se almacenan en caché en todo el proceso en lugar de reconstruirse para cada
adición de componente. Los guardas de obsolescencia revalidan rutas y rastrean el
mtime_nsde origen, y las rutas de escritura mutantes limpian las cachés explícitamente.
Correcciones que restauran la operación básica
- Cada escritura de
.kicad_symy esquemático lanzabaTypeErroren Python 3.9, el mínimo declarado del proyecto:Path.write_textno aceptabanewlinehasta 3.10. - La búsqueda de piezas JLCPCB no podía encontrar MPN con guiones.
- La importación de Eagle escribía un encabezado de esquemático KiCad 9; ahora escribe el encabezado
KiCad 10, verificado contra
kicad-cli10.0 real. - La colocación de componentes se ajusta a la rejilla de 1.27 mm,
import_sesya no crea redes fantasma sin barras, yexport_dsn/autorouteconservan clases de red.kicad_pro.
Detalles completos en el CHANGELOG.
Novedades en v2.3.1
Importación de esquemáticos Eagle
import_eagle_schematicconvierte diseños XML.schde Eagle a formato KiCad con mapeo de símbolos, cables de red, piezas multi-puerta, poda de cables colgantes e informes ERC de verdad de referencia mediantekicad-cli.
Herramientas de modelos 3D y recarga interactiva
add_component_3d_model/remove_component_3d_modelpara adjuntar modelos STEP/WRL a huellas.KICAD_INTERACTIVE_SCHEMATIC=1opcional confirma automáticamente el diálogo de recarga de KiCad en Windows después de escrituras de esquemáticos.
Clúster de andamiaje completo
- Los proyectos nuevos comienzan en blanco (sin símbolos
_TEMPLATE_*filtrados en archivos de usuario). - Los archivos
.kicad_procoinciden con lo que KiCad mismo escribe. - La versión de formato
20260101garantiza que todas las compilaciones de KiCad 10.0.x puedan abrir esquemáticos generados.
Compatibilidad con KiCad 10
- Los símbolos derivados en bibliotecas
.kicad_symdirresuelven su padre desde fragmentos hermanos. - El descubrimiento de instalación unificado encuentra instalaciones de Windows reubicadas mediante el registro.
- Los marcadores de variables de entorno de usuario de
kicad_common.jsonse resuelven en rutas de bibliotecas. - Se eliminan los informes fantasma de pines entre unidades en
get_wire_connections.
Detalles completos en el CHANGELOG.
Novedades en v2.3.0
Corrupción de esquemáticos en KiCad 10: ambos mecanismos corregidos
- Bloques de instancia completos: los componentes colocados ahora llevan el nombre real del proyecto, la ruta uuid de la hoja raíz, entradas uuid por pin (ERC puede vincular cables a pines) y el conjunto completo de campos de KiCad 10, verificado como byte-equivalente a lo que eeschema mismo escribe. Anteriormente, arrastrar o editar un símbolo colocado podía bloquear KiCad.
- Escrituras multilínea canónicas: las herramientas de esquemático ya no minimizan todo el
archivo en una sola línea. Las escrituras de herramientas ahora coinciden byte a byte con el "Guardar" de eeschema,
con una autoverificación en cada escritura que nunca puede corromper datos. Los archivos ya
minimizados se pueden reparar con
scripts/kicad_sch_reformat.py.
Tus ediciones están protegidas
- Fijación de sesión de backend: un proyecto cargado permanece en un backend (SWIG o IPC) durante todo su ciclo de vida: los guardados ya no pueden enrutarse silenciosamente a una placa GUI obsoleta y perder tus ediciones.
- Guardia de edición externa:
save_projectse niega a sobrescribir un archivo de placa cuyo contenido cambió en disco desde la carga (pasaforce: truepara anular). close_project(herramienta nueva): libera el proyecto para que los archivos puedan editarse directamente y luego vuelve a abrirlo: sin más coreografía de reinicio.
Funciona en una instalación estándar de Windows
kicad-cliy 7-Zip se resuelven desde sus ubicaciones de instalación incluso cuando no están en PATH, desbloqueando exportaciones, ERC/DRC, netlists, vistas de placa y la descarga de la base de datos JLCPCB, cada una con errores accionables cuando realmente faltan.
Nuevas herramientas de diseño
suggest_placement: optimizador de colocación de PCB basado en conectividad (ejecución en seco por defecto, determinista).suggest_schematic_declutter: reorienta etiquetas de red superpuestas sin tocar la conectividad.
Además, correcciones de compatibilidad con KiCad 10 (renombres de hoja, bibliotecas .kicad_symdir
fragmentadas, tamaño de placa IPC Box2), geometría de pines correcta para símbolos rotados+reflejados
y multi-unidad, conexiones IPC acotadas con respaldo SWIG y una suite
Vitest real para la capa TypeScript. Detalles completos en el
CHANGELOG.
Novedades en v2.2.3
Nuevas herramientas: flujo de trabajo de paso de cable FFC/plano
Ahora se admite un flujo de trabajo completo para diseñar placas adaptadoras de paso (p. ej., adaptadores de cable Raspberry Pi CSI):
connect_passthrough: conecta todos los pines de un conector con los pines correspondientes de otro en el esquemático (pin N de J1 → pin N de J2, redes con nombre automático).sync_schematic_to_board: importa las asignaciones de red en el PCB.route_pad_to_pad: enruta cada conexión con inserción automática de vías cuando las almohadillas están en capas de cobre opuestas.snapshot_project: guarda un punto de control con nombre en<project>/snapshots/.
Correcciones de errores (KiCAD 9 / Windows)
- Inserción de vías para huellas B.Cu:
route_pad_to_padahora detecta correctamente cuando una huella está en B.Cu e inserta la vía requerida. (El SWIG de KiCAD 9 devolvíaF.Cupara todas las almohadillas SMD independientemente de la capa: corregido). - Esquinas redondeadas del contorno de placa:
add_board_outlineahora aplica correctamentecornerRadiuscuandoshape="rounded_rectangle". - Bloqueo de colocación en B.Cu: colocar una huella en B.Cu ya no causa una congelación de ~30 s en KiCAD 9.
Modo desarrollador
Establece KICAD_MCP_DEV=1 en tu entorno MCP de Claude Desktop para guardar automáticamente
el registro de sesión MCP en la carpeta logs/ del proyecto en cada llamada a export_gerber y
snapshot_project. Útil para depurar y para adjuntar a problemas de GitHub.
"env": {
"KICAD_MCP_DEV": "1"
}
Advertencia de privacidad: el registro de sesión contiene tu historial completo de llamadas a herramientas (incluidos rutas de archivos y detalles de diseño). Revisa o elimina
logs/antes de compartir un directorio de proyecto públicamente.
Consulta CHANGELOG para la lista completa de cambios en esta versión.
Novedades en v2.1.0
Corrección crítica del flujo de trabajo de esquemáticos + sistema de cableado completo (Problema #26)
El flujo de trabajo de esquemáticos estaba completamente roto en versiones anteriores: ¡ahora está corregido Y enormemente mejorado!
Lo que estaba roto:
create_projectsolo creó archivos de PCB, sin esquemáticosadd_schematic_componentllamó a métodos de API inexistentes- Los esquemáticos no se podían crear ni editar en absoluto
- Solo 13 tipos de componentes disponibles (limitación severa)
- Sin funcionalidad de cables/conexiones funcional
Implementación completa (3 fases):
Fase 1: Base de colocación de componentes
create_projectahora crea archivos .kicad_pcb y .kicad_sch- Se agregaron esquemáticos de plantilla preconfigurados con 13 tipos de componentes comunes
- Se reescribió la colocación de componentes para usar la API adecuada de
clone()
Fase 2: Carga dinámica de símbolos (¡AVANCE!)
- Acceso a TODOS los ~10,000 símbolos de KiCad de las bibliotecas estándar
- Detección automática y carga dinámica desde archivos de biblioteca
.kicad_sym - Cero configuración requerida: solo especifique la biblioteca y el nombre del símbolo
- Integración perfecta con las herramientas MCP existentes
- Sistema completo de análisis e inyección de expresiones S
Fase 3: Sistema de cableado inteligente (NUEVO en v2.1.0)
- Descubrimiento automático de ubicación de pines con soporte de rotación (0°, 90°, 180°, 270°)
- Enrutamiento de cables inteligente (directo, ortogonal horizontal primero, ortogonal vertical primero)
- Soporte de símbolos de alimentación (VCC, GND, +3V3, +5V, etc.)
- Análisis de gráfico de cables - trazado geométrico para conectividad de redes
- Gestión de etiquetas de red (etiquetas locales, globales, jerárquicas)
- Generación de lista de redes con conexiones precisas de componentes/pines
Arquitectura técnica: La biblioteca kicad-skip no puede crear símbolos o cables desde cero. Implementamos una solución integral:
- Plantillas estáticas: 13 símbolos preconfigurados (R, C, L, LED, etc.) para uso inmediato
- Carga dinámica: Inyección bajo demanda de CUALQUIER símbolo de las bibliotecas de KiCad:
- Analizar archivos de biblioteca
.kicad_symusando el analizador de expresiones S - Inyectar la definición del símbolo en la sección
lib_symbolsdel esquemático - Crear una instancia de plantilla fuera de pantalla
- Recargar el esquemático para que kicad-skip vea la nueva plantilla
- Clonar la plantilla para crear el componente real
- Analizar archivos de biblioteca
- Creación de cables: Inyección de cables basada en expresiones S (omite las limitaciones de la API de kicad-skip)
- Descubrimiento de pines: Analizar definiciones de símbolos, aplicar transformaciones de rotación, calcular posiciones absolutas
- Análisis de conectividad: Trazado geométrico de cables para construir gráficos de conexión de redes
Ejemplo - Creación de circuito completo:
# Load power symbols dynamically
loader.load_symbol_dynamically(sch_path, "power", "VCC")
# Place components with auto-rotation
ComponentManager.add_component(sch, {
"type": "STM32F103C8Tx",
"library": "MCU_ST_STM32F1",
"reference": "U1",
"x": 100, "y": 100, "rotation": 0
})
# Connect with intelligent routing
ConnectionManager.add_connection(sch_path, "U1", "1", "R1", "2", routing="orthogonal_h")
# Connect to power nets
ConnectionManager.connect_to_net(sch_path, "U1", "VDD", "VCC")
# Analyze connectivity
connections = ConnectionManager.get_net_connections(sch, "VCC", sch_path)
# Returns: [{"component": "U1", "pin": "VDD"}, {"component": "R1", "pin": "1"}]
Resultados de las pruebas:
- Colocación de componentes: 100% aprobado
- Carga dinámica de símbolos: más de 10,000 símbolos accesibles
- Creación de cables: 100% aprobado (8/8 conexiones en circuito de prueba)
- Descubrimiento de pines: consciente de rotación, precisión submilimétrica
- Conectividad de redes: 100% precisa (VCC: 2 conexiones, GND: 4 conexiones)
- Generación de lista de redes: funcionando con conexiones precisas a nivel de pines
Consulte Referencia de herramientas de esquemáticos para la documentación completa de herramientas de esquemáticos, y la Guía de autoría sin interfaz gráfica para prácticas probadas en campo que impulsan estas herramientas sin la GUI de KiCad.
Backend IPC (Experimental)
Actualmente estamos implementando y probando la API IPC de KiCAD 9.0 para sincronización de UI en tiempo real:
- Los cambios realizados a través de herramientas MCP aparecen inmediatamente en la UI de KiCAD
- Sin recarga manual requerida cuando IPC está activo
- Backend híbrido: usa IPC cuando está disponible, recurre a la API SWIG
- Reconexión en tiempo de ejecución de IPC: si MCP ha recurrido a SWIG, las herramientas de placa compatibles con IPC reintentan IPC después de que KiCAD se inicia en lugar de permanecer en SWIG durante toda la sesión
- Más de 20 comandos ahora admiten IPC, incluidos enrutamiento, colocación de componentes y operaciones de zonas
Nota: Las funciones de IPC están bajo desarrollo y pruebas activas. Habilite IPC en KiCAD a través de Preferencias > Complementos > Habilitar servidor de API IPC.
Para OpenCode en Windows, el backend se puede configurar como auto, ipc, o
swig durante la configuración. Consulte OpenCode (Windows) para el
comando de configuración y las opciones de backend.
Descubrimiento de herramientas
Cada herramienta está registrada individualmente, por lo que un cliente MCP puede llamar a cualquiera de ellas por nombre. Además, la mayoría de las herramientas están indexadas para que un asistente pueda encontrar una por palabra clave en lugar de adivinar:
- 32 herramientas esenciales que
search_toolsmuestra primero, cubriendo las operaciones que casi todas las sesiones necesitan - 184 herramientas indexadas en 17 categorías (placa, componente, exportación, drc, esquemático, biblioteca, biblioteca_de_símbolos, pines_de_símbolos, jerarquía_de_esquemáticos, diseño_de_esquemáticos, lote_de_esquemáticos, enrutamiento, autoruta, validación, registro_de_piezas, digikey, controlador_gui)
- 3 herramientas de descubrimiento:
list_tool_categories- Explorar todas las categorías disponiblesget_category_tools- Ver herramientas en una categoría específicasearch_tools- Encontrar herramientas por palabra clave
Las 60 herramientas registradas restantes aún no están indexadas. Funcionan exactamente
igual cuando se llaman por nombre; simplemente no aparecen en los resultados de search_tools.
Por qué esto importa: el asistente puede ubicar la herramienta correcta para su tarea por
palabra clave en lugar de inventar un nombre. Tenga en cuenta que el descubrimiento no reduce
el contexto: cada esquema de herramienta todavía se envía al cliente. Un diseño anterior ocultaba
herramientas detrás de un despachador execute_tool para ahorrar contexto; se eliminó
porque el modelo entonces inventaba esquemas que nunca se le habían mostrado. Consulte
ROUTER_ARCHITECTURE.md para esa historia.
El uso es perfecto: Simplemente pregunte de forma natural - "exportar archivos gerber" o "agregar orificios de montaje" - y Claude encontrará y llamará automáticamente a las herramientas apropiadas.
NECESITA PRUEBAS - REPORTAR PROBLEMAS
Integración de piezas JLCPCB (¡Nuevo!)
Integración completa con el catálogo de piezas de JLCPCB, que proporciona dos enfoques complementarios para la selección de componentes:
Arquitectura de modo dual:
- Bibliotecas de símbolos locales - Busque bibliotecas JLCPCB instaladas a través del Administrador de complementos y contenido de KiCAD (contribuido por @l3wi)
- Integración de API JLCPCB - Acceda al catálogo completo de más de 2.5 millones de piezas con precios y stock en tiempo real
Características clave:
- Precios en tiempo real con descuentos por cantidad (1+, 10+, 100+, 1000+)
- Verificación de disponibilidad de stock
- Identificación de tipo de biblioteca Básica vs Extendida (Básica = ensamblaje gratuito)
- Optimización inteligente de costos con sugerencias de piezas alternativas
- Mapeo de paquete a huella para compatibilidad con KiCAD
- Búsqueda paramétrica por categoría, paquete, fabricante
- Base de datos SQLite local para búsqueda rápida sin conexión
- Sin credenciales de API requeridas para búsqueda de biblioteca local
Por qué esto importa: JLCPCB ofrece servicios de ensamblaje de PCB donde las piezas Básicas no tienen tarifa de ensamblaje, mientras que las piezas Extendidas cobran $3 por componente único. Esta integración le ayuda a encontrar los componentes más baratos con la mejor disponibilidad, potencialmente ahorrando cientos de dólares en costos de ensamblaje para tiradas de producción.
Consulte Guía de uso de JLCPCB para instrucciones detalladas de configuración y uso.
Esquemas integrales de herramientas
Cada herramienta ahora incluye definiciones completas de esquema JSON con:
- Descripciones y restricciones detalladas de parámetros
- Validación de entrada con verificación de tipos
- Especificaciones de parámetros requeridos vs. opcionales
- Valores enumerados para entradas categóricas
- Documentación clara de lo que hace cada herramienta
Capacidad de recursos
Acceda al estado del proyecto sin ejecutar herramientas:
kicad://project/current/info- Metadatos del proyectokicad://project/current/board- Propiedades de la placakicad://project/current/components- Lista de componentes (JSON)kicad://project/current/nets- Redes eléctricaskicad://project/current/layers- Configuración de pila de capaskicad://project/current/design-rules- Configuración actual de DRCkicad://project/current/drc-report- Violaciones de reglas de diseñokicad://board/preview.png- Visualización de la placa (PNG)
Cumplimiento del protocolo
- Actualizado al SDK MCP 1.21.0 (último)
- Soporte completo de JSON-RPC 2.0
- Negociación adecuada de capacidades
- Códigos de error conformes a estándares
Herramientas disponibles
El servidor expone cada herramienta directamente, por lo que su asistente puede llamar a cualquiera de ellas sin un paso de descubrimiento: solo pida lo que desea lograr. 184 herramientas están además indexadas en 17 categorías funcionales, por lo que search_tools y get_category_tools pueden encontrar una por palabra clave.
Las listas a continuación son un recorrido seleccionado de las herramientas más útiles, no el conjunto completo. Para la referencia completa y generada de las 244 herramientas, incluido cómo se descubre cada una, consulte Inventario de herramientas.
Gestión de proyectos (12 herramientas)
create_project- Inicializar nuevos proyectos KiCADopen_project- Cargar archivos de proyecto existentesopen_board/reload_board- Abrir o releer un.kicad_pcbespecíficosave_project/save_board/save_as- Guardar el estado actualclose_project- Guardar (opcionalmente) y descartar el estado en memoriais_dirty/discard_or_reload- Verificar y deshacer cambios no guardadosget_project_info- Recuperar metadatos del proyectosnapshot_project- Guardar instantánea de punto de control con nombre
Operaciones de placa (19 herramientas)
set_board_size- Configurar dimensiones de PCBadd_board_outline- Crear borde de placa (rectángulo, círculo, polígono, rectángulo redondeado)add_layer- Agregar capas personalizadas a la pilaset_active_layer- Cambiar capa de trabajoget_layer_list- Listar todas las capas de la placaget_board_info- Recuperar propiedades de la placaget_board_2d_view- Generar imagen de vista previa de la placaget_board_extents- Obtener cuadro delimitador de la placaadd_mounting_hole- Colocar orificios de montajeadd_board_text- Agregar anotaciones de textoadd_zone- Agregar zona/vertido de cobre con configuraciones de espacio libreclear_board_outline/replace_board_outline- Eliminar o intercambiar el contorno Edge.Cutsset_board_origin/get_board_origin- Leer y establecer los orígenes de perforación/colocación y de cuadrículalist_graphics/update_graphic/delete_graphic- Inspeccionar y editar elementos de dibujoimport_svg_logo- Importar archivo SVG como polígonos de serigrafía de PCB
Gestión de componentes (28 herramientas)
place_component- Colocar componente individual con huellamove_component- Reposicionar componente existenterotate_component- Rotar componente por ángulodelete_component- Eliminar componente de la placaedit_component- Modificar propiedades del componentefind_component- Buscar por referencia o valorget_component_properties- Consultar detalles del componenteadd_component_annotation- Agregar anotación/comentariogroup_components- Agrupar múltiples componentesreplace_component- Reemplazar con diferente huellaget_component_pads- Obtener toda la información de padsget_component_list- Listar todos los componentes colocadosget_pad_position- Obtener posición precisa del padplace_component_array- Crear cuadrículas/patrones de componentesalign_components- Alinear múltiples componentesduplicate_component- Copiar componente existentebatch_move_components- Mover muchos componentes en una sola llamada transaccionalget_component_geometry/check_placement_clearance- Tamaños de cuerpo y verificaciones de superposiciónget_ratsnest/estimate_airwire_lengths- Análisis de conexiones no enrutadas
Enrutamiento (17 herramientas)
add_net- Crear red eléctricaroute_trace- Enrutar trazas de cobre entre puntos XYroute_pad_to_pad- Enrutar entre pads con inserción automática de víasadd_via- Colocar vías para transiciones de capadelete_trace- Eliminar trazas (por UUID, posición o red)query_traces- Consultar/filtrar trazasget_nets_list- Listar todas las redes con estadísticasmodify_trace- Cambiar ancho de traza, capa o redcreate_netclass- Definir clase de red con reglasadd_copper_pour- Crear zonas/vertidos de cobreroute_differential_pair- Enrutar señales diferencialesrefill_zones- Rellenar todas las zonas de cobrecopy_routing_pattern- Replicar enrutamiento entre grupos de componentesset_net_color- Establecer o borrar la anulación de color de visualización de una redroute_arc_trace- Enrutar una traza curvaadd_gnd_stitching_vias- Puntada de plano de tierra con víasquery_zones- Inspeccionar zonas de cobre
Esquemático (46 herramientas)
Flujo de trabajo completo de esquemáticos con carga dinámica de símbolos (~10,000 símbolos) y cableado inteligente.
Operaciones de componentes:
add_schematic_component- Colocar símbolos de cualquier biblioteca de KiCaddelete_schematic_component- Eliminar componenteedit_schematic_component- Editar huella, valor, referencia, posiciones de etiquetas y propiedades personalizadas arbitrarias (MPN, Fabricante, DigiKey_PN, LCSC, Voltaje, Tolerancia, Dieléctrico, …) en una sola llamada por lotesset_schematic_component_property- Agregar o actualizar una única propiedad personalizada (campo de BOM/abastecimiento) en un componenteremove_schematic_component_property- Eliminar una única propiedad personalizada de un componenteget_schematic_component- Inspeccionar cada campo de un componente (integrados + personalizados) incluyendo posiciones de etiquetaslist_schematic_components- Listar todos los componentesmove_schematic_component- Reposicionar componenterotate_schematic_component- Rotar componenteannotate_schematic- Asignar automáticamente designadores de referencia
Cableado y Conexiones:
add_schematic_wire- Crear cable entre puntosdelete_schematic_wire- Eliminar segmento de cableadd_no_connect- Marcar un pin como deliberadamente desconectadoadd_schematic_net_label- Agregar etiquetas de red (VCC, GND, señales)delete_schematic_net_label- Eliminar etiqueta de redconnect_to_net- Conectar pin a red nombradaconnect_passthrough- Cablear todos los pines coincidentes entre conectores (FFC/ribbon)get_schematic_pin_locations- Obtener ubicaciones de pines para un componente
Análisis y Exportación:
get_net_connections- Trazar conectividad de redlist_schematic_nets/list_schematic_wires/list_schematic_labelscreate_schematic- Crear nuevo archivo de esquemáticoget_schematic_view- Vista previa rasterizada del esquemáticoexport_schematic_svg/export_schematic_pdfrun_erc- Verificación de reglas eléctricasgenerate_netlist- Generar lista de redes desde el esquemáticosync_schematic_to_board- Importar redes/pads al PCB (equivalente a F8)backannotate_footprints- Copiar selecciones de huellas desde la placa de vuelta al esquemáticocreate_board_from_schematic- Crear una placa poblada desde el esquemático
Lote, Jerarquía y Diseño (19 herramientas más):
batch_add_components/batch_edit_schematic_components/batch_connect- Autoría por lotesadd_hierarchical_sheet/create_hierarchical_subsheet- Diseños de múltiples hojasautoplace_schematic_fields/lint_schematic_cosmetic- Ordenar la colocación de camposlint_offgrid/snap_to_grid- Encontrar y corregir coordenadas fuera de la cuadrícula
Consulta Referencia de Herramientas de Esquemático para detalles y ejemplos.
Validación de Archivos (2 herramientas)
Encuentra daños estructurales antes de que KiCad se niegue a abrir un archivo. Ambos informan la línea
y la columna de cada fallo, y confirman el veredicto con kicad-cli ejecutado contra una
copia desechable.
validate_schematic- Verificar un archivo.kicad_schvalidate_symbol_library- Verificar un archivo.kicad_sym
Reglas de Diseño / DRC (7 herramientas)
set_design_rules/get_design_rules- Configurar e inspeccionar reglasrun_drc- Ejecutar verificación de reglas de diseñoget_drc_violations- Obtener lista de violaciones por severidadcreate_netclass/assign_net_to_class- Gestión de clases de redset_layer_constraints/check_clearance- Reglas de capas y espacios
Exportación (27 herramientas)
export_gerber/export_gerbers/export_gerber_single- Archivos de fabricación Gerberexport_drill- Archivos de perforaciónexport_ipc2581/export_odb/export_ipcd356/export_gencad- Otros formatos de fabricaciónexport_pdf/export_svg/export_pcb_dxf- Documentación y gráficos vectorialesexport_3d- Modelos 3D (STEP, STL, VRML, OBJ)export_bom/export_sch_bom- Lista de materiales (CSV, XML, HTML, JSON)export_netlist- Lista de redes (KiCad, Spice, Cadstar, OrcadPCB2)export_position_file/export_pos- Posiciones de componentes para pick and placeexport_sch_pdf/export_sch_svg/export_sch_dxf- Salida de esquemáticoexport_vrml- Modelo 3D VRML
Bibliotecas de Huellas y Bibliotecas de Símbolos (16 herramientas)
list_libraries/list_symbol_libraries- Explorar bibliotecas disponiblessearch_footprints/search_symbols- Buscar en todas las bibliotecaslist_library_footprints/list_library_symbols- Explorar biblioteca específicaget_footprint_info/get_symbol_info- Información detalladalist_symbol_pins/batch_list_symbol_pins- Leer pines directamente desde una bibliotecaset_symbol_pin_type- Configurar por lotes tipos eléctricos de pines, con una prueba previafind_duplicate_symbols- Encontrar la misma pieza almacenada dos veces con nombres diferentesrepair_flat_symbols- Corregir símbolos de proveedores que KiCad tolera pero las herramientas no pueden analizar
Tablas de bibliotecas (sym-lib-table / fp-lib-table):
list_library_table- Leer cada biblioteca registrada y verificar que su URI se resuelveremove_library_table_entry- Dar de baja una bibliotecaset_library_table_uri- Reapuntar una biblioteca que se ha movido
Creador de Huellas (7 herramientas) y Creador de Símbolos (8 herramientas)
Crea componentes personalizados cuando las bibliotecas existentes no tienen lo que necesitas.
create_footprint/create_symbol- Construir desde cero con pads/pinesedit_footprint_pad- Modificar propiedades de padsadd_footprint_3d_model/add_component_3d_model/import_3d_model- Adjuntar modelos 3Dregister_footprint_library/register_symbol_library- Registrar en la tabla de bibliotecaslist_footprint_libraries/list_symbols_in_library- Explorar bibliotecas personalizadasadd_symbol_property- Agregar o actualizar un campo en un símbolo de bibliotecaimport_symbol/export_symbol/rename_symbol- Mover símbolos entre bibliotecasdelete_symbol- Eliminar símbolo de la biblioteca
Consulta Guía del Creador de Huellas y Símbolos para detalles.
Herramientas de Hojas de Datos (2 herramientas)
enrich_datasheets- Autocompletar URLs de hojas de datos usando números de pieza LCSCget_datasheet_url- Obtener URL de hoja de datos LCSC para un componente
Integración JLCPCB (5 herramientas)
download_jlcpcb_database- Descargar catálogo de 2.5M+ piezas (configuración única)search_jlcpcb_parts- Buscar con filtros paramétricosget_jlcpcb_part- Información detallada de pieza con preciosget_jlcpcb_database_stats- Estadísticas de base de datossuggest_jlcpcb_alternatives- Encontrar alternativas más baratas o en stock
Enrutador Automático Freerouting (4 herramientas)
autoroute- Ejecutar enrutador automático Freerouting (exportación DSN, enrutado, importación SES)export_dsn/import_ses- Flujo de trabajo manual Specctra DSN/SEScheck_freerouting- Verificar disponibilidad de Java y Freerouting
Consulta Guía de Freerouting para configuración y uso.
Gestión de Interfaz de Usuario (3 herramientas)
check_kicad_ui- Verificar si KiCAD está en ejecuciónlaunch_kicad_ui- Lanzar la aplicación KiCADget_backend_state- Informar qué backend (IPC o SWIG) está en uso
Registro de Piezas (3 herramientas)
Busca una pieza ya preparada antes de generar una personalizada.
search_parts_registry- Buscar en el registro por nombre, palabra clave o fabricanteget_registry_part- Inspeccionar una pieza en detalledownload_registry_part- Descargar su huella, símbolo o modelo 3D
Importación (2 herramientas)
import_eagle_project- Convertir un proyecto Eagleimport_pcb- Cargar un.kicad_pcbexistente en la sesión
Requisitos Previos
Software Requerido
KiCAD 9.0 o superior
- Descargar desde kicad.org/download
- Debe incluir el módulo de Python (pcbnew)
- Verificar instalación:
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"
Node.js 18 o superior
- Descargar desde nodejs.org
- Verificar:
node --versionynpm --version
Python 3.9 o superior
- Viene incluido con KiCAD (las compilaciones de macOS incluyen Python 3.9; las compilaciones de Linux/Windows incluyen Python 3.11)
- Paquetes requeridos (auto-instalados):
- kicad-python (kipy) >= 0.5.0 (soporte de API IPC, opcional pero recomendado)
- kicad-skip >= 0.1.0 (soporte de esquemáticos)
- Pillow >= 9.0.0 (procesamiento de imágenes)
- cairosvg >= 2.7.0 (renderizado SVG)
- colorlog >= 6.7.0 (registro)
- pydantic >= 2.5.0 (validación)
- requests >= 2.32.5 (cliente HTTP)
- python-dotenv >= 1.0.0 (entorno)
Cliente MCP Elige uno:
- Claude Desktop - Aplicación de escritorio oficial de Anthropic
- Claude Code - Herramienta CLI oficial
- Cline - Extensión de VSCode
- OpenCode - Agente de codificación de IA basado en terminal con soporte MCP
Plataformas Soportadas
- Linux (Ubuntu 22.04+, Fedora, Arch) - Plataforma principal, completamente probada
- Windows 10/11 - Totalmente soportado con configuración automatizada
- macOS - Soporte experimental
Instalación
Estos pasos instalan la última versión desde la rama stable, que solo
se mueve cuando se publica una versión. main también tiene correcciones que aún no se han
publicado; clona sin --branch stable para usarla. Para actualizar una instalación más tarde, ejecuta
git pull en el clon, luego npm install y npm run build de nuevo.
Linux (Ubuntu/Debian)
# Install KiCAD 9.0 or higher
sudo add-apt-repository --yes ppa:kicad/kicad-9.0-releases
sudo apt-get update
sudo apt-get install -y kicad kicad-libraries
# Install Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Clone and build
git clone --branch stable https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
npm install
pip3 install -r requirements.txt
npm run build
# Verify
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"
Windows 10/11
Configuración Automatizada (Recomendada):
git clone --branch stable https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
.\setup-windows.ps1
El script:
- Detectará instalaciones de KiCAD, incluyendo instalaciones de toda la máquina en
C:\Program Files\KiCade instalaciones por usuario en%LOCALAPPDATA%\Programs\KiCad - Verificará requisitos previos
- Instalará dependencias
- Construirá el proyecto
- Generará configuración
- Ejecutará diagnósticos
Configuración Manual: Consulta Guía de Plataforma para instrucciones detalladas, y Solución de Problemas en Windows si la configuración falla.
macOS
Importante: En macOS, usa el Python incluido con KiCAD para garantizar el acceso adecuado al módulo pcbnew.
Configuración Manual
# Install KiCAD 9.0 from kicad.org/download/macos
# Install Node.js
brew install node@20
# Clone repository
git clone --branch stable https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
# Create virtual environment using KiCAD's bundled Python
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 -m venv venv --system-site-packages
# Activate virtual environment
source venv/bin/activate
# Install dependencies
npm install
pip install -r requirements.txt
npm run build
Nota: El indicador --system-site-packages es necesario para acceder al módulo pcbnew de KiCAD desde el entorno virtual.
Nota: Si omites el entorno virtual, instala los requisitos con el intérprete incluido con KiCAD — un pip3 install -r requirements.txt simple va al Python del sistema, que el servidor nunca usa, y el servidor entonces falla al iniciar (el cliente MCP agota el tiempo de espera después de 30s sin error visible):
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 \
-m pip install --user -r requirements.txt
Configuración Automatizada
Para simplificar la configuración con Claude Desktop, este repositorio proporciona un script de configuración para macOS:
./setup-macos.sh
En caso de error zsh: permission denied: ./setup-macos.sh puedes:
- permitir siempre que el script se ejecute ejecutando:
chmod +x setup-macos.sh. - alternativamente ejecutarlo explícitamente con bash:
bash setup-macos.shpara que no se necesite cambio de chmod.
Este script no reemplaza la configuración manual anterior — asume que las dependencias ya están instaladas y el proyecto está construido. En su lugar, automatiza:
- detección de tu entorno (Node.js, Python de KiCad,
pcbnew) - resolución del
PYTHONPATHcorrecto de macOS - generación de la configuración MCP correcta de Claude Desktop
- fusión segura de la configuración en tu configuración existente de Claude
- opcionalmente escribir la configuración con soporte de respaldo
Uso Básico
Verificar configuración (sin cambios)
./setup-macos.sh --verify
Vista previa de configuración (prueba en seco)
./setup-macos.sh --dry-run
Aplicar configuración
./setup-macos.sh --apply
Después de aplicar, reinicia Claude Desktop.
Parámetros
Parámetros requeridos
Ninguno. El script funciona de fábrica usando valores predeterminados sensatos.
Parámetros opcionales
--name NAME
Especifica el nombre del servidor MCP en Claude Desktop.
Predeterminado:
kicad
Ejemplo:
./setup-macos.sh --apply --name kicad-dev
Úsalo cuando:
- ejecutes múltiples configuraciones MCP
- pruebes bifurcaciones o versiones de desarrollo
- evites sobrescribir una configuración existente
--claude-config PATH
Especifica un archivo de configuración personalizado de Claude Desktop.
Predeterminado:
~/Library/Application Support/Claude/claude_desktop_config.json
Ejemplo:
./setup-macos.sh --dry-run --claude-config ~/tmp/claude_config.json
Úsalo cuando:
- pruebes configuraciones de forma segura
- uses ubicaciones de configuración no estándar
- depures sin modificar tu configuración principal
--yes
Omite el mensaje de confirmación al aplicar cambios.
Ejemplo:
./setup-macos.sh --apply --yes
Después de la Configuración
- Cierra completamente Claude Desktop
- Reabre Claude Desktop
- Abre un nuevo chat
- Haz clic en + → Connectors
- Verifica que el servidor aparezca (por ejemplo,
kicado tu nombre personalizado)
Prueba con el prompt en Claude Desktop:
Use the kicad MCP server to run check_kicad_ui.
Notas
- El script solo modifica la sección
mcpServersy deja toda la demás configuración intacta - Las configuraciones existentes se respaldan automáticamente antes de los cambios
- El soporte de macOS depende del Python incluido con KiCad; el Python del sistema no funcionará correctamente
- Si KiCad se actualiza o se mueve, vuelve a ejecutar el script para actualizar las rutas
Configuración
Claude Desktop
Edita el archivo de configuración:
- Linux:
~/.config/Claude/claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Configuración:
{
"mcpServers": {
"kicad": {
"command": "node",
"args": ["/path/to/KiCAD-MCP-Server/dist/index.js"],
"env": {
"PYTHONPATH": "/path/to/kicad/python",
"LOG_LEVEL": "info"
}
}
}
}
PYTHONPATH específico por plataforma:
- Linux:
/usr/lib/kicad/lib/python3/dist-packages - Windows:
C:\Program Files\KiCad\10.0\lib\python3\dist-packageso%LOCALAPPDATA%\Programs\KiCad\10.0\lib\python3\dist-packages - macOS:
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
Detección de Python en Linux
El servidor detecta automáticamente Python en Linux en este orden de prioridad:
- Entorno virtual -
venv/bin/pythono.venv/bin/python(prioridad más alta) - Variable de entorno KICAD_PYTHON - Anulación por parte del usuario para instalaciones no estándar
- Python incluido con KiCad -
/usr/lib/kicad/bin/python3,/usr/local/lib/kicad/bin/python3,/opt/kicad/bin/python3 - Python del sistema mediante which - Resuelve
which python3a una ruta absoluta (por ejemplo,/usr/bin/python3) - Rutas comunes del sistema -
/usr/bin/python3,/bin/python3
Para la mayoría de las instalaciones estándar de Linux (Ubuntu, Debian, Fedora, Arch), no se necesita configuración de KICAD_PYTHON - el servidor encontrará automáticamente su instalación de Python.
Solución de problemas:
Si ve "Python executable not found: python3", puede especificar manualmente la ruta de Python:
{
"mcpServers": {
"kicad": {
"command": "node",
"args": ["/path/to/KiCAD-MCP-Server/dist/index.js"],
"env": {
"KICAD_PYTHON": "/usr/bin/python3",
"PYTHONPATH": "/usr/lib/kicad/lib/python3/dist-packages"
}
}
}
}
Para encontrar su ruta de Python:
which python3 # Example output: /usr/bin/python3
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())" # Verify pcbnew access
GitHub Copilot (VS Code)
Copie la plantilla en su espacio de trabajo:
cp config/vscode-mcp.example.json .vscode/mcp.json
VS Code detectará automáticamente .vscode/mcp.json y registrará el servidor. La plantilla usa ${workspaceFolder} por lo que no se necesita editar rutas.
Nota:
.vscode/mcp.jsonestá listado en.gitignore— su configuración local no se confirmará en el repositorio.
Cline (VSCode)
Edite: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Use el mismo formato de configuración que Claude Desktop anteriormente.
Claude Code
Claude Code no lee el archivo de configuración de Claude Desktop, y solo detecta automáticamente servidores listados en el .mcp.json de un proyecto (este repositorio no incluye uno). Registre el servidor explícitamente con claude mcp add:
# macOS example — adjust KICAD_PYTHON/PYTHONPATH per platform (see table above)
claude mcp add --scope user kicad \
--env KICAD_PYTHON=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 \
--env PYTHONPATH=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages \
--env LOG_LEVEL=info \
-- node /path/to/KiCAD-MCP-Server/dist/index.js
Con --scope user el servidor está disponible en todos los proyectos; use --scope project para escribir un .mcp.json compartible en su lugar. En macOS, setup-macos.sh imprime este comando con las rutas detectadas completadas.
Verifique con claude mcp list — el servidor debería reportar ✔ Conectado.
OpenCode (Windows)
OpenCode usa un esquema de configuración MCP diferente al de Claude Desktop. Use
setup-windows-opencode.ps1 para verificar la configuración local y escribir la entrada
correcta de mcp para OpenCode.
La configuración del proyecto OpenCode se escribe en opencode.json en la raíz
del proyecto de destino. El script mantiene el repositorio del servidor MCP de KiCAD separado del
proyecto de destino:
McpServerPathes este repositorio, donde se construyedist/index.jsProjectPathes el proyecto que debería recibiropencode.json
Cuándo es útil esto:
- Usa OpenCode como su cliente MCP en Windows
- Quiere un servidor MCP local al proyecto disponible solo en un proyecto
- Quiere un servidor MCP global de OpenCode disponible desde cualquier espacio de trabajo
- Necesita verificar Python de KiCAD (
pcbnew), Node.js ydist/index.jsantes de cambiar la configuración de OpenCode
Selección de backend
El script de configuración admite tres preferencias de backend de KiCAD mediante -Backend:
auto- intentar IPC primero y recurrir a SWIG si IPC no está disponible (predeterminado)ipc- requerir IPC de KiCAD para sincronización de UI en tiempo realswig- usar el backend basado en archivospcbnew
Ejemplos:
.\setup-windows-opencode.ps1 -Apply -Scope project -Backend auto
.\setup-windows-opencode.ps1 -Apply -Scope project -Backend ipc
.\setup-windows-opencode.ps1 -Apply -Scope project -Backend swig
Para -Backend ipc, KiCAD debe estar ejecutándose con el servidor de API IPC habilitado.
Verificar configuración sin cambios
Use esto primero al diagnosticar problemas de instalación o rutas. Detecta KiCAD,
prueba pcbnew, verifica Node.js y verifica el punto de entrada MCP construido.
.\setup-windows-opencode.ps1 -Verify -SkipInstall -SkipBuild
Vista previa de la configuración de OpenCode
Use el modo de ejecución en seco cuando quiera inspeccionar el JSON exacto antes de escribirlo.
.\setup-windows-opencode.ps1 -DryRun -SkipInstall -SkipBuild
Ejemplo de forma generada de OpenCode:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"kicad": {
"type": "local",
"command": ["node", "C:\\path\\to\\KiCAD-MCP-Server\\dist\\index.js"],
"environment": {
"NODE_ENV": "production",
"LOG_LEVEL": "info",
"KICAD_AUTO_LAUNCH": "false",
"KICAD_MCP_DEV": "0",
"KICAD_BACKEND": "auto",
"PYTHONPATH": "C:\\Program Files\\KiCad\\10.0\\bin\\Lib\\site-packages"
},
"enabled": true,
"timeout": 30000
}
}
}
También se proporciona una plantilla copiable en config/opencode.json. Reemplace las
rutas de marcador de posición antes de usarla directamente.
Aplicar configuración local al proyecto
Use esto cuando solo quiera habilitar KiCAD MCP para un proyecto. El script escribe
opencode.json en la raíz del proyecto de destino y respalda un archivo existente antes de
cambiarlo.
.\setup-windows-opencode.ps1 -Apply -Scope project
Por defecto, ProjectPath es el directorio de trabajo actual.
Para configurar otro proyecto, pase -ProjectPath:
.\setup-windows-opencode.ps1 -Apply -Scope project -ProjectPath "C:\path\to\your-project"
Si el script de configuración no está ubicado en el repositorio del servidor MCP de KiCAD, pase
-McpServerPath para que la configuración generada apunte al dist/index.js correcto:
.\setup-windows-opencode.ps1 `
-Apply `
-Scope project `
-ProjectPath "C:\path\to\your-project" `
-McpServerPath "C:\path\to\KiCAD-MCP-Server"
Aplicar configuración global de OpenCode
Use esto cuando quiera que el servidor MCP de KiCAD esté disponible desde cualquier espacio de trabajo
de OpenCode. El script escribe %USERPROFILE%\.config\opencode\opencode.json.
.\setup-windows-opencode.ps1 -Apply -Scope global
Usar un nombre de servidor MCP personalizado
Use esto al probar múltiples bifurcaciones o mantener entradas separadas de desarrollo y estables de KiCAD MCP.
.\setup-windows-opencode.ps1 -Apply -Scope project -Name kicad-dev
Usar una ruta de instalación de KiCAD personalizada
Use esto cuando KiCAD esté instalado fuera de las ubicaciones estándar de Windows.
.\setup-windows-opencode.ps1 -Apply -Scope project -KiCadRoot "D:\Apps\KiCad\10.0"
Omitir pasos de instalación o compilación
Use estas banderas cuando las dependencias ya estén instaladas o el proyecto ya esté compilado.
.\setup-windows-opencode.ps1 -Apply -Scope project -SkipInstall -SkipBuild
Después de aplicar la configuración
- Cierre completamente OpenCode.
- Inicie OpenCode nuevamente para que recargue
opencode.json. - Pida a OpenCode que use el servidor MCP
kicady ejecutecheck_kicad_ui.
Deshabilitar el servidor MCP de OpenCode
Para deshabilitar el servidor sin eliminar la configuración completa, establezca la entrada en
enabled: false y reinicie OpenCode.
{
"mcp": {
"kicad": {
"enabled": false
}
}
}
Si OpenCode está ejecutándose, el proceso del servidor MCP es gestionado por OpenCode y normalmente se detiene cuando OpenCode sale.
Configuración de Integración JLCPCB (Opcional)
La integración JLCPCB proporciona dos modos que se pueden usar de forma independiente o juntos:
Modo 1: API Pública JLCSearch (Recomendado - Sin Configuración Requerida)
La forma más fácil de acceder al catálogo de piezas de JLCPCB:
- No se necesitan credenciales de API
- No se requiere cuenta JLCPCB
- Acceso a más de 2.5 millones de piezas con datos de precios y stock
- Tiempo de descarga: 40-60 minutos para el catálogo completo (lotes de 100 piezas debido al límite de API)
Para descargar la base de datos:
Ask Claude: "Download the JLCPCB parts database"
Esto crea una base de datos SQLite local en data/jlcpcb_parts.db (3-5 GB para el catálogo completo de más de 2.5 millones de piezas).
Modo 2: Bibliotecas de Símbolos Locales (Sin Configuración Requerida)
Instale las bibliotecas JLCPCB mediante el Administrador de Plugins y Contenido de KiCAD:
- Abra KiCAD
- Vaya a Herramientas > Administrador de Plugins y Contenido
- Busque "JLCPCB" o "JLC"
- Instale bibliotecas como
JLCPCB-KiCAD-LibraryoEDA_MCP - Use
search_symbolspara encontrar componentes con huellas preconfiguradas e IDs LCSC
Modo 3: API Oficial JLCPCB (Avanzado - Requiere Cuenta Empresarial)
Para usuarios con cuentas empresariales JLCPCB e historial de pedidos:
-
Obtener Credenciales de API
- Inicie sesión en JLCPCB
- Navegue a Cuenta > Gestión de API (requiere aprobación empresarial)
- Cree una Clave de API y guarde su
appKeyyappSecret - Nota: Esto requiere historial de pedidos previo y aprobación de cuenta empresarial
-
Configurar Variables de Entorno
Agregue a su perfil de shell (
~/.bashrc,~/.zshrco~/.profile):export JLCPCB_API_KEY="your_app_key_here" export JLCPCB_API_SECRET="your_app_secret_here"O cree un archivo
.enven la raíz del proyecto:JLCPCB_API_KEY=your_app_key_here JLCPCB_API_SECRET=your_app_secret_here
Consulte la Guía de Uso de JLCPCB para documentación detallada.
Ejemplos de Uso
Flujo de Trabajo Básico de Diseño de PCB
Create a new KiCAD project named 'LEDBoard' in my Documents folder.
Set the board size to 50mm x 50mm and add a rectangular outline.
Place a mounting hole at each corner, 3mm from the edges, with 3mm diameter.
Add text 'LED Controller v1.0' on the front silkscreen at position x=25mm, y=45mm.
Colocación de Componentes
Place an LED at x=10mm, y=10mm using footprint LED_SMD:LED_0805_2012Metric.
Create a grid of 4 resistors (R1-R4) starting at x=20mm, y=20mm with 5mm spacing.
Align all resistors horizontally and distribute them evenly.
Enrutado
Create a net named 'LED1' and route a 0.3mm trace from R1 pad 2 to LED1 anode.
Add a copper pour for GND on the bottom layer covering the entire board.
Create a differential pair for USB_P and USB_N with 0.2mm width and 0.15mm gap.
Autorutado con Freerouting
Enrute automáticamente todas las redes no conectadas usando el autorutador Freerouting.
Configuración (una sola vez):
# 1. Download the Freerouting JAR
mkdir -p ~/.kicad-mcp
curl -L -o ~/.kicad-mcp/freerouting.jar \
https://github.com/freerouting/freerouting/releases/download/v2.0.1/freerouting-2.0.1-executable.jar
# 2. Runtime — pick ONE:
# Option A: Docker (recommended, no Java install needed)
docker pull eclipse-temurin:21-jre
# Option B: Install Java 21+ locally
# (Ubuntu/Debian) sudo apt install openjdk-21-jre
El autorutador detecta automáticamente qué runtime está disponible (Java 21+ directo, o Docker/Podman como respaldo).
Check if Freerouting is ready on my system.
Autoroute the current board using Freerouting with a 5-minute timeout.
Flujo de trabajo paso a paso:
1. Open the project at ~/Projects/LEDBoard/LEDBoard.kicad_pcb
2. Check Freerouting dependencies are installed
3. Run autoroute with max 10 passes
4. Run DRC to verify the autorouted result
5. Export Gerbers to the fabrication folder
Flujo de trabajo manual DSN/SES (para usuarios avanzados o autorutadores externos):
Export the board to Specctra DSN format.
# ... run Freerouting GUI or another autorouter externally ...
Import the routed SES file from ~/Projects/LEDBoard/LEDBoard.ses
Verificación de Diseño
Set design rules with 0.15mm clearance and 0.2mm minimum track width.
Run a design rule check and show me any violations.
Export Gerber files to the 'fabrication' folder.
Uso de Recursos
Los recursos proporcionan acceso de solo lectura al estado del proyecto:
Show me the current component list.
What are the current design rules?
Display the board preview.
List all electrical nets.
Selección de Componentes JLCPCB
Encontrar Componentes con Bibliotecas Locales:
Search for ESP32 modules in JLCPCB libraries.
Find a 10k resistor in 0603 package from installed libraries.
Show me details for LCSC part C2934196.
Optimización de Costos con API JLCPCB:
Search for 10k ohm resistors in 0603 package, only Basic parts.
Find the cheapest capacitor 10uF 25V in 0805 package with good stock.
Show me pricing and stock for JLCPCB part C25804.
Suggest cheaper alternatives to C25804.
Flujo de Trabajo de Diseño Completo:
I'm designing a board with an ESP32 and need to select components for JLCPCB assembly.
Search JLCPCB for ESP32-C3 modules.
Find Basic parts for: 10k resistor 0603, 100nF capacitor 0603, LED 0805.
For each component, show me the cheapest option with good stock availability.
Place these components on my board using the suggested footprints.
Gestión de Base de Datos:
Download the JLCPCB parts database (first time setup).
Show me JLCPCB database statistics.
How many Basic parts are available?
Arquitectura
Capa de Protocolo MCP
- Transporte JSON-RPC 2.0: Comunicación bidireccional mediante STDIO
- Versión del Protocolo: MCP 2025-06-18
- Capacidades: Herramientas (244), Recursos (23)
- Descubrimiento de herramientas: catálogo de búsqueda por palabras clave que indexa 184 herramientas en 17 categorías
- Manejo de Errores: códigos de error JSON-RPC estándar
Servidor TypeScript (src/)
- Implementa la especificación del protocolo MCP
- Gestiona el ciclo de vida del subproceso de Python
- Maneja el enrutamiento y la validación de mensajes
- Proporciona registro y recuperación de errores
- Catálogo de descubrimiento:
src/tools/registry.ts- Categorización y búsqueda de herramientassrc/tools/router.ts-list_tool_categories,get_category_tools,search_tools- Solo búsqueda y navegación. No controla qué herramientas llegan al cliente, por lo que no ahorra contexto; la ejecución indirecta se eliminó en 963a39c porque causaba alucinación de esquemas. Consulte ROUTER_ARCHITECTURE.md.
Interfaz Python (python/)
- kicad_interface.py: Punto de entrada principal, manejador de mensajes MCP, enrutamiento de comandos
- kicad_api/: Implementaciones de backend
base.py- Clases base abstractas para backendsipc_backend.py- Backend de API IPC de KiCAD 9.0 (sincronización de UI en tiempo real)swig_backend.py- Backend de API SWIG de pcbnew (operaciones basadas en archivos)factory.py- Detección automática e instanciación de backend
- schemas/tool_schemas.py: Definiciones de esquema JSON para todas las herramientas
- resources/resource_definitions.py: Manejadores de recursos y URIs
- commands/: Implementaciones de comandos modulares
project.py- Operaciones de proyectoboard.py- Manipulación de placacomponent.py- Colocación de componentesrouting.py- Enrutado de trazas y redesdesign_rules.py- Operaciones DRCexport.py- Generación de archivosschematic.py- Diseño de esquemáticoslibrary.py- Bibliotecas de huellaslibrary_symbol.py- Búsqueda de bibliotecas de símbolos (bibliotecas JLCPCB locales)jlcpcb.py- Cliente API JLCPCBjlcpcb_parts.py- Gestor de base de datos de piezas JLCPCB
Integración KiCAD
- API pcbnew (SWIG): Enlaces directos de Python a KiCAD para operaciones de archivos
- API IPC (kipy): Comunicación en tiempo real con la instancia de KiCAD en ejecución (experimental)
- Backend Híbrido: Usa automáticamente IPC cuando está disponible, recurre a SWIG
- kicad-skip: Manipulación de archivos de esquemáticos
- Detección de Plataforma: Manejo de rutas multiplataforma
- Gestión de UI: Inicio/detección automática de la UI de KiCAD
Desarrollo
Compilación desde el Código Fuente
# Install dependencies
npm install
pip3 install -r requirements.txt
# Build TypeScript
npm run build
# Watch mode for development
npm run dev
Ejecución de Pruebas
# TypeScript tests
npm run test:ts
# Python tests
npm run test:py
# All tests with coverage
npm run test:coverage
Linting y Formateo
# Lint TypeScript and Python
npm run lint
# Format code
npm run format
Solución de Problemas
El Servidor No Aparece en el Cliente
Síntomas: El servidor MCP no aparece en Claude Desktop o Cline
Soluciones:
- Verifique que la compilación se completó:
ls dist/index.js - Verifique que las rutas de configuración sean absolutas
- Reinicie completamente el cliente MCP
- Revise los registros del cliente para ver mensajes de error
Errores de Importación de Módulos Python
Síntomas: ModuleNotFoundError: No module named 'pcbnew'
Soluciones:
- Verifique la instalación de KiCAD:
python3 -c "import pcbnew" - Verifique que PYTHONPATH en la configuración coincida con su instalación de KiCAD
- Asegúrese de que KiCAD se instaló con soporte de Python
Fallos en la Ejecución de Herramientas
Síntomas: Las herramientas fallan con errores poco claros
Soluciones:
- Revise los registros del servidor:
~/.kicad-mcp/logs/kicad_interface-<pid>.log(un archivo por proceso del servidor) - Verifique que un proyecto esté cargado antes de ejecutar operaciones de placa
- Asegúrese de que las rutas de archivo sean absolutas, no relativas
- Verifique que los tipos de parámetros de las herramientas coincidan con los requisitos del esquema
Problemas Específicos de Windows
Síntomas: El servidor no se inicia en Windows
Soluciones:
- Ejecute diagnósticos automatizados:
.\setup-windows.ps1 - Verifique que la ruta de Python use dobles barras invertidas:
C:\\Program Files\\KiCad\\10.0 - Revise el Visor de Eventos de Windows para errores de Node.js
- Consulte la Guía de Solución de Problemas de Windows
Obteniendo Ayuda
- Consulta los GitHub Issues
- Revisa los registros del servidor:
~/.kicad-mcp/logs/kicad_interface-<pid>.log(un archivo por proceso del servidor) - Abre un nuevo issue con:
- Sistema operativo y versión
- Versión de KiCAD (
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())") - Versión de Node.js (
node --version) - Mensaje de error completo y traza de pila
- Extractos relevantes de los registros
Estado del Proyecto
Versión Actual: 2.8.2
Consulta STATUS_SUMMARY.md para la matriz de estado completa y CHANGELOG.md para las notas de versión detalladas.
Funciones Funcionando (244 herramientas):
- Gestión de proyectos con puntos de control de instantáneas
- Diseño completo de placas (contorno, capas, zonas, orificios de montaje, texto, logotipos SVG)
- Colocación de componentes con matrices, alineación y duplicación
- Enrutamiento avanzado (pad a pad con vía automática, pares diferenciales, copia de patrones)
- Flujo de trabajo completo de esquemáticos con carga dinámica de símbolos (~10,000 símbolos)
- Sistema de cableado inteligente con descubrimiento de pines y enrutamiento inteligente
- Flujo de trabajo de paso de cables FFC/cinta
- Sincronización de esquemático a placa, más anotación inversa de huellas desde la placa
- Verificación de reglas de diseño (DRC y ERC)
- Validación estructural de esquemáticos y bibliotecas de símbolos
- Exportación a Gerber, PDF, SVG, 3D, BOM, netlist, archivo de posición
- Creación de huellas y símbolos personalizados
- Mantenimiento de tablas de bibliotecas (listar, eliminar y reasignar entradas de símbolos/huellas)
- Integración de piezas JLCPCB (catálogo de más de 2.5M de piezas)
- Búsqueda de Información de Producto Digi-Key V4 y barrido de disponibilidad de bibliotecas
- Controlador GUI opcional: menús, barras de herramientas, diálogos y botones de complementos de la GUI de KiCad en vivo a través de un asistente localhost protegido por token (
install_gui_driver, luegoKICAD_GUI_DRIVER_ENABLE=1) - Enriquecimiento de hojas de datos vía LCSC
- Integración del autorouter Freerouting (Java, Docker, Podman)
- Auto-lanzamiento y gestión de la interfaz de usuario
- Cumplimiento completo del protocolo MCP 2025-06-18
Backend IPC (Experimental):
- Sincronización de interfaz de usuario en tiempo real vía la API IPC de KiCAD
- 21 comandos habilitados por IPC con respaldo automático de SWIG
- Carga híbrida de huellas (SWIG para acceso a bibliotecas, IPC para colocación)
Modo Desarrollador:
Establece KICAD_MCP_DEV=1 para capturar registros de sesión MCP para depuración. Consulta CHANGELOG v2.2.3 para detalles.
Registro (~/.kicad-mcp/logs/):
Los registros se guardan por defecto en INFO y el archivo tiene un límite de tamaño para que no pueda crecer sin límite. Ajusta mediante el entorno del servidor MCP:
| Variable | Valor predeterminado | Propósito |
|---|---|---|
LOG_LEVEL / KICAD_MCP_LOG_LEVEL | info | Verbosidad del registro (error/warn/info/debug, o off). KICAD_MCP_LOG_LEVEL gana. |
KICAD_MCP_LOG_MAX_BYTES | 10485760 (10 MB) | Tamaño máximo por archivo de registro antes de rotar; 0 desactiva la rotación. |
KICAD_MCP_LOG_BACKUP_COUNT | 3 | Número de copias de seguridad rotadas a conservar. |
KICAD_MCP_DEBUG_SKIP | sin establecer | Establece a 1 para re-habilitar los registros DEBUG verbosos del analizador kicad-skip (silenciados por defecto). |
Consulta ROADMAP.md para las funciones planificadas.
¿Qué Quieres Ver a Continuación?
Estamos desarrollando activamente nuevas funciones. Tus comentarios moldean directamente las prioridades de desarrollo.
Comparte tus ideas:
- Abre una solicitud de función
- Únete a la discusión
- Marca el repositorio con una estrella si lo encuentras útil
Contribuciones
¡Las contribuciones son bienvenidas! Por favor, sigue estas pautas:
- Reporta Errores: Abre un issue con pasos de reproducción
- Sugiere Funciones: Describe el caso de uso y el comportamiento esperado
- Envía Solicitudes de Extracción (Pull Requests):
- Haz un fork del repositorio
- Crea una rama de función
- Sigue el estilo de código existente
- Añade pruebas para la nueva funcionalidad
- Actualiza la documentación
- Envía el PR con una descripción clara
Consulta CONTRIBUTING.md para pautas detalladas.
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulta LICENSE para detalles.
Agradecimientos
- Construido sobre el Model Context Protocol de Anthropic
- Impulsado por KiCAD, software de diseño de PCB de código abierto
- Utiliza kicad-skip para la manipulación de esquemáticos
- JLCSearch API por @tscircuit - API pública de piezas JLCPCB
- JLCParts Database por @yaqwsx - Datos de piezas JLCPCB
Contribuyentes de la Comunidad
- @Kletternaut - Herramientas de enrutamiento/componentes, creadores de huellas/símbolos, flujo de trabajo de paso, correcciones de plantillas (PRs #44, #48, #49, #51, #53, #57, #59)
- @Mehanik - Herramientas de inspección/edición de esquemáticos, posiciones de campos de componentes (PRs #60, #66, #67)
- @jflaflamme - Integración del autorouter Freerouting con soporte Docker/Podman (PR #68)
- @l3wi - Búsqueda local de bibliotecas de símbolos, soporte de bibliotecas de terceros JLCPCB (PR #25)
- @gwall-ceres - Cumplimiento del protocolo MCP, compatibilidad con Windows (PR #10)
- @fariouche - Correcciones de errores (PR #17)
- @shuofengzhang - Manejo de rutas relativas XDG (PR #58)
- @sid115 - Mejoras al script de configuración de Windows (PR #13)
- @pasrom - Correcciones de errores del servidor MCP (PR #50)
Cita
Si utilizas este proyecto en tu investigación o publicación, por favor cita:
@software{kicad_mcp_server,
title = {KiCAD MCP Server: AI-Assisted PCB Design},
author = {mixelpixx},
year = {2026},
url = {https://github.com/mixelpixx/KiCAD-MCP-Server},
version = {2.8.2}
}