Skip to main content
Glama

🔶 Coppermind

Copiloto de engenharia eletrônica para KiCad — MCP semântico, transacional e verificado

CI License: MIT Python 3.11+ KiCad 10/11 MCP

🇧🇷 Português · 🇺🇸 English


Descreva o circuito, não as coordenadas. O Coppermind resolve símbolos reais, cria o Circuit IR, compõe o esquemático, roda ERC, revisa a organização visual e só confirma mudanças depois dos gates de segurança.

O Coppermind é um servidor MCP em Python para trabalhar com projetos eletrônicos no KiCad. O caminho principal de esquemático é semântico: o agente opera com Component / Pin / Net / Constraint, enquanto o Coppermind transforma essa intenção em .kicad_sch real, usando símbolos das bibliotecas instaladas do KiCad.

Ele pode ser executado com dois transports MCP:

  • stdio — cliente local inicia o Coppermind como subprocesso;

  • Streamable HTTP — endpoint local em /mcp, adequado para um túnel/gateway MCP confiável quando o cliente está fora da máquina.

O HTTP é loopback-only por projeto. O Coppermind não deve ser publicado diretamente na Internet: ele ainda mantém uma sessão de design por processo e não implementa autenticação multiusuário.

Arquitetura do Coppermind


Estado atual

O fluxo de esquemático implementa as cinco fases da arquitetura semântica:

Fase

Entrega

1 — Circuit IR + símbolos reais

Component, Pin, Net, Constraint; resolução de .kicad_sym/.kicad_symdir; sem fallback genérico de dois pinos.

2 — Tools semânticas

find_symbol, component_add, create_net, connect_pins, inspect_component; o LLM não desenha wires por coordenadas.

3 — Semantic Composer

Circuit IR → placement → net graph → wires/labels/junctions → .kicad_sch → ERC real via kicad-cli.

4 — Visual Reviewer

score visual, SVG/PDF real do KiCad, reflow determinístico e reviewer multimodal opcional.

5 — Visual Auto-Fix

Layout Action IR tipado, copy-on-write, safety gates, ERC antes/depois e rollback quando o candidato piora.

O resultado é um ciclo como este:

ChatGPT / Claude / outro cliente MCP
              │
       stdio ou Streamable HTTP
              │
              ▼
          Coppermind
              │
              ▼
          Circuit IR
              │
              ▼
      Semantic Composer
              │
              ▼
      .kicad_sch real
              │
      ┌───────┴────────┐
      ▼                ▼
  KiCad ERC       SVG / PDF
      │                │
      └───────┬────────┘
              ▼
      Visual Reviewer
              │
      Layout Action IR
              │
        accept / rollback

Related MCP server: KiCad MCP Pro

Instalação

Requisitos

  • Python 3.11+;

  • KiCad 10+ para uso real;

  • kicad-cli disponível no PATH para ERC/render headless;

  • para IPC ao vivo: extra Python kicad-python e API IPC habilitada no KiCad.

O projeto permanece na linha MCP Python SDK 1.x enquanto usa a API FastMCP: mcp>=1.30,<2. Isso evita uma migração implícita para a API v2.

Linux/macOS

git clone https://github.com/charlesmmorais/coppermind.git
cd coppermind
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e ".[ipc]"

Windows / PowerShell

git clone https://github.com/charlesmmorais/coppermind.git
cd coppermind
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e ".[ipc]"

Para desenvolvimento:

pip install -e ".[dev,ipc]"
pytest

No KiCad, habilite a API IPC quando quiser operar uma instância aberta:

Preferences → Plugins → Enable IPC API Server


Executando o servidor MCP

Opção A — stdio

É o padrão e o melhor caminho para clientes MCP locais:

coppermind

ou explicitamente:

coppermind --transport stdio

Opção B — Streamable HTTP

coppermind \
  --transport streamable-http \
  --host 127.0.0.1 \
  --port 8765 \
  --path /mcp

Endpoint:

http://127.0.0.1:8765/mcp

Também pode ser configurado por variáveis de ambiente:

COPPERMIND_TRANSPORT=streamable-http
COPPERMIND_HTTP_HOST=127.0.0.1
COPPERMIND_HTTP_PORT=8765
COPPERMIND_HTTP_PATH=/mcp
COPPERMIND_BACKEND=auto
coppermind

No PowerShell:

$env:COPPERMIND_TRANSPORT="streamable-http"
$env:COPPERMIND_HTTP_HOST="127.0.0.1"
$env:COPPERMIND_HTTP_PORT="8765"
$env:COPPERMIND_HTTP_PATH="/mcp"
$env:COPPERMIND_BACKEND="auto"
coppermind

Segurança: o processo recusa bind em 0.0.0.0, IP de LAN ou hostname não loopback. Para ChatGPT ou outro cliente remoto, mantenha o Coppermind em 127.0.0.1 e coloque um túnel/gateway MCP autenticado na frente. Veja docs/TRANSPORTES.md.


Conectando clientes MCP

Claude Desktop / clientes locais

Exemplo claude_desktop_config.json:

{
  "mcpServers": {
    "coppermind": {
      "command": "coppermind",
      "args": ["--transport", "stdio"],
      "env": {
        "COPPERMIND_BACKEND": "auto",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

Se coppermind não estiver no PATH, use o caminho absoluto do executável da virtualenv.

ChatGPT / cliente MCP remoto

O Coppermind agora fornece Streamable HTTP, mas 127.0.0.1 só existe na sua máquina. Para um cliente em nuvem:

ChatGPT
   │
   │ MCP Streamable HTTP
   ▼
túnel/gateway MCP autenticado
   │
   ▼
127.0.0.1:8765/mcp
   │
   ▼
Coppermind → KiCad

O cliente/workspace precisa aceitar servidores MCP personalizados e tools de escrita para poder criar/modificar o esquemático. O transporte HTTP, sozinho, não concede essas permissões.


Seleção do backend KiCad

COPPERMIND_BACKEND=auto    # IPC se estiver acessível; senão MemoryBackend
COPPERMIND_BACKEND=ipc     # exige uma sessão KiCad IPC acessível
COPPERMIND_BACKEND=memory  # desenvolvimento/offline

Backend

Uso principal

MemoryBackend

domínio/testes e trabalho offline

IPCBackend

interação com uma instância KiCad via kicad-python/kipy

BatchBackend

DRC/render/export headless com kicad-cli

No KiCad 10, o caminho de esquemático é deliberadamente híbrido: o Circuit IR e o composer geram o arquivo .kicad_sch; kicad-cli executa ERC e renderizações reais. A evolução do IPC de esquemático no KiCad 11 poderá substituir partes dessa camada sem mudar as tools semânticas.


Fluxo recomendado do agente

As 9 tools de núcleo são orientadas à intenção elétrica:

project_create
find_symbol
component_add
create_net
connect_pins
inspect_component
design_preview
design_commit
design_rollback

Há ainda 5 tools de descoberta progressiva para acessar a cauda longa sem poluir o contexto do modelo:

list_tool_categories
get_category_tools
search_tools
get_tool_schema
execute_tool

Exemplo de autoria semântica:

find_symbol("resistor")
component_add(reference="R1", symbol="Device:R", value="10k")
component_add(reference="C1", symbol="Device:C", value="100nF")
create_net(name="SENSE")
connect_pins(net="SENSE", pins=["R1.2", "C1.1"])
design_preview()
design_commit()

As primitivas cruas de esquemático como symbol_add e wire_add ficam internas e não são oferecidas ao agente. As operações PCB por coordenadas permanecem como compatibilidade roteada, não como caminho principal.


Composer, ERC e revisão visual

design_preview e design_commit executam automaticamente o pipeline seguro de esquemático:

Circuit IR
 → compose
 → visual review/reflow
 → serialização .kicad_sch
 → KiCad ERC
 → gate

Tools adicionais são descobertas sob demanda:

schematic_compose
schematic_erc
schematic_export_composed
schematic_visual_review
schematic_visual_optimize
schematic_visual_plan
schematic_visual_apply
schematic_visual_autofix

O auto-fix visual não altera a intenção elétrica. Só executa ações geométricas tipadas e limitadas (move_near, align, compact_block etc.) sobre uma cópia do esquemático. Se o score piorar, surgir nova violação ERC ou o Circuit IR mudar, o candidato é descartado.

Documentação detalhada:


Reviewer multimodal opcional

A revisão determinística funciona sem serviço externo. Para acrescentar um crítico multimodal, configure um provider compatível:

COPPERMIND_VISUAL_PROVIDER=openai
OPENAI_API_KEY=...
COPPERMIND_VISUAL_MODEL=<modelo-multimodal>

Quando habilitado, o PDF real exportado pelo KiCad e um contexto limitado do Circuit IR são enviados ao provider. Não habilite essa opção para designs sensíveis sem avaliar a política de dados aplicável.


PCB, autorroteamento e integrações

O núcleo histórico de PCB continua disponível: modelo transacional, DRC, undo/redo, variantes, fornecedores, datasheets, exportação .kicad_pcb e Freerouting.

Para autorroteamento:

docs/AUTORROTEAMENTO.md

Fluxo resumido:

KiCad → Specctra DSN → Freerouting → SES → Coppermind
                                      ↓
                              preview / DRC
                                      ↓
                              commit / rollback

Garantias de segurança da arquitetura

O Coppermind foi desenhado para impedir que o LLM vire um executor irrestrito:

  • não executa Python arbitrário gerado pelo modelo;

  • símbolos são resolvidos em bibliotecas reais do KiCad;

  • símbolo inexistente falha explicitamente;

  • Circuit IR é a fonte de verdade elétrica;

  • alterações passam por preview/commit/rollback;

  • ERC/DRC entram no gate;

  • visual auto-fix opera copy-on-write e só em geometria;

  • paths de arquivos usados por tools são validados;

  • Streamable HTTP fica restrito a loopback;

  • provider multimodal é opcional e possui fronteira de dados documentada.


Testes e CI

O workflow de CI executa:

  • Python 3.11 e 3.12;

  • Ruff;

  • pytest + cobertura;

  • mypy;

  • job de integração bloqueante com KiCad 10 real;

  • serialização de esquemático, ERC, SVG/PDF e Visual Auto-Fix contra KiCad.

O objetivo é que afirmações críticas da arquitetura sejam verificadas pelo CI, não apenas descritas no README.


Limitações atuais

  • Streamable HTTP é single-user por processo; não é um servidor multi-tenant.

  • Não há autenticação embutida no endpoint HTTP; use túnel/gateway confiável.

  • A criação de esquemático no KiCad 10 usa arquivo .kicad_sch + kicad-cli; live schematic IPC será adotado quando a API adequada estiver estável.

  • O Visual Reviewer multimodal é probabilístico e opcional; os gates determinísticos continuam sendo a autoridade de segurança.

  • O caminho de PCB ainda possui mais operações legadas baseadas em geometria do que o caminho de esquemático semântico.

  • Revisão de engenharia continua necessária antes da fabricação de hardware.


Documentação

Veja o índice em docs/README.md:


Contribuindo

Antes de abrir um PR:

pip install -e ".[dev,ipc]"
ruff check src tests
pytest
mypy src

Mantenha as invariantes centrais: intenção elétrica no Circuit IR, geometria derivada, progressive discovery, mudanças reversíveis e nenhuma execução arbitrária de código produzido por modelo.

Licença

MIT. Consulte LICENSE.

O Coppermind é uma ferramenta de assistência. ERC/DRC, regras e IA reduzem risco, mas não substituem validação elétrica, térmica, mecânica, regulatória e de segurança antes da fabricação.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.
    58 npm
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to read and modify KiCAD PCB designs through the KiCAD IPC API, providing tools for board queries, footprint placement, track creation, DRC, and export.
    44
    14
    MIT