Engineering-CAD-AI MCP Server
Provides a CAD adapter contract/stub for executing approved DXF revision plans against AutoCAD; marked CAD_REAL_NOT_RUN because it has not been tested against a real licensed AutoCAD installation.
Provides a CAD adapter contract/stub for executing approved DXF revision plans against FreeCAD; marked CAD_REAL_NOT_RUN because it has not been tested against a real FreeCAD installation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Engineering-CAD-AI MCP Serverparse pump_housing.dxf and plan adding two M8 holes; validate and preview the diff."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
📐 Engineering-CAD-AI — de pedido em linguagem natural a revisão CAD verificada, com aprovação humana
Python · ezdxf · Pydantic · FastAPI · MCP · Claude (opcional) · pytest · GitHub Actions
🟡 Status
🟡 MVP técnico funcional — DXF → Engineering IR → plano tipado → aprovação → revisão nova verificada.
O fluxo completo roda offline, sem licença de CAD e sem chave de API: 113 testes passam (1 teste opt-in
com o Claude real fica pulado por custo) e a demo grava a revisão B com os 9 checks de releitura em PASS.
AutoCAD, FreeCAD e Creo estão com contrato definido e marcados CAD_REAL_NOT_RUN (sem instalação
licenciada); busca híbrida e similaridade ainda não foram iniciadas.
Área | Estado | Evidência |
Parser DXF + Engineering IR v1 | ✅ implementado e testado |
|
Plano tipado + validador determinístico | ✅ implementado e testado | |
Aprovação + copy-on-write + readback | ✅ implementado e testado | |
API, MCP, CLI | ✅ implementado e testado | |
Planner Claude | 🟡 testado com cliente falso | chamada real é opt-in |
AutoCAD / FreeCAD / Creo | ⛔ |
Related MCP server: AutoCAD MCP Pro
Descrição / Contexto
Em engenharia mecânica, boa parte do trabalho repetitivo é alterar desenhos: acrescentar um furo, mover uma feature, anotar uma revisão. Pedir isso direto a um modelo de linguagem é arriscado — o modelo erra geometria, não deixa rastro e pode sobrescrever o arquivo errado. OCR sobre o desenho também é o caminho errado quando o arquivo é vetorial: a geometria exata já está no DXF.
Este repositório implementa a alternativa: o modelo (opcional) só interpreta a intenção; código
determinístico lê e calcula a geometria; um validador decide; um humano aprova o plano exato; o
adaptador CAD grava uma revisão nova e o resultado é reaberto e conferido. Tudo com evidência
(dxf:handle:<H>), hashes e trilha de auditoria.
Nome: Engineering Document & CAD Intelligence (EDCI) é o nome do escopo; o pacote Python é engcad.
🧭 Origem do Projeto
O projeto nasceu de uma pesquisa sobre como ligar agentes de IA a sistemas CAD (docs/research/integracao-agentes-cad.md): APIs do AutoCAD (.NET, AutoLISP/COM, Design Automation), Creo (VB API/J-Link/CREOSON), FreeCAD, CAD-como-código (ezdxf, CadQuery, build123d) e cerca de vinte servidores MCP comunitários conferidos no GitHub.
Conclusões que definiram o projeto:
O padrão que funciona é plano tipado + execução determinística + verificação, não "o LLM desenha por coordenadas".
CAD-como-código / arquivo neutro é o caminho mais robusto para começar: headless, versionável, testável e sem licença.
Vários servidores MCP de CAD expõem
execute_lisp/execute_python— na prática, um shell. As anotações MCP são dicas, não controle: a segurança tem de morar no servidor.Texto de desenho (carimbo, notas) é dado não confiável e pode conter prompt injection.
Integração com CAD comercial só se declara pronta depois de testada na instalação real.
Plano com gates de evidência: F0 base → F1 IR → F3 plano → F4 execução segura (MVP estrito, concluído) → F2 conhecimento → F5 similaridade → F8 adaptadores comerciais (ROADMAP.md).
🎯 Objetivo
Ler DXF sem perder nada: entidades suportadas viram IR tipado; as demais ficam registradas.
Nunca inventar: unidade desconhecida, campo ausente ou pedido ambíguo resultam em
None,UNITS_UNKNOWNouNEEDS_CLARIFICATION.Converter pedido → operações de uma allowlist fechada, validadas por geometria determinística.
Exigir aprovação humana vinculada ao hash do plano e ao SHA da fonte.
Gravar sempre em arquivo novo e provar por releitura que só mudou o que foi aprovado.
Expor tudo por CLI, API e MCP sem dar ao agente ferramentas de aprovação ou execução de código.
🔬 Linha de Pesquisa / Desenvolvimento
Representação intermediária de desenho técnico com proveniência por entidade.
Planejamento de alterações CAD por LLM com saída estruturada e abstenção.
Validação geométrica 2D (ponto-em-polígono, folga ao contorno, colisão de furos).
Segurança de agentes com ferramentas (MCP fechado, prompt injection em artefatos, aprovação humana).
Verificação pós-escrita por oráculo independente (readback + invariantes).
🏗️ Arquitetura
DXF ─► sniff de formato ─► parser ezdxf ─► Engineering IR v1 ─────────────┐
PDF/imagem ─► ponte ocr_core (opcional) ─► evidências de carimbo │
▼
pedido ─► planner ├─ determinístico (regex pt/en) ActionPlan (allowlist)
└─ Claude (opcional, desligado por padrão) ──► plan_hash · base_sha
│
validador determinístico + invariantes ◄──────────┤
simulação ─► diff de entidades ─► preview SVG │
▼
aprovação humana (HMAC local, CLI/API) ─► APPROVED
│
revalida a fonte (TOCTOU) ─► adaptador CAD ─► arquivo staging
│
readback independente ─► 9 checks ─► rename atômico
▼
manifest.json · report.md · audit.jsonl · nova revisão no workspaceMódulo | Função | Teste |
| DXF → IR, unidades, carimbo, contorno/furos por regra |
|
| contrato Engineering IR v1 (Pydantic + JSON Schema) |
|
| pedido → operações ou perguntas |
|
| ActionPlan, allowlist, |
|
| regras geométricas, invariantes, simulação |
|
| aprovação HMAC vinculada a plano + base |
|
| protocolo, ezdxf, mock, stubs comerciais |
|
| readback e checks |
|
| workspace, estados, auditoria, execução |
|
| interfaces |
|
| integrações opcionais |
|
Estados do plano: PROPOSED → APPROVED → EXECUTING → COMPLETED, com NEEDS_CLARIFICATION,
REJECTED e FAILED terminais. Transições fora da tabela são recusadas (INVALID_STATE).
⚙️ Funcionamento
Ingestão — o arquivo é identificado pelo conteúdo, copiado como somente leitura para
sources/<rev>/e convertido em IR (rev-<sha16>).Plano — o pedido vira operações tipadas; faltando diâmetro, posição, layer ou alvo, o plano fica
NEEDS_CLARIFICATION.Validação — contorno com folga de 0,1 mm, colisão com furos existentes e novos, layer existente, handle existente, contorno protegido; os invariantes são calculados aqui, não pelo modelo.
Preview — simulação em memória, diff por handle e SVG (verde = novo, vermelho = removido, laranja = movido).
Aprovação — humano aprova o plano exato; o registro assina
plan_id|plan_hash|base_sha|aprovador|data.Execução — confere aprovação e SHA, re-lê a fonte, revalida, grava em staging pelo adaptador, reabre o arquivo e checa os invariantes; só então renomeia para o nome final.
Evidência — manifest, relatório Markdown e eventos de auditoria ligam fonte, plano, aprovação e saída.
"adicione furo central Ø10 em (60,40)"
→ add_circle{center_mm:(60,40), diameter_mm:10, layer:HOLES} (layer herdado dos furos existentes)
→ valid: dentro do contorno, sem colisão → invariantes: 11 preservadas, +1, CIRCLE 4→5
→ aprovado por humano → plate_revA__<plan>.dxf → readback 9/9 PASS → fonte com o mesmo SHA🧠 Verificação / Modelagem
Camada | O que prova | Resultado |
Golden da peça A | parser lê exatamente a geometria especificada (valores escritos à mão, independentes do parser) | 4 furos Ø10, cota 120 mm, carimbo DEMO-001/SUP-001/A |
Referência rev B | a saída gerada é geometricamente igual à peça B construída independentemente | só o texto |
Readback | o arquivo gravado contém só a alteração aprovada | 9/9 checks na demo |
Oráculos negativos | o verificador detecta saída de outro plano e entidade perdida | testes de contrato falham como esperado |
Segurança | aprovação adulterada, plano editado, base alterada, nomes maliciosos, injeção | recusados com código estável |
O oráculo de readback é independente do caminho de escrita: o arquivo final é reaberto pelo parser e comparado com a simulação por assinatura geométrica (tipo, layer, geometria arredondada a 1e-6 mm), não pelo retorno da função que gravou.
🧪 Desenvolvimento Experimental
pesquisa → ADR → fixtures + golden → parser → plano/validador → execução + readback → interfaces → demoAchados reais (não plantados)
Sintoma | O que se testou | Causa real | Correção |
| pedido com palavras de comando dentro das aspas | a palavra furo citada contava como objeto | trecho citado removido antes da detecção; regressão com |
DXF truncado estourava | fixture | exceção fora da lista capturada | toda falha de leitura vira |
furo em polegada lido como 14.999999999999998 mm | fixture em polegada | ponto flutuante de | normalização arredondada a 1e-9 mm |
teste da superfície MCP reprovava | busca da substring "approve" |
| teste checa prefixo de ferramenta de aprovação |
Detalhes em WORKLOG.md; decisões em ADR 0001.
🛠️ Tecnologias
Linguagens: Python 3.10+
CAD: ezdxf 1.4.5 (DXF R12–R2018)
Contratos: Pydantic 2 (schemas com extra=forbid), JSON Schema exportado
Interfaces: FastAPI, SDK mcp 2.x (MCPServer, stdio), argparse
IA (opcional): SDK anthropic — planner Claude com saída JSON validada
Integração: ocr_core do repositório OCR para PDF/imagem
Qualidade: pytest, GitHub Actions (Linux/Windows × 3.10/3.12)
📊 Resultados
Medida | Valor | Origem |
Testes | 113 passam, 1 pulado (opt-in com custo) de 114 |
|
Checks de readback na demo | 9/9 PASS | |
Fonte após execução | SHA idêntico ao aprovado | check |
Contagem de círculos | 4 → 5 | |
Pedidos ambíguos testados | 9/9 viram |
|
Operações maliciosas no schema | 7/7 rejeitadas |
|
Limites: são fixtures sintéticas de uma peça simples; não há benchmark de desenhos reais nem medida de desempenho. Não foi medida taxa de acerto de LLM (EX-04 da pesquisa está planejado).
🖼️ Evidências
Relatório da demo — pedido, plano, hashes, aprovação e os 9 checks.
Manifest da demo — mesmo conteúdo em JSON.
JSON Schemas —
engineering_ir.schema.jsonecad_action_plan.schema.json.
🚀 Aplicações
Alterações repetitivas em desenhos 2D de chapas, suportes e gabinetes com trilha de aprovação.
Camada de ferramentas segura para assistentes (Claude Desktop/Code via MCP) em ambiente de engenharia.
Base para comparar revisões (
engcad compare) e auditar o que mudou entre arquivos.Ponto de partida para adaptadores de CAD comercial com contrato e testes já definidos.
🔭 Visão de Longo Prazo
DXF 2D verificado (hoje)
↓
code-CAD 3D (build123d/CadQuery → STEP + vistas DXF, checagem de volume/sólido)
↓
conhecimento: busca híbrida com citação por source_anchor e filtro de revisão
↓
similaridade explicável entre projetos (geometria + texto + regras, com benchmark rotulado)
↓
adaptadores licenciados (AutoCAD .NET / APS, Creo, FreeCAD) passando nos mesmos contratos
↓
identidade real, RBAC e observabilidade de custo/latência por pedido🗺️ Roadmap
F0 — Base ✅ Concluída — pacote, CI, ADRs, fixtures e golden.
F1 — Parse + IR ✅ Concluída —
test_parser.py(14 testes).F3 — Plano ✅ Concluída — allowlist, validador e intenção (35 testes).
F4 — Execução segura ✅ Concluída — aprovação, copy-on-write, readback (27 + 14 testes).
F6 — Agente 🟡 Parcial — MCP fechado testado; Claude real não executado.
F7 — Interface 🟡 Parcial — API e CLI; sem dashboard web.
F2 — Conhecimento ⏳ Planejada — busca híbrida com citação.
F5 — Similaridade ⏳ Planejada — depende de pares rotulados.
F8 — CAD comercial ⛔ Bloqueada — depende de licença/instalação.
Detalhe em ROADMAP.md.
🕓 Histórico e Mudanças
Versão | Data | O que mudou |
v0.1.0 | 2026-10-20 | MVP: IR v1, parser DXF, plano tipado, validador, aprovação, ezdxf copy-on-write, readback, API, MCP, CLI, ponte OCR |
🔮 Próximos Passos
Concluídos nesta versão ✅ — fluxo DXF ponta a ponta com aprovação e readback; MCP sem ferramentas de aprovação/execução de código; ponte com o motor documental do OCR.
Dependem de terceiros — instalação/licença de AutoCAD ou Creo para os adaptadores reais; chave de API e autorização de dados para medir o planner Claude real.
Próximos técnicos (v0.2) — adaptador build123d para 3D; índice híbrido com citação por
source_anchor; benchmark de 100 pedidos (EX-04) comparando determinístico × Claude × modelo local;
dashboard web de revisão/aprovação.
▶️ Como rodar localmente
Pré-requisitos: Python 3.10+.
pip install "ezdxf==1.4.5" "pydantic>=2.7,<3" fastapi httpx "mcp>=2.0" pytest # ou: pip install -e ".[api,mcp,dev]"
python -m pytest -q # 113 passam, 1 opt-in pulado
# demo ponta a ponta (gera a placa, planeja, mostra preview e para pedindo aprovação)
PYTHONPATH=src python -m engcad demo -w demo-ws
PYTHONPATH=src python -m engcad demo -w demo-ws --approve # aprovação DEMO rotulada
# fluxo manual
PYTHONPATH=src python -m engcad fixtures --out fixtures
PYTHONPATH=src python -m engcad ingest fixtures/plate_revA.dxf -w ws
PYTHONPATH=src python -m engcad plan <revision_id> "adicione furo central Ø10 em (60,40)" -w ws
PYTHONPATH=src python -m engcad preview <plan_id> -w ws
PYTHONPATH=src python -m engcad approve <plan_id> --approver "Seu Nome" --reason "revisado" -w ws
PYTHONPATH=src python -m engcad apply <plan_id> -w ws
PYTHONPATH=src python -m engcad compare fixtures/plate_revA.dxf ws/outputs/<plan_id>/plate_revA__*.dxf
# interfaces
PYTHONPATH=src python -m engcad serve-api -w ws # http://127.0.0.1:8077/docs
PYTHONPATH=src python -m engcad serve-mcp -w ws # MCP stdioAmbiente | Como | Verificado nesta revisão |
Windows 11 (PowerShell) |
| ✅ testes + demo |
Linux | comandos acima | via CI (matriz configurada; primeira execução após publicação) |
Claude Desktop/Code (MCP) |
| ⚠️ servidor testado in-process; cliente real não verificado |
Planner Claude |
| ⚠️ não executado (opt-in com custo) |
Ponte OCR |
| ✅ teste de integração com |
📁 Estrutura do repositório
Engineering-CAD-AI/
├── src/engcad/
│ ├── ir.py, parser_dxf.py, units.py, geometry.py # leitura e contrato do IR
│ ├── plan.py, intent.py, llm.py, validate.py # planejamento e validação
│ ├── diff.py, render.py, verify.py, report.py # diff, preview, readback, relatório
│ ├── approval.py, service.py # aprovação, estados, workspace, auditoria
│ ├── adapters/ (base, ezdxf, mock, commercial) # protocolo por capacidade
│ ├── api.py, mcp_server.py, cli.py, ocr_bridge.py # interfaces e integrações
│ └── fixtures.py # peças sintéticas
├── tests/ (7 arquivos, 114 testes) + fixtures/golden/
├── schemas/ # JSON Schema do IR e do plano
├── docs/ adr/ · research/ · evidence/ · TEST_MATRIX.md
├── .github/workflows/ci.yml
└── CHANGELOG.md · ROADMAP.md · WORKLOG.md · LICENSENão versionado: workspaces (*-ws/, engcad-workspace/), que contêm fontes, aprovações e a chave
HMAC local do aprovador.
📚 Documentação
Documento | Conteúdo |
camadas, garantias impostas pelo código, consequências | |
ordem de adaptadores CAD e por quê | |
caminhos de integração, repositórios conferidos, técnicas, segurança | |
o que cada arquivo de teste prova e o que não é testado | |
preview, relatório e manifest da demo | |
histórico, fases, diário |
⚠️ Limitações
Somente DXF 2D. DWG, STEP e feature tree nativa exigem adaptadores licenciados (não executados).
Geometria interpretada por regra simples: contorno = maior LWPOLYLINE fechada sem bulge; furo = CIRCLE dentro do contorno. Polilinhas com arcos, blocos (INSERT não é explodido) e espaço de papel não entram na validação.
Sem GD&T e sem tolerâncias: o IR registra tolerância como desconhecida; nada é inferido.
Aprovação demo (HMAC com chave local) não é autenticação corporativa; não há RBAC nem multiusuário.
Planner Claude só testado com cliente falso; qualidade real não medida.
PDF/imagem: a ponte só extrai campos de carimbo literais; cotas a partir de raster não existem.
Sem validação de engenharia: saídas são
R&D / NOT FOR MANUFACTURE.Persistência em arquivos JSON no workspace (sem banco, sem fila); adequado a uso local.
Status
🟡 MVP técnico funcional — v0.1.0. Fluxo DXF ponta a ponta implementado e testado (113 testes passam, readback 9/9 na demo); adaptadores de CAD comercial e planner Claude real ainda não executados.
Contexto / Observações
Peça de portfólio e laboratório de P&D, sem afiliação com fornecedores de CAD. Todas as peças são sintéticas e geradas por código; nenhum desenho industrial real foi usado. Contagens de estrelas na pesquisa são instantâneos de 2026-10-20. Nenhuma métrica de produção é alegada.
🔗 Projetos Relacionados
Projeto | Relação |
motor documental | |
runtime multiagente candidato a orquestrar este fluxo | |
gateway de segurança para LLMs (mesma preocupação com injeção) | |
laboratório de automação industrial sem hardware | |
mesmo padrão: regras determinísticas, aprovação humana, escrita fail-closed | |
mesma disciplina: regras versionadas, trilha de auditoria e IA apenas consultiva, nunca decisória |
🤖 Autor
Yuri Fernando Dubbern
Engenharia Elétrica · Ciência da Computação · Inteligência Artificial · Sistemas Embarcados · Projeto de Hardware · Pesquisa e Desenvolvimento
LinkedIn · GitHub · Lattes · Linktree
Licença
MIT — ver LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to create, inspect, render, and export 2D engineering drawings through DXF files, including entities, dimensions, hatches, splines, blocks, layers, PNG previews, and vector PDFs without needing a CAD GUI.11MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to automate drafting through a typed tool contract that drives either live AutoCAD over COM on Windows or a headless ezdxf engine anywhere, covering layers, dimensions, GD&T and tolerance validation, P&ID symbol drafting and reading, mechanical parts and sheets, architectural floor plans, and takeoffs. It also supports token-efficient discovery and tool packs so clients only load the capabilities they need.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to draft, read, validate, diff, and take off CAD drawings through a single typed contract served by either a live COM session or a headless ezdxf engine. Ships 247 tools covering P&ID, mechanical, and architectural drafting, with ISO GD&T and dimension-tolerance validation plus spec-to-drawing and takeoff-to-workbook workflows.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to drive CAD automation through a large typed tool surface, either against a live desktop CAD seat over COM on Windows or a headless ezdxf engine on any platform. It covers drafting and symbol libraries, ISO/ANSI dimension, GD&T and tolerance validation, mechanical, architectural and P&ID sheets, drawing understanding and critique, and takeoff workbooks.-