O agente entende o problema e escolhe o método normativo. A conta sai do Python — validada, com referência à norma e memorial pronto. Nunca do modelo de linguagem.
# pergunte em português; a engine responde com cálculo + validação > Dimensione uma viga 25×50 C30, vão 5 m, g=10 e q=10 kN/m Md = 101,17 kN·m x/d = 0,141 (dúctil) As = 5,40 cm² → 3 Ø 16 mm validação: unidades ✓ física ✓ norma ✓ equilíbrio ✓ APROVADO # + memorial em Markdown e aviso de responsabilidade (ART)
Uma plataforma onde engenheiros conversam com agentes de IA para resolver cálculos de engenharia civil. A divisão de trabalho é a decisão central do projeto — e o que a torna confiável.
Interpreta o pedido em linguagem natural, identifica o domínio, escolhe o método normativo e explica cada etapa. Não soma, não multiplica, não interpola.
Toda aritmética é determinística, com unidades verificadas via pint e modelos Pydantic. O número sai sempre de uma ferramenta — nunca do LLM.
Unidades, física, norma e equilíbrio checados antes de apresentar. Cada resultado vem com memorial e o aviso de responsabilidade técnica.
Por que delegar? Um LLM calculando "de cabeça" cai abaixo de 10% de confiabilidade em problemas de engenharia estrutural; delegar a uma ferramenta determinística leva a confiabilidade a mais de 99%. É a base do design.
Um orchestrator roteia para o especialista (concreto, fundações, aço…). Interpreta e documenta; nunca calcula.
Ferramentas finas expõem cada cálculo ao agente. Sem ferramenta para o pedido → abstenção (não inventa).
Núcleos por domínio com fórmulas normativas, unidades pint e resultados Pydantic.
4 verificações independentes, depois o memorial em Markdown com o disclaimer de responsabilidade.
Tudo local, sem build. Gerenciado por uv; o servidor de cálculo conversa com o Claude Code via MCP.
Instala dependências (numpy, scipy, sympy, pint, pydantic, mcp…).
# instalar deps (com dev) uv sync --extra dev
Expõe ~40 ferramentas determinísticas ao agente.
# iniciar (stdio) uv run python mcp/calc-server/server.py
A interface em linguagem natural com os agentes.
# abrir no diretório do projeto claude
Comandos reais do projeto — copiáveis. Os três primeiros passos validam que a engine está sã antes de você pedir qualquer coisa.
Cria o ambiente e baixa as bibliotecas de cálculo e de desenvolvimento.
uv sync --extra dev
Cada cálculo nasceu de um teste com valor conferido à mão e a cláusula NBR citada.
uv run pytest -q # 359 testes (334 unitários + 25 E2E)
Roda casos representativos sem precisar subir o servidor.
uv run python mcp/calc-server/server.py --selftest # → SELFTEST OK
Com o MCP conectado, fale em português; o agente escolhe o método e devolve o memorial.
# exemplo de pedido "Dimensione uma viga 25×50 cm de C30, vão 5 m, g=10 e q=10 kN/m."
Todo cálculo é uma função solve_* que devolve o bundle padrão (resultado, validação, memorial, aviso, aprovado).
from lib.service import solve_rectangular_beam b = solve_rectangular_beam(b_cm=25, h_cm=50, fck_mpa=30, fyk_mpa=500, vao_m=5.0, g_knm=10, q_knm=10) b["aprovado"] # True b["resultado"]["as_adopted_cm2"] # 5.40 print(b["memorial_markdown"]) # memorial completo + aviso ART
Lista completa (com cada solve_*, ferramenta MCP e norma) no catálogo de cálculos. A fonte que o agente consulta em tempo de execução é a ferramenta listar_capacidades.
Viga (flexão), pilar com 2ª ordem, sapata isolada, laje em 1 e 2 direções. NBR 6118 · 6122
Capacidade de carga (Vesic), recalque (elástico/adensamento), empuxo (Rankine/Coulomb), estaca por SPT. Aoki-Velloso × Décourt
Conduto forçado (Hazen-Williams/Darcy-Weisbach), canal aberto (Manning), perda de carga.
Barra comprimida, ligação parafusada, solda de filete. NBR 8800
Pavimento flexível (DNER/DNIT), balanço corte/aterro, talude (infinito e Fellenius). NBR 11682
Custo direto + BDI (base tipo SINAPI, amostra), memória por projeto e relatório consolidado.
Escopo honesto: é um copiloto para educação, pesquisa e verificação cruzada — não substitui TQS/Eberick/SAP2000 nem a responsabilidade técnica do engenheiro (ART). Protendido, madeira, alvenaria, dinâmica e métodos avançados ficam como abstenção explícita.
Plano completo em docs/06-fases-implementacao.md. Cada fase fechou com testes verdes, ruff limpo e selftest do MCP OK.