Skip to main content
Glama

Battenmark

Открытая, нейтральная к бэкенду CAD-инфраструктура для ИИ-агентов и программного обеспечения.

CI License schema MCP

Battenmark предоставляет типизированный, нейтральный к бэкенду интерфейс для создания, редактирования, проверки, валидации и экспорта эталонной CAD-геометрии на взаимозаменяемых CAD-бэкендах. Вызывающий код запрашивает create_hole, но никогда — PartDesign::Hole. Моделью не владеет ни один транспорт; её владельцем является один канонический сервис.

ChatGPT / Claude / Gemini / Grok / Codex / local models / IDE agents / custom apps
                                   │
                    MCP / HTTP / Python / CLI
                                   │
                                   ▼
                         Battenmark Core
                                   │
                    typed CAD operations / CAD IR
                                   │
                        Backend Registry
                                   │
             ┌─────────────────────┼──────────────────────┐
             ▼                     ▼                      ▼
          FreeCAD                JSCAD              future adapters
     authoritative B-rep        preview        build123d/CadQuery/etc.
  • FreeCAD / OpenCascade — эталонное ядро B-rep (headless JSON-lines воркер)

  • JSCAD — внутрипроцессный бэкенд предпросмотра/оболочки (не источник истины)

Быстрый старт

Требования: Node.js ≥ 20 и npm. FreeCAD необязателен для основного сервиса и требуется только для эталонного B-rep бэкенда.

npm install
npx tsc --noEmit   # type check
npm test           # fast kernel-free suites (parametric, selectors, registry)

Бэкенд FreeCAD

sh scripts/bootstrap-macos.sh      # macOS: discovers /Applications/FreeCAD.app
sh scripts/install-freecad.sh      # Linux: installs headless 1.0.2 AppImage (no FUSE)
npm run test:freecad               # proves the real worker end-to-end

Порядок обнаружения: $AGENTCAD_FREECAD_CMD → пакеты macOS FreeCAD.app → Homebrew → извлечённый Linux AppImage → PATH. См. docs/MACOS.md и docs/LINUX.md.

Транспорты

Транспорт

Точка входа

MCP stdio

npx agentcad-mcp

HTTP

npx agentcad serve --port 8787, затем /api/v1/... (Bearer-токен через AGENTCAD_API_TOKEN)

CLI

npx agentcad --help

Python

python/agentcad — см. примеры

Пример использования Python-клиента:

from agentcad import AgentCad

c = AgentCad(base_url="http://127.0.0.1:8787", token="secret-token")
pid = c.project_create("demo")["project_id"]
c.create_box(pid, 80, 50, 12)
print(c.rebuild(pid)["data"]["volume_mm3"])   # 48000

Related MCP server: freecad-tool-server

Эталонная smoke-модель

Канонический релизный smoke-тест — это объединение 80 × 50 × 12 мм = 48 000 мм³, проверяемый через JSCAD, FreeCAD, HTTP, CLI, MCP и Python-клиент (test:transport-parity). Не меняйте этот фикстур без веской причины.

Возможности

  • Типизированные операции, нейтральные к бэкенду, с явной схемой (agentcad_schema_version: 2)

  • Эталонный B-rep FreeCAD/OpenCascade; предпросмотр JSCAD

  • Скалярные параметрические выражения и вычисление зависимостей

  • Семантические селекторы граней/рёбер (top_premeter, …), которые переинициализируются после правок

  • Постоянные геометрические ссылки (gref) с явными ошибками «потеряно/неоднозначно»

  • Сквозные / закованные / с цековкой / с зенковкой отверстия

  • Скругления и фаски · линейные и прямоугольные массивы

  • Обмен STEP / FCStd / STL · предпросмотр PNG в четырёх проекциях

  • Динамический реестр бэкендов с определением возможностей для каждого бэкенда

  • Один последовательный воркер FreeCAD с восстановлением через kill/restart

Статус платформ

Платформа

Статус

macOS Apple Silicon

Tier 1 — подтверждено на реальном оборудовании (arm64, macOS 26.6.2, FreeCAD 1.1.3)

Linux x86_64

headless / валидировано для разработки (FreeCAD 1.0.2 AppImage)

macOS Intel

не проверено

Windows

не поддерживается / не проверено

Известные ограничения

Это альфа-ПО до версии 1.0; API могут меняться.

  • Сборки, сопряжения и ограничения сборки отсутствуют

  • Нет круговых масси [no circular patterns]

  • Резьбы — это косметические метаданные, а не спиральные тела

  • Импортированный STEP — это только импорт геометрии, а не автоматическая её реконструкция

  • Нативные FCStd-документы сохраняют исторические формы PartDesign; Battenmark измеряет итоговый Tip Body (суммирование исторических тел даёт двойной счёт)

  • Один последовательный воркер FreeCAD (плохие пулы)

  • Предпросмотр рендерится в JSCAD, а не в режиме скрытых линий OCC

  • Полное топологическое именование не решено; постоянные gref смягчают эту проблему

Полный список: docs/LIMITATIONS.md.

Документация

Тема

Документация

Архитектура и основы

docs/ARCHITECTURE.md · docs/FOUNDATION.md

Контракт операций и схема

docs/CONTRACT.md · docs/VERSIONING.md

Бэкенды и ядра

docs/BACKENDS.md · docs/FREECAD.md · docs/JSCAD.md · docs/KERNEL.md

Транспорты

docs/MCP.md · docs/HTTP.md · docs/CLI.md · docs/PYTHON.md · docs/CLIENTS.md

Сервис и хранение данных

docs/SERVICE.md · docs/AUTH.md

Импорт / экспорт и предпросмотр

docs/IMPORT.md · docs/PREVIEW.md

Платформы и валидация

docs/MACOS.md · docs/LINUX.md · docs/RELEASE.md

Идентификаторы совместимости

Публичный бренд — Batternmark. Исторические инженерные идентификаторы сохранены намеренно и представляют собой интерфейс совместимости, а не второй бренд: AgentCadService, agentcad_schema_version, переменные окружения AGENTCAD_*, бинарные файлы agentcad / agentcad-mcp. Внутренняя версия сервиса 0.5.6 намеренно отличается от тега релиза; см. docs/VERSIONING.md.

Участие в разработке и безопасность

См. CONTRIBUTING.md и SECURITY.md. Кодекс поведения: CODE_OF_CONDUCT.md.

Лицензия

Apache-2.0 для этого репозитория. FreeCAD/OpenCascade запускаются как отдельный процесс под лицензией LGPL (скрипты воркера выполняются внутри FreeCADCmd). См. LICENSE, NOTICE и THIRD_PARTY_NOTICES.md.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI to directly call FreeCAD for 3D modeling via the MCP protocol, providing 39 modeling tools including primitive creation, boolean operations, transformations, and export.
    3
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to programmatically build, analyze, and export 3D CAD geometry using FreeCAD through REST or MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables agent-driven CAD design through deterministic source files (.kcad.ts), including model evaluation, validation, and export to STEP/STL via MCP tools for review and introspection.
    121 npm
    29
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables engineering agents to perform parametric CAD operations through a controlled MCP gateway built on FreeCAD, with transactions, diagnostics, and reproducible verification.
    2
    GNU Lesser General Public v2.1 only