furniture-cad-mcp
Provides rendering and visualization through a Blender worker: imports CAD meshes, converts millimeter units to meters, applies Principled BSDF materials, and produces PNG previews and editable .blend files.
Provides CAD modeling and export through a FreeCAD worker: creates parametric Part::Box geometry, FCStd and STEP files, meshes, and dimension measurements for furniture designs.
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., "@furniture-cad-mcpCreate an 800×1800×400 mm oak cabinet with 18 mm panels and 3 shelves; validate and show BOM"
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.
furniture-cad-mcp
Open-source MCP-сервер для параметрического моделирования мебели: FastMCP → FreeCAD → Blender. Разработка ведётся в Codex. Ранняя alpha 0.1: один тип изделия — открытый корпусный шкаф.
Цель — получать модель с заданными физическими размерами и правдоподобным материалом, а не только красивую картинку. Точность CAD и визуальное качество проверяются отдельно. Результаты пока не являются рабочей документацией для производства.
Что реализовано
Семь MCP-инструментов, локальный транспорт stdio.
Размеры в мм, валидация диапазонов, равномерные полки, накладная задняя стенка.
Неизменяемые версии проекта, аналитические габариты, проверки пересечений и BOM.
Worker FreeCAD: отдельные параметрические
Part::Box, FCStd, STEP, сетка и измерения.Worker Blender: сетка из CAD, перевод мм → м, Principled BSDF, PNG и редактируемый blend.
Три процедурных приближения материалов: дуб, белый меламин, чёрный металл.
Тесты домена, MCP и опциональные тесты настоящих движков; GitHub Actions.
Ограничения: нет дверей, крепежа, отверстий, пазов, кромления, раскроя, чертежей и расчёта нагрузок. Обновление параметров пересоздаёт FCStd, а не меняет существующий документ. Процедурный дуб — начальное приближение, реализм пользователем не подтверждён. Не оцениваем неизвестные размеры по фотографии как точные.
Related MCP server: cadloop-openscad
Быстрый старт (Python 3.10+)
uv sync --extra dev --frozen
uv run pytest
uv run furniture-cad-mcpПоследняя команда запускает stdio-сервер: он ожидает сообщения MCP-клиента. FreeCAD и Blender не нужны для создания спецификаций и BOM; нужны для экспорта и рендера. Полная настройка: docs/SETUP.md.
Пример конфигурации клиента, поддерживающего mcpServers (заменить абсолютные пути):
{
"mcpServers": {
"furniture-cad": {
"command": "/ABS/PATH/furniture-cad-mcp/.venv/bin/furniture-cad-mcp",
"env": {
"FURNITURE_ARTIFACT_ROOT": "/ABS/PATH/furniture-artifacts",
"FURNITURE_FREECAD_PYTHON": "/ABS/PATH/python-with-freecad",
"FURNITURE_BLENDER": "/ABS/PATH/blender"
}
}
}
}Для Codex: открыть папку репозитория как проект, прочитать AGENTS.md, подключить
исполняемый файл .venv/bin/furniture-cad-mcp как локальный stdio MCP-сервер
через настройки клиента. Эта публикация сама не меняет настройки Codex.
Пример запроса
Создай открытый шкаф 800 × 1800 × 400 мм, панели 18 мм, задняя стенка 6 мм, три полки, материал oak. Покажи спецификацию и проверь размеры. Затем экспортируй CAD и сделай превью из полученного cad_job_id.
Вызов create_cabinet принимает {"spec": {"width_mm": 800, "height_mm": 1800, "depth_mm": 400, "panel_mm": 18, "back_mm": 6, "shelves": 3, "material": "oak"}}.
Ожидается 8 деталей, габариты [800, 400, 1800] в порядке X,Y,Z, без объёмных
пересечений. Сохрани design_id; export_cad возвращает job_id для render_preview.
Документация
PRD — аудитория, сценарии, критерии приёмки.
Архитектура — единицы, границы процессов и данные.
MVP и план — реализованное и оставшиеся этапы.
Инструменты MCP — контракты и ошибки.
Проверки — подтверждённые результаты и пробелы.
Основа и лицензия
PrefectHQ/FastMCP используется как зависимость, не как скопированный исходный код; документация инструментов. Геометрия — FreeCAD, визуализация — Blender Python API. Наш код: MIT. FreeCAD, Blender и FastMCP сохраняют собственные лицензии. Внешние текстуры и чужие модели в репозиторий не включены.
Available Tools
7 toolsbackend_statusA
Read backend configuration; not a health check of CAD execution.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does at least establish that this is a read operation, which is the key safety signal. Beyond that it discloses nothing about cost, permissions, or freshness of the configuration data, so the disclosure is minimal rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the positive statement first and the disambiguation second; nothing is wasted. The trailing clause about CAD execution is slightly cryptic in isolation but earns its place as the main misuse guard.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is trivial (no inputs, output schema present, so return values need not be explained), which lowers the bar considerably. However, "backend configuration" remains vague about what configuration domain is returned, leaving the agent unable to judge relevance before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. Nothing in the description contradicts or obscures the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Read backend configuration") and explicitly negates the most likely misreading of the name backend_status, namely that it is a health check. It does not name or contrast with any sibling tool, but the sibling set (cabinet/design/material/CAD tools) contains no close analogue, so differentiation is less critical here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is one useful exclusion ("not a health check of CAD execution"), which prevents a plausible misuse, but no positive statement of when an agent should call this rather than another tool. Usage is only implied by the negation rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cabinetC
Create a cabinet revision. All dimensions in mm; X width, Y depth, Z height.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond units: not whether the call persists state, what a "revision" implies about versioning or duplication, whether permissions are required, or whether defaults apply to omitted spec fields. For a mutation tool with destructiveHint unset and no readOnlyHint, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by the unit convention, with no filler. The brevity is appropriate, though the ambiguous term "revision" consumes part of a very small budget that would have been better spent on the spec fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the tool is a nested-object creation call with 0% schema description coverage and zero annotations. Given that complexity, the definition should say what a revision is relative to an existing design and roughly what panel_mm, back_mm, and shelves control; none of that is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across a nested spec with seven sub-properties (back_mm, shelves, depth_mm, material, panel_mm, width_mm, height_mm), so the description needs to compensate. It does add real meaning by stating that all dimensions are in mm and mapping axes as X=width, Y=depth, Z=height, which the schema does not say. However, back_mm, panel_mm, shelves, and material remain undefined beyond their names and ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Create a cabinet revision." That distinguishes it from update_cabinet at a basic level (create vs. update), but the word "revision" is never explained, so it is unclear whether this creates a new cabinet, a version of an existing one, or both. An agent can identify the operation but not the precise object being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of update_cabinet, no prerequisites, and no indication of whether an existing cabinet must exist first or whether the revision needs to reference a parent design. The only usage-adjacent content is the unit convention, which is not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_cadC
Run configured FreeCAD worker; return FCStd, STEP, CAD mesh and measured report.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden, and it only reveals that a worker process is launched and which file types come back. It says nothing about execution time, whether the job is synchronous or queued, side effects or artifacts written to storage, failure modes, or permission requirements for a heavyweight export operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact sentence with the action front-loaded and the outputs listed after, with no filler. The terseness borders on underspecification, but every clause conveys information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the enumeration of return artifacts is supportive rather than essential, and the missing pieces are around inputs and preconditions. For a tool that launches a CAD worker and takes a design identifier, an agent still lacks the information needed to know when the call is safe and what design_id should reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter design_id is never mentioned in the description, so nothing explains where that identifier comes from (e.g., from create_cabinet or list results) or what it identifies. The description adds no meaning beyond the bare string type in the schema, which is a real gap at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action ('Run configured FreeCAD worker') and enumerates the concrete artifacts produced (FCStd, STEP, CAD mesh, measured report), which lets an agent tell it apart from render_preview or inspect_design. It is clear but leans on jargon ('configured worker') rather than stating plainly that it exports CAD geometry for a design.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over render_preview or inspect_design, no mention of prerequisites (what 'configured' means, whether the backend must be ready), and no note on whether it can be re-run or called repeatedly. The agent must infer the selection criteria entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_designC
Get analytic dimensions, collision report and bill of materials.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It implies a read operation but says nothing about permissions, whether analysis is computed on demand or cached, failure modes for invalid design_ids, or whether results are paginated — an output schema exists, so return shape is covered, but the behavioral profile is not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loading the returned artifacts. It is efficient, though it spends its only words enumerating outputs rather than clarifying the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema, the definition is minimally viable: the agent knows it needs a design_id and roughly what comes back. The missing pieces are the undocumented parameter and absent read-only/behavioral confirmation, which matter more here because there are no annotations to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter design_id is a bare string with no description in the schema. The description does not mention design_id at all, so the agent gets no help on what identifier format is expected or that the design must already exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resources returned (analytic dimensions, collision report, bill of materials) but the verb is a generic 'Get' and the target object is never stated — only the parameter name implies it inspects a design. Nothing distinguishes it from siblings like render_preview or export_cad, which also presumably operate on a design.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus the other design-related siblings, no prerequisites (e.g. must the design be fully modeled or synced first), and no indication of cost or latency. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsA
Read available procedural PBR approximations, not scanned materials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must imply behavior — 'Read' does signal a non-mutating operation, and the procedural-vs-scanned distinction sets expectations about content. It does not state whether the result is empty when nothing is available, whether it's cached/static, or any permission requirement, leaving gaps for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the key qualifier (procedural, not scanned) is placed where it will be read. It is arguably too compressed — one extra clause on what 'available' means would cost little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema, the description only needs to establish intent and content scope, which it does. Return structure is covered by the output schema, so no explanation of return values is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description adds no parameter-related claims that could conflict with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a read verb against a specific resource ('Read available ... materials') and narrows scope with 'procedural PBR approximations, not scanned materials.' The only weakness is that 'Read' doesn't explicitly say it returns a list/catalog of available materials rather than material data itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'not scanned materials' functions as an implicit when-not, steering an agent away from expecting scanned texture assets. There is no positive guidance on when to call this versus other discovery steps, and the sibling tools are unrelated, so no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_previewC
Render an existing FreeCAD export with Blender; outputs PNG and editable blend.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| cad_job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full behavioral burden. It discloses the two output artifacts, but says nothing about whether rendering is synchronous or long-running, whether it fails on a stale/invalid cad_job_id, whether it overwrites prior renders, or what permissions/costs are involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the action front-loaded and the outputs appended; no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, an undocumented two-parameter schema, and a render step that is likely expensive or asynchronous, the definition is too thin. The output schema covers return shape, but prerequisites, failure modes, and parameter meaning are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description needed to compensate and does not. Neither design_id nor cad_job_id is explained, and the link between "existing FreeCAD export" and cad_job_id is only vaguely implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Render an existing FreeCAD export with Blender") and names the artifacts produced (PNG and editable blend). It is distinguishable from siblings like export_cad or inspect_design, though it never explicitly frames itself as the step that follows an export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance is given. The word "existing" faintly implies a prior export must exist, but the agent must infer the prerequisite instead of being told to run export_cad first or to choose this over inspect_design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cabinetB
Validate parameter changes and create a NEW design ID, preserving the old design.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | ||
| design_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the most non-obvious trait: edits do not mutate in place, a new design ID is minted and the prior design survives. It says nothing about permissions, whether validation failures abort the call, or how the new ID is surfaced, so coverage is partial rather than complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every clause adds information: validation, new ID creation, and preservation of the original.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the core non-destructive semantics are stated. However, the nested untyped `changes` object is the primary thing an agent must construct, and the definition leaves its contents entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and `changes` is a free-form object that accepts arbitrary properties, so the description needed to explain what keys belong there. It only gestures at this with 'parameter changes' and says nothing about whether `design_id` refers to the source design being versioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and outcome: it validates parameter changes and returns a NEW design ID while preserving the old one. That versioning semantics is more informative than the bare name 'update_cabinet' would suggest, but it never explicitly contrasts itself with the sibling create_cabinet, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no named alternative among create_cabinet, inspect_design, or export_cad. The phrase 'preserving the old design' implies this is the non-destructive edit path, but the agent must infer that routing rather than being told it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
backend_status - First observed
create_cabinet - First observed
export_cad - First observed
inspect_design - First observed
list_materials - First observed
render_preview - First observed
update_cabinet
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes: configuration read, cabinet creation/update, design inspection, material listing, CAD export, and preview rendering. The only mild overlap is between create_cabinet and update_cabinet, since both produce cabinet revisions/design IDs, though the descriptions make the distinction reasonably clear.
The set uses consistent snake_case naming throughout. Most names follow a verb_noun pattern (create_cabinet, update_cabinet, inspect_design, list_materials, export_cad, render_preview), with backend_status as a minor noun-only deviation.
Seven tools is well-scoped for a furniture CAD MCP server. Each tool covers a meaningful stage of the workflow: status/config, creation, revision, inspection, materials, CAD export, and rendering.
The surface covers the core CAD lifecycle: create/update a cabinet, inspect dimensions and BOM, list materials, export CAD, and render previews. Minor gaps exist around listing or deleting existing designs, but the main workflows are available.
Maintenance
Related MCP Connectors
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Headless CAD engine & MCP server for 2D/3D drafting, solids, DXF/SVG export, and automation.
An MCP server that audits the fairness of construction and renovation estimates in Japan. Provides fair-price ranges, overcharge detection, and verifiable unit-cost data based on JCCDB (65,520 items across 402 categories, CC BY 4.0, DOI-backed).
Create, inspect, validate, and save editable 3D building scenes with Pascal's MCP server.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- AlicenseBqualityCmaintenanceEnables parametric CAD modeling using OpenSCAD via MCP, supporting syntax checking, rendering, measuring, and previewing within a sandboxed workspace.921 PyPI1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and software to create, edit, inspect, validate, and export CAD geometry through MCP using backend-neutral typed operations, with FreeCAD/OpenCascade as the authoritative B-rep backend and JSCAD preview.1Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables AI clients to create, edit, and export CAD models and drawings in a locally installed FreeCAD via MCP.3-