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_symbols devolvía vacío y list_library_symbols fallaba para Device. 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_sheet escribe una hoja como lo hace KiCad. Usa los nombres de propiedad Sheetname y Sheetfile, 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_component devuelve 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. main puede 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_schematic numera 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_components y annotate_schematic informan 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_sheet escribe 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_net ya no coloca una etiqueta donde solía estar el pin de una pieza movida (#427).
  • add_schematic_wire informa 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_component realmente intercambia la huella, manteniendo las redes, el enlace de esquemático, los atributos y el bloqueo (#411, @AmirF194).
  • sync_schematic_to_board lee 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 PATH se detecta en Linux (#401, @famez).
  • El diálogo de aserción PCB_VIA::GetWidth en KiCad 9 y 10 ha desaparecido, y KiCad 8 vuelve a funcionar (#398, @scorp508).
  • autoroute y import_ses informan 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 mediante kicad-cli en una copia.
  • Tablas de bibliotecas: list_library_table, remove_library_table_entry, set_library_table_uri — el CRUD faltante alrededor de register_*_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 de sync_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

  • autoroute organiza sus archivos de trabajo .dsn/.ses en 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 de exit 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_layer realmente 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_board coincide por UUID de símbolo, no solo por refdes (#250).
  • Las herramientas JLCPCB decodifican el nuevo esquema source-db-v2 ascendente (#352, @stefanobaldo) y degradan con gracia cuando la base de datos de piezas no está disponible (#264, @fage2022).
  • setup-macos.sh --verify ahora 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_pcb convierte archivos .brd de 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_properties y hierarchical_place para organizar huellas según la jerarquía del esquemático.
  • Lint y reparación de esquemáticos: lint_offgrid encuentra y ajusta de forma segura geometría fuera de la rejilla que rompe silenciosamente la colocación de uniones; repair_flat_symbols corrige símbolos de SnapEDA/SamacSys que bloquean kicad-skip; lint_schematic_cosmetic ordena 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 lint solía ejecutar black en modo escritura contra lo que black estuviera en PATH, reformateando silenciosamente tu árbol de trabajo con una versión que discrepaba de CI. Ahora solo verifica; npm run format:py es 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_clearance y set_layer_constraints tenían cada una un esquema completo y una entrada de enrutador, pero ningún controlador de despacho, por lo que cada llamada devolvía Unknown 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_dru con ámbito de proyecto, que kicad-cli pcb drc y la GUI detectan; no existe una API de pcbnew para ellas.

Fallos silenciosos eliminados

  • autoroute fue abandonado por el puente Node a los 30 s mientras Freerouting aún se ejecutaba, reportando fallo contra un .ses válido que existía en disco. Su tiempo de espera ahora deriva de los timeout y attempts que pases.
  • get_board_2d_view omitía --layers por completo cuando no se daban capas, y KiCad 9+ entonces rechaza la exportación, sin producir archivo alguno.
  • create_zone lanzaba AttributeError en cada llamada a través del backend IPC.

Nuevas herramientas de aprovisionamiento de componentes

  • search_parts_registry / get_registry_part / download_registry_part reutilizan 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_part devuelve 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_symbol copian 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_property y add_library_symbol_property establecen 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_library actualiza definiciones lib_symbols en 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_ids intercambia referencias lib_id segú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_ns de 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_sym y esquemático lanzaba TypeError en Python 3.9, el mínimo declarado del proyecto: Path.write_text no aceptaba newline hasta 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-cli 10.0 real.
  • La colocación de componentes se ajusta a la rejilla de 1.27 mm, import_ses ya no crea redes fantasma sin barras, y export_dsn/autoroute conservan clases de red .kicad_pro.

Detalles completos en el CHANGELOG.

Novedades en v2.3.1

Importación de esquemáticos Eagle

  • import_eagle_schematic convierte diseños XML .sch de 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 mediante kicad-cli.

Herramientas de modelos 3D y recarga interactiva

  • add_component_3d_model / remove_component_3d_model para adjuntar modelos STEP/WRL a huellas.
  • KICAD_INTERACTIVE_SCHEMATIC=1 opcional 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_pro coinciden con lo que KiCad mismo escribe.
  • La versión de formato 20260101 garantiza 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_symdir resuelven 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.json se 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_project se niega a sobrescribir un archivo de placa cuyo contenido cambió en disco desde la carga (pasa force: true para 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-cli y 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):

  1. 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).
  2. sync_schematic_to_board: importa las asignaciones de red en el PCB.
  3. 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.
  4. 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_pad ahora detecta correctamente cuando una huella está en B.Cu e inserta la vía requerida. (El SWIG de KiCAD 9 devolvía F.Cu para todas las almohadillas SMD independientemente de la capa: corregido).
  • Esquinas redondeadas del contorno de placa: add_board_outline ahora aplica correctamente cornerRadius cuando shape="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_project solo creó archivos de PCB, sin esquemáticos
  • add_schematic_component llamó 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_project ahora 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:

  1. Plantillas estáticas: 13 símbolos preconfigurados (R, C, L, LED, etc.) para uso inmediato
  2. Carga dinámica: Inyección bajo demanda de CUALQUIER símbolo de las bibliotecas de KiCad:
    • Analizar archivos de biblioteca .kicad_sym usando el analizador de expresiones S
    • Inyectar la definición del símbolo en la sección lib_symbols del 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
  3. Creación de cables: Inyección de cables basada en expresiones S (omite las limitaciones de la API de kicad-skip)
  4. Descubrimiento de pines: Analizar definiciones de símbolos, aplicar transformaciones de rotación, calcular posiciones absolutas
  5. 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_tools muestra 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 disponibles
    • get_category_tools - Ver herramientas en una categoría específica
    • search_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:

  1. Bibliotecas de símbolos locales - Busque bibliotecas JLCPCB instaladas a través del Administrador de complementos y contenido de KiCAD (contribuido por @l3wi)
  2. 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 proyecto
  • kicad://project/current/board - Propiedades de la placa
  • kicad://project/current/components - Lista de componentes (JSON)
  • kicad://project/current/nets - Redes eléctricas
  • kicad://project/current/layers - Configuración de pila de capas
  • kicad://project/current/design-rules - Configuración actual de DRC
  • kicad://project/current/drc-report - Violaciones de reglas de diseño
  • kicad://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 KiCAD
  • open_project - Cargar archivos de proyecto existentes
  • open_board / reload_board - Abrir o releer un .kicad_pcb específico
  • save_project / save_board / save_as - Guardar el estado actual
  • close_project - Guardar (opcionalmente) y descartar el estado en memoria
  • is_dirty / discard_or_reload - Verificar y deshacer cambios no guardados
  • get_project_info - Recuperar metadatos del proyecto
  • snapshot_project - Guardar instantánea de punto de control con nombre

Operaciones de placa (19 herramientas)

  • set_board_size - Configurar dimensiones de PCB
  • add_board_outline - Crear borde de placa (rectángulo, círculo, polígono, rectángulo redondeado)
  • add_layer - Agregar capas personalizadas a la pila
  • set_active_layer - Cambiar capa de trabajo
  • get_layer_list - Listar todas las capas de la placa
  • get_board_info - Recuperar propiedades de la placa
  • get_board_2d_view - Generar imagen de vista previa de la placa
  • get_board_extents - Obtener cuadro delimitador de la placa
  • add_mounting_hole - Colocar orificios de montaje
  • add_board_text - Agregar anotaciones de texto
  • add_zone - Agregar zona/vertido de cobre con configuraciones de espacio libre
  • clear_board_outline / replace_board_outline - Eliminar o intercambiar el contorno Edge.Cuts
  • set_board_origin / get_board_origin - Leer y establecer los orígenes de perforación/colocación y de cuadrícula
  • list_graphics / update_graphic / delete_graphic - Inspeccionar y editar elementos de dibujo
  • import_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 huella
  • move_component - Reposicionar componente existente
  • rotate_component - Rotar componente por ángulo
  • delete_component - Eliminar componente de la placa
  • edit_component - Modificar propiedades del componente
  • find_component - Buscar por referencia o valor
  • get_component_properties - Consultar detalles del componente
  • add_component_annotation - Agregar anotación/comentario
  • group_components - Agrupar múltiples componentes
  • replace_component - Reemplazar con diferente huella
  • get_component_pads - Obtener toda la información de pads
  • get_component_list - Listar todos los componentes colocados
  • get_pad_position - Obtener posición precisa del pad
  • place_component_array - Crear cuadrículas/patrones de componentes
  • align_components - Alinear múltiples componentes
  • duplicate_component - Copiar componente existente
  • batch_move_components - Mover muchos componentes en una sola llamada transaccional
  • get_component_geometry / check_placement_clearance - Tamaños de cuerpo y verificaciones de superposición
  • get_ratsnest / estimate_airwire_lengths - Análisis de conexiones no enrutadas

Enrutamiento (17 herramientas)

  • add_net - Crear red eléctrica
  • route_trace - Enrutar trazas de cobre entre puntos XY
  • route_pad_to_pad - Enrutar entre pads con inserción automática de vías
  • add_via - Colocar vías para transiciones de capa
  • delete_trace - Eliminar trazas (por UUID, posición o red)
  • query_traces - Consultar/filtrar trazas
  • get_nets_list - Listar todas las redes con estadísticas
  • modify_trace - Cambiar ancho de traza, capa o red
  • create_netclass - Definir clase de red con reglas
  • add_copper_pour - Crear zonas/vertidos de cobre
  • route_differential_pair - Enrutar señales diferenciales
  • refill_zones - Rellenar todas las zonas de cobre
  • copy_routing_pattern - Replicar enrutamiento entre grupos de componentes
  • set_net_color - Establecer o borrar la anulación de color de visualización de una red
  • route_arc_trace - Enrutar una traza curva
  • add_gnd_stitching_vias - Puntada de plano de tierra con vías
  • query_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 KiCad
  • delete_schematic_component - Eliminar componente
  • edit_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 lotes
  • set_schematic_component_property - Agregar o actualizar una única propiedad personalizada (campo de BOM/abastecimiento) en un componente
  • remove_schematic_component_property - Eliminar una única propiedad personalizada de un componente
  • get_schematic_component - Inspeccionar cada campo de un componente (integrados + personalizados) incluyendo posiciones de etiquetas
  • list_schematic_components - Listar todos los componentes
  • move_schematic_component - Reposicionar componente
  • rotate_schematic_component - Rotar componente
  • annotate_schematic - Asignar automáticamente designadores de referencia

Cableado y Conexiones:

  • add_schematic_wire - Crear cable entre puntos
  • delete_schematic_wire - Eliminar segmento de cable
  • add_no_connect - Marcar un pin como deliberadamente desconectado
  • add_schematic_net_label - Agregar etiquetas de red (VCC, GND, señales)
  • delete_schematic_net_label - Eliminar etiqueta de red
  • connect_to_net - Conectar pin a red nombrada
  • connect_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 red
  • list_schematic_nets / list_schematic_wires / list_schematic_labels
  • create_schematic - Crear nuevo archivo de esquemático
  • get_schematic_view - Vista previa rasterizada del esquemático
  • export_schematic_svg / export_schematic_pdf
  • run_erc - Verificación de reglas eléctricas
  • generate_netlist - Generar lista de redes desde el esquemático
  • sync_schematic_to_board - Importar redes/pads al PCB (equivalente a F8)
  • backannotate_footprints - Copiar selecciones de huellas desde la placa de vuelta al esquemático
  • create_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 lotes
  • add_hierarchical_sheet / create_hierarchical_subsheet - Diseños de múltiples hojas
  • autoplace_schematic_fields / lint_schematic_cosmetic - Ordenar la colocación de campos
  • lint_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_sch
  • validate_symbol_library - Verificar un archivo .kicad_sym

Reglas de Diseño / DRC (7 herramientas)

  • set_design_rules / get_design_rules - Configurar e inspeccionar reglas
  • run_drc - Ejecutar verificación de reglas de diseño
  • get_drc_violations - Obtener lista de violaciones por severidad
  • create_netclass / assign_net_to_class - Gestión de clases de red
  • set_layer_constraints / check_clearance - Reglas de capas y espacios

Exportación (27 herramientas)

  • export_gerber / export_gerbers / export_gerber_single - Archivos de fabricación Gerber
  • export_drill - Archivos de perforación
  • export_ipc2581 / export_odb / export_ipcd356 / export_gencad - Otros formatos de fabricación
  • export_pdf / export_svg / export_pcb_dxf - Documentación y gráficos vectoriales
  • export_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 place
  • export_sch_pdf / export_sch_svg / export_sch_dxf - Salida de esquemático
  • export_vrml - Modelo 3D VRML

Bibliotecas de Huellas y Bibliotecas de Símbolos (16 herramientas)

  • list_libraries / list_symbol_libraries - Explorar bibliotecas disponibles
  • search_footprints / search_symbols - Buscar en todas las bibliotecas
  • list_library_footprints / list_library_symbols - Explorar biblioteca específica
  • get_footprint_info / get_symbol_info - Información detallada
  • list_symbol_pins / batch_list_symbol_pins - Leer pines directamente desde una biblioteca
  • set_symbol_pin_type - Configurar por lotes tipos eléctricos de pines, con una prueba previa
  • find_duplicate_symbols - Encontrar la misma pieza almacenada dos veces con nombres diferentes
  • repair_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 resuelve
  • remove_library_table_entry - Dar de baja una biblioteca
  • set_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/pines
  • edit_footprint_pad - Modificar propiedades de pads
  • add_footprint_3d_model / add_component_3d_model / import_3d_model - Adjuntar modelos 3D
  • register_footprint_library / register_symbol_library - Registrar en la tabla de bibliotecas
  • list_footprint_libraries / list_symbols_in_library - Explorar bibliotecas personalizadas
  • add_symbol_property - Agregar o actualizar un campo en un símbolo de biblioteca
  • import_symbol / export_symbol / rename_symbol - Mover símbolos entre bibliotecas
  • delete_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 LCSC
  • get_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étricos
  • get_jlcpcb_part - Información detallada de pieza con precios
  • get_jlcpcb_database_stats - Estadísticas de base de datos
  • suggest_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/SES
  • check_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ón
  • launch_kicad_ui - Lanzar la aplicación KiCAD
  • get_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 fabricante
  • get_registry_part - Inspeccionar una pieza en detalle
  • download_registry_part - Descargar su huella, símbolo o modelo 3D

Importación (2 herramientas)

  • import_eagle_project - Convertir un proyecto Eagle
  • import_pcb - Cargar un .kicad_pcb existente 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 --version y npm --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\KiCad e 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.sh para 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 PYTHONPATH correcto 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
  1. Cierra completamente Claude Desktop
  2. Reabre Claude Desktop
  3. Abre un nuevo chat
  4. Haz clic en + → Connectors
  5. Verifica que el servidor aparezca (por ejemplo, kicad o 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 mcpServers y 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-packages o %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:

  1. Entorno virtual - venv/bin/python o .venv/bin/python (prioridad más alta)
  2. Variable de entorno KICAD_PYTHON - Anulación por parte del usuario para instalaciones no estándar
  3. Python incluido con KiCad - /usr/lib/kicad/bin/python3, /usr/local/lib/kicad/bin/python3, /opt/kicad/bin/python3
  4. Python del sistema mediante which - Resuelve which python3 a una ruta absoluta (por ejemplo, /usr/bin/python3)
  5. 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.json está 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:

  • McpServerPath es este repositorio, donde se construye dist/index.js
  • ProjectPath es el proyecto que debería recibir opencode.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 y dist/index.js antes 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 real
  • swig - usar el backend basado en archivos pcbnew

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

  1. Cierre completamente OpenCode.
  2. Inicie OpenCode nuevamente para que recargue opencode.json.
  3. Pida a OpenCode que use el servidor MCP kicad y ejecute check_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:

  1. Abra KiCAD
  2. Vaya a Herramientas > Administrador de Plugins y Contenido
  3. Busque "JLCPCB" o "JLC"
  4. Instale bibliotecas como JLCPCB-KiCAD-Library o EDA_MCP
  5. Use search_symbols para 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:

  1. 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 appKey y appSecret
    • Nota: Esto requiere historial de pedidos previo y aprobación de cuenta empresarial
  2. Configurar Variables de Entorno

    Agregue a su perfil de shell (~/.bashrc, ~/.zshrc o ~/.profile):

    export JLCPCB_API_KEY="your_app_key_here"
    export JLCPCB_API_SECRET="your_app_secret_here"
    

    O cree un archivo .env en 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 herramientas
    • src/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 backends
    • ipc_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 proyecto
    • board.py - Manipulación de placa
    • component.py - Colocación de componentes
    • routing.py - Enrutado de trazas y redes
    • design_rules.py - Operaciones DRC
    • export.py - Generación de archivos
    • schematic.py - Diseño de esquemáticos
    • library.py - Bibliotecas de huellas
    • library_symbol.py - Búsqueda de bibliotecas de símbolos (bibliotecas JLCPCB locales)
    • jlcpcb.py - Cliente API JLCPCB
    • jlcpcb_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:

  1. Verifique que la compilación se completó: ls dist/index.js
  2. Verifique que las rutas de configuración sean absolutas
  3. Reinicie completamente el cliente MCP
  4. 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:

  1. Verifique la instalación de KiCAD: python3 -c "import pcbnew"
  2. Verifique que PYTHONPATH en la configuración coincida con su instalación de KiCAD
  3. 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:

  1. Revise los registros del servidor: ~/.kicad-mcp/logs/kicad_interface-<pid>.log (un archivo por proceso del servidor)
  2. Verifique que un proyecto esté cargado antes de ejecutar operaciones de placa
  3. Asegúrese de que las rutas de archivo sean absolutas, no relativas
  4. 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:

  1. Ejecute diagnósticos automatizados: .\setup-windows.ps1
  2. Verifique que la ruta de Python use dobles barras invertidas: C:\\Program Files\\KiCad\\10.0
  3. Revise el Visor de Eventos de Windows para errores de Node.js
  4. Consulte la Guía de Solución de Problemas de Windows

Obteniendo Ayuda

  1. Consulta los GitHub Issues
  2. Revisa los registros del servidor: ~/.kicad-mcp/logs/kicad_interface-<pid>.log (un archivo por proceso del servidor)
  3. 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, luego KICAD_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:

VariableValor predeterminadoPropósito
LOG_LEVEL / KICAD_MCP_LOG_LEVELinfoVerbosidad del registro (error/warn/info/debug, o off). KICAD_MCP_LOG_LEVEL gana.
KICAD_MCP_LOG_MAX_BYTES10485760 (10 MB)Tamaño máximo por archivo de registro antes de rotar; 0 desactiva la rotación.
KICAD_MCP_LOG_BACKUP_COUNT3Número de copias de seguridad rotadas a conservar.
KICAD_MCP_DEBUG_SKIPsin establecerEstablece 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:

  1. Abre una solicitud de función
  2. Únete a la discusión
  3. Marca el repositorio con una estrella si lo encuentras útil

Contribuciones

¡Las contribuciones son bienvenidas! Por favor, sigue estas pautas:

  1. Reporta Errores: Abre un issue con pasos de reproducción
  2. Sugiere Funciones: Describe el caso de uso y el comportamiento esperado
  3. 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

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}
}