pzfreo/build123d-mcp

pzfreo/build123d-mcp

от pzfreo
MCP сервер для 3D CAD на build123d, позволяющий AI-агентам создавать, инспектировать и итерировать геометрию. Закрывает цикл обратной связи: AI видит результат, а не пишет вслепую. Полезен инженера...

build123d-mcp

PyPI version Downloads Python CI License: Apache 2.0 MCP Registry build123d-mcp MCP server

Install in VS Code Add to Cursor

Give your AI CAD eyes.

build123d-mcp is not a standalone chatbot or CAD program. It is a CAD toolbox that an AI/LLM app can use through MCP.

With an LLM app such as Claude, Cursor, VS Code, Continue, Cline, or Codex CLI, build123d-mcp lets the assistant create build123d CAD models, render previews, measure geometry, fix mistakes, and export files such as STEP, STL, SVG, and DXF. Instead of writing a whole CAD script blindly, the assistant can build a part in small steps and check the result as it goes.

On the public CADGenBench leaderboard in June 2026, using build123d-mcp raised the same model's score from 0.360 to 0.457 and CAD validity from 88% to 100%.

Pick Your Setup

Most users should start with the local MCP server setup:

  • You use Claude, Cursor, VS Code, Continue, Cline, or Codex CLI on your own machine.
  • Your AI app starts build123d-mcp as a local subprocess.
  • You do not need to clone this repository.

Use GitHub Codespaces instead if you want a browser-only trial or a ready-made development workspace with Copilot Chat, Python, uv, and the CAD dependencies already installed.

Часто задаваемые вопросы

Инструменты были проиндексированы:
analyze_printabilityтолько чтение

Анализирует форму build123d на пригодность для FDM-печати с помощью augura (точный анализ BREP). Проверяет: нависания, замкнутость/водонепроницаемость, риск опрокидывания, необходимость brim/raft, минимальный вертикальный элемент (→ максимальная высота слоя) и тонкие стенки. Опционально проверяет соответствие столу относительно заданного объёма сборки. Возвращает текстовую сводку, за которой следует JSON-отчёт с деталями каждого обнаружения (тип, серьёзность, сообщение, область/расположение, если применимо). object_name: именованный объект из show() (по умолчанию: текущая форма). support_angle: грани, расположенные под углом менее этого значения в градусах от горизонтали, требуют поддержки (по умолчанию 45). nozzle: диаметр сопла в мм для проверки толщины стенок (по умолчанию 0.4). min_perimeters: стенки тоньше, чем min_perimeters × nozzle, отмечаются (по умолчанию 2). build_volume: опциональная рабочая область в виде 'X Y Z' в мм, например '256 256 256'; опустите, чтобы пропустить проверку соответствия столу. bed_tol: допуск по Z в мм для определения граней, контактирующих со столом (по умолчанию 0.001); увеличьте для деталей, чьи нижние грани находятся немного выше Z=0. min_feature: минимальный размер вертикального элемента в мм, который отмечать (по умолчанию 0.5).

Параметры
  • bed_tolnumber
  • build_volumestring
  • min_featurenumber
  • min_perimetersinteger
  • nozzlenumber
  • object_namestring
  • support_anglenumber
bank_candidateидемпотентный

Атомарно продвигает прошедший гейт STEP как безопасный выходной файл/контрольную точку. Записывает кандидата в приватный соседний файл, запускает эталонный гейт записи и повторного импорта STEP и заменяет имя файла только при полностью подтверждённом PASS; при FAIL или непроверенном гейте сетки кандидат удаляется, а существующий выходной файл сохраняется. Если задан snapshot_name, геометрический снимок сохраняется только после продвижения. Возвращает JSON, включающий banked, статус сохранения/снимка, отчёт об экспорте и следующий рекомендуемый вызов распознавания или восстановления. Используйте это вместо пакетного вызова export() и save_snapshot() для оценённых полов и финальных кандидатов.

Параметры
  • filenamestringобязательный
  • object_namestring
  • snapshot_namestring
compareтолько чтение

Единый инструмент сравнения. kind='shape' сравнивает две именованные фигуры из show(), a и b, по объёму/bbox/топологии и локальному отклонению поверхности; b обязателен. kind='fit' сообщает пространственное отношение между двумя именованными фигурами, a и b: зазор, статус разделение/касание/вложение/взаимопроникновение, вложение и объёмы перекрытия; b обязателен. kind='align' проверяет две именованные фигуры, a и b, вдоль одной оси. axis: X, Y или Z. mode: flush (смещение крайней точки bbox), center (смещение центроида) или clearance (зазор между ближайшими гранями); b обязателен. kind='snapshot' сравнивает снимок a с текущим состоянием сессии или b как второй снимок. format: 'text' или 'json'.

Параметры
  • astringобязательный
  • axisstring
  • bstring
  • formatstring
  • kindstring
  • modestring
crop_drawingтолько чтение
Параметры
  • autocontrastboolean
  • bbox_pxinteger[]обязательный
  • image_pathstringобязательный
  • output_pathstring
  • scalenumber
cross_sectionsтолько чтение

Вычисляет площади поперечных сечений на равномерно расположенных плоскостях вдоль оси. Возвращает список пар {позиция, площадь}. axis: X, Y или Z (по умолчанию Z). num_slices: количество плоскостей (по умолчанию 10, минимум 2). Полезно для обнаружения внутренних пустот, изменения толщины стенок или проверки соответствия профиля поперечного сечения фигуры эталону. object_name: именованный объект из show() (по умолчанию: текущая фигура).

Параметры
  • axisstring
  • num_slicesinteger
  • object_namestring
design_auditтолько чтение

Проверяет текущую программу сеанса как проект, а не просто форму: выявляет её именованные числовые параметры (Θ) и проверяет, насколько каждый из них устойчив к редактированию. Анализирует собранную программу (см. script()) на наличие присваиваний числовых значений верхнего уровня (например, plate_thickness = 5.0), затем перестраивает программу, изменяя каждый параметр на ±epsilon (по умолчанию ±10%) в строго ограниченном подпроцессе (текущий сеанс никогда не изменяется) и проверяет каждый результат через шлюз валидности. Возвращает JSON: {parameters, baseline, audit:[{name, value, perturbations:[{delta_pct (realized), new_value, discrete_step?, rebuilt, passes_gate, volume_delta_pct, reasons?}], brittle}], summary:{robust, brittle, inconclusive, ...}, note}. Параметр считается brittle, если небольшое изменение не приводит к перестройке или падает ниже шлюза валидности — режим отказа тонкой стенки / координационного рассуждения, когда валидная форма не является редактируемым проектом (Arko-T §6); параметр, переопределённый на верхнем уровне, считается inconclusive (возмущение перезаписывается) и не учитывается как устойчивый. Если именованные параметры не найдены, программа использует встроенные магические константы, и примечание рекомендует вынести их в блок параметров. Известное ограничение: только литеральные значения верхнего уровня отображаются как Θ — производный параметр (radius = diameter / 2) не отображается, хотя возмущение его вышестоящего литерала распространяется. Ограничено бюджетом реального времени и max_params (возвращает частичный отчёт, а не рискует тайм-аутом). epsilon: относительное возмущение, 0<epsilon<1. max_params: максимальное количество проверяемых параметров.

Параметры
  • epsilonnumber
  • max_paramsinteger
destroy_sessionидемпотентный

Закрывает CAD-сессию ЭТОГО клиента, отбрасывая его пространство имён, объекты и снимки, и освобождает рабочий подпроцесс. Следующий вызов инструмента прозрачно запускает новую сессию под тем же дескриптором. Используйте при полном отказе от модели; лучше используйте reset() для очистки геометрии с сохранением сессии. Действует только при использовании HTTP с настроенным дескриптором сессии.

Параметры

Без параметров.

edit_feature

Транзакционно изменяет размер одного гладкого цилиндрического сквозного отверстия, идентифицируемого текущим дескриптором @feature. Отклоняет отверстия с цековками, платиками, зенковками или несколькими составляющими гранями. Предсказывает изменение объёма кольцевой зоны, затем проверяет точное количество добавленного/удалённого материала, распознавание отверстия, все остальные отверстия и внешнюю оболочку перед регистрацией результата. protected_refs: JSON-список дескрипторов других отверстий; само целевое отверстие не может быть защищено. При сбое результат не регистрируется. По умолчанию заменяет указанный исходный объект; result_name позволяет сохранить его под новым именем.

Параметры
  • diameternumberобязательный
  • handlestringобязательный
  • protected_refsstring
  • result_namestring
execute

Выполняет код build123d Python в постоянной сессии. Ошибки содержат автоматические подсказки по исправлению — прочитайте их перед повторной попыткой. Используйте show(shape, name) для регистрации именованных объектов (по умолчанию name — 'shape'); show() сразу выводит объём и количество граней, подтверждая, что форма не пуста. После любой булевой операции (-, +, &) вызывайте measure(), чтобы убедиться в её успешности (проверьте topology.faces). named_face(shape, name) это встроенный помощник: named_face(box, 'top') возвращает грань с наибольшим Z, 'bottom'/'front'/'back'/'left'/'right' работают аналогично. find_edges(shape, geom='circle', radius=4.25, at_z=10.2, length=None, tol=0.05) фильтрует рёбра для выбора скругления/фаски и выводит, что совпало. Аналитические примитивы вызываются ВНУТРИ кода execute() и возвращают реальные Python-объекты, чтобы вы могли выполнять композицию (фильтрацию, арифметику) вместо копирования чисел из результата инструмента: measure(shape) -> dict (measure(part)['volume']), clearance(a, b) -> dict, cross_sections(shape) -> список {position,area}, find_holes(shape) -> записи отверстий с .location (кортеж (x,y,z)), .diameter, .depth, … ([h for h in find_holes(part) if h.location[0] < 5]); find_bosses(shape) / find_bored_bosses(shape) / find_countersinks(shape) / find_hole_patterns(shape) тоже возвращают записи распознавателя; align_check(a, b, axis='Z', mode='flush') -> dict (align_check(a,b)['delta'] — это float). Для автономных вызовов сравнения MCP используйте compare(a='axle', b='frame', kind='fit'), compare(a='a', b='b', kind='align'), compare(a='before', b='after', kind='shape') или compare(a='before', kind='snapshot'). shape по умолчанию равен текущей форме, а measure/clearance/cross_sections остаются ограниченными на больших формах. save_json(name, obj) записывает структурированные аналитические данные (инвентаризации граней, таблицы отверстий) в серверный временный файл и возвращает его путь — используйте это вместо вывода больших результатов; open()/os остаются заблокированными.

Параметры
  • codestringобязательный
execute_file

Выполняет канонический файл build123d .py в чистом пространстве имён и атомарно продвигает его результат. Предыдущая активная модель восстанавливается, если исходный код содержит синтаксическую ошибку или ошибку выполнения, превышает тайм-аут, не создаёт ни одной фигуры или не создаёт result_name. Назначает Shape переменной result или вызывает show(); при необходимости задаёт result_name, чтобы запросить или зарегистрировать конкретную переменную Shape или BuildPart. snapshot сохраняет контрольную точку продвинутой геометрии. Возвращает SHA-256-провенанс исходного кода и захваченный вывод. Исходный код должен быть в UTF-8, находиться в разрешённом корневом каталоге для чтения и быть не больше BUILD123D_MAX_SCRIPT_BYTES (по умолчанию 2 МиБ). Используйте это для существенных изменений генерации: отредактируйте model.py, execute_file(), затем проверьте/измерьте/отрендерите/экспортируйте через MCP.

Параметры
  • pathstringобязательный
  • result_namestring
  • snapshotstring
exportидемпотентный

Экспортирует модель. Формат: step, stl, 3mf, dxf, svg или список, разделённый запятыми, например 'step,stl' или 'dxf,svg'. Трёхмерные тела (твёрдые тела) экспортируются в step/stl/3mf; двумерные фигуры (эскизы и размерные чертежи, созданные через build123d.drafting) экспортируются в dxf/svg. 3mf — это минимальный экспорт сетки по основной спецификации (один объект, без цвета/материала), предназначенный для слайсеров (Bambu Studio, PrusaSlicer, Orca) — используйте STEP для взаимодействия с CAD-системами. Смешивание 2D и 3D форматов для одной фигуры приводит к ошибке с понятным сообщением. object_name: именованный объект из show(), '' для экспорта всех именованных фигур как сборной сборки (по умолчанию: текущая фигура). Экспорт STEP переносит имена сеансов как метки — экспорт одного объекта использует object_name, экспорт '' создаёт Compound с меткой 'assembly', где каждый дочерний элемент помечен именем из show(). Инструменты CAD (FreeCAD, Fusion) увидят структурированную сборку с именованными телами. Используйте dxf для передачи инженерных чертежей в другие CAD-инструменты; svg — для встраивания в документы/вики. Результат выводит объём/габаритный контейнер/количество граней экспортированной фигуры (или габаритный контейнер/количество рёбер для 2D) в качестве финальной проверки, что записан правильный, невырожденный объект.

Параметры
  • filenamestringобязательный
  • formatstring
  • object_namestring
find_bored_bossesтолько чтение

Находит потенциальные бобышки с отверстиями и сообщает доказательства выбора/редактирования цели: местоположение отверстия, ось внутрь детали, наружную ось, диаметр/глубину отверстия, плоские торцевые грани у отверстия, разделена ли крышка на несколько граней, и рекомендации по конструированию. Этот инструмент необходимо использовать перед удлинением любой бобышки, несущей отверстие, независимо от её внешнего профиля; он доступен только для чтения и диагностический, а не доказательство запрошенной цели.

Параметры
  • object_namestring
find_bossesтолько чтение

Распознаёт внешние цилиндрические боссы на объекте сессии (по умолчанию текущая форма), включая наружный диаметр точеной детали. Фильтрует по диаметру относительно контура детали только для локальных боссов. Возвращает JSON: {count, bosses: [{axis (основание в сторону свободного конца), location (точка свободного конца), diameter, height}].

Параметры
  • object_namestring
find_candidatesтолько чтение

Перечисляет распознанные экземпляры отверстий, бобышек, многогранных бобышек, пазов, фасок или галтелей. qualifiers - это JSON с необязательными axis (X/Y/Z), side (+X/-X/+Y/-Y/+Z/-Z, относительно центра габаритного контейнера детали) и value_field; совпадения выводятся для исходных осей и группируются по всем 24 собственным вращениям системы координат запроса (без зеркальных отсчётов, ни одно не предпочтительно). stated_value проверяется на соответствие измеренному значению признака с допуском 0,1 мм или 1%. Несовпавшее значение помечается; пустое или обрезанное распознавание никогда не считается доказательством отсутствия. Возвращает точные дескрипторы @feature для распознанных экземпляров.

Параметры
  • kindstringобязательный
  • object_namestring
  • qualifiersstring
  • stated_valuenumber | null
find_countersinksтолько чтение

Распознаёт зенковки (конические углубления под головку винта) на объекте сессии (по умолчанию текущая форма) — инструмент find_holes сообщает о них только как о простом отверстии. Зенковка - это внутренний конус, расширяющийся от просверленного канала к большему отверстию, соосный со сверлом; конусы острия сверла и наружные фаски исключаются. Возвращает JSON: {count, countersinks: [{location (центр отверстия), axis (внутрь детали), major_diameter (диаметр зенковки на поверхности), drill_diameter, included_angle (град, напр. 82/90/100/120), depth}]}. object_name: именованный объект из show() (по умолчанию: текущая форма).

Параметры
  • object_namestring
find_hole_patternsтолько чтение

Распознаёт шаблоны отверстий на объекте сессии (по умолчанию — текущая форма): ≥3 отверстий с одинаковыми характеристиками, равномерно расположенных по окружности → bolt_circle (center, diameter/BCD), коллинеарные с постоянным шагом → linear_array (pitch, direction). Возвращает JSON: {count, patterns: [{type, holes: [HoleFeature records], center/diameter | pitch/direction}]}. Каждое отверстие принадлежит не более чем одному шаблону; make_drawing уже аннотирует их автоматически.

Параметры
  • object_namestring
find_holesтолько чтение

Распознаёт просверленные отверстия на объекте сессии (по умолчанию — текущая форма). Коаксиальные внутренние цилиндры группируются в одну запись на отверстие: стопки сверление + зенковка + цековка, отверстия с пазом под шпонку и отверстия, прерываемые пересекающимися отверстиями, считаются один раз. Возвращает JSON: {count, holes: [{axis (направление сверления, единичный вектор), location (точка начала), diameter, depth (глубина от верхней части до дна; кончик сверла исключается), bottom: through|flat|drill_point|unknown, cbore: {diameter, depth}|null, spotface: {diameter, depth}|null}]}. Зенковки читаются как отверстия (а не как ступени); резьба и нецилиндрические элементы не распознаются.

Параметры
  • object_namestring
health_checkтолько чтение

Проверяет, что зависимости рендеринга и экспорта работают. Тестирует рендер PNG (VTK), рендер SVG (build123d HLR), экспорт STEP и экспорт STL на простой фигуре. Возвращает JSON с ok/error для каждой возможности. Выполните в начале сессии, если подозреваете отсутствующую зависимость.

Параметры

Без параметров.

import_cad_file

Импортирует файл STEP (.step/.stp), STL (.stl) или 3MF (.3mf) как именованный объект в сессии. path: абсолютный или относительный путь к файлу. name: имя для регистрации формы (по умолчанию — имя файла без расширения). Форма становится как именованным объектом, так и current_shape. Многообъектный 3MF регистрирует агрегат под name, а каждый элемент — как name_1, name_2 и т.д.; результат включает сводки топологии по элементам. После импорта используйте render_view() для визуализации формы, measure() для запросов геометрии или compare(a='imported', b='model', kind='shape') для сравнения с объектом show(). Примечание: импорт STL создаёт оболочку (volume=0), а не твёрдое тело. 3MF обычно даёт редактируемые твёрдые тела, если его сетки замкнуты, но вызывающий код должен проверять возвращаемые поля solids и volume, а не предполагать, что любая сетка корректна. Если в session.objects есть и исходная построенная форма, и импортированная копия, рендерите импортированную по имени (например, objects='mypart'), чтобы избежать артефактов Z-борьбы от двух совмещённых форм.

Параметры
  • namestring
  • pathstringобязательный
inspect_drawingтолько чтение

УСТАРЕЛО (#465) — перенесено в draftwright; по умолчанию отключено в 0.4.0, удалено в 0.5.0. Вызов объясняет замену. Структурированный отчет о ограничивающих рамках и аннотациях для 2D-чертежа. Два режима: 1. Сеансовый режим (по умолчанию): проверяет объекты, зарегистрированные через annotate()/show(). Возвращает ограничивающие рамки для каждого объекта, количество граней и вершин, метаданные аннотаций (строку метки, измеренную длину, кончик/основание выноски) и структурную проверку. 2. Режим SVG (svg_path задан): разбирает SVG-файл с диска и сообщает размер страницы, идентификаторы слоев, текстовое содержимое + позиции и количество элементов. Разделяет проверку и процесс сборки-регистрации — работает с SVG из любого источника (артефакты CI, сторонние экспорты, предыдущие запуски). Используйте annotate(result, name) вместо show(result.shape, name) при работе с build123d_drafting, чтобы метаданные были захвачены: from build123d_drafting import Dimension, Draft draft = Draft(font_size=2.5, decimal_precision=1) w = Dimension((-10, -20, 0), (10, -20, 0), "below", 8, draft, label="40") annotate(w, "width_dim") Для обычного build123d.ExtensionLine/DimensionLine передавайте метку явно: w = ExtensionLine(border=[...], offset=6, draft=draft, label="40") annotate(w, "width_dim", label="40") Аргументы: objects: имена объектов через запятую (по умолчанию: все). Только для сеансового режима. svg_path: путь к SVG-файлу на диске. Переключает в режим SVG.

Параметры
  • objectsstring
  • svg_pathstring
inspect_partтолько чтение

Возвращает одну компактную инвентаризацию контрольной точки генерации: bbox, количество сплошных/топологических элементов, отверстия, сгруппированные по оси/диаметру/глубине/днищу, выступы, сгруппированные по оси/диаметру/высоте, распознанные шаблоны с количеством элементов и профиль площади поперечного сечения. expected — это необязательный JSON-объект, полученный из чертежа/спецификации; поддерживаемые ключи: bbox [x,y,z], solid_count, списки групп отверстий/выступов/шаблонов, section_varying и tolerance. Группы шаблонов могут проверять тип, диаметр, шаг, направление, центр, количество элементов и диаметр элементов. Предоставленная категория признаков — точная инвентаризация: неожиданные или неоднозначно сопоставленные группы не проходят. При наличии ожиданий возвращает явные PASS/FAIL и несоответствия. Без них возвращает INVENTORY и эвристические предупреждения о мелких частичных разрезах и почти постоянных сечениях. Неподдерживаемые ключи ожиданий отклоняются; этот инструмент не содержит встроенных ожиданий для приспособлений.

Параметры
  • expectedstring
  • object_namestring
  • section_axisstring
  • section_slicesinteger
install_skill

Копирует навык рабочего процесса b123d в текущий проект. Записывает соответствующий файл конфигурации для запрошенного агента, чтобы пошаговый рабочий процесс был доступен в будущих сессиях. skill: какой рабочий процесс установить (по умолчанию "modeling") - drawing → УСТАРЕЛ; всё ещё устанавливается, но генерация чертежей переехала в draftwright, который публикует свой собственный навык (#465) - modeling → создание 3D-деталей и сборок (в т.ч. по техническим чертежам) - edit → изменение существующего кода build123d и проверка геометрических отклонений - repair → исправление тела, которое не проходит проверку геометрии target: один из "claude" (по умолчанию), "agents-md", "cursor", "windsurf" - claude → .claude/skills/<skill-dir>/SKILL.md (Claude Code) - agents-md → AGENTS.md (Codex CLI, Antigravity, GitHub Copilot, Cline) - cursor → .cursor/rules/<skill-dir>.mdc - windsurf → .windsurfrules force: перезаписать существующую установку (по умолчанию False)

Параметры
  • forceboolean
  • skillstring
  • targetstring
interface_featuresтолько чтение

Предлагает плоские монтажные грани на основе распознанных отверстий с точными дескрипторами отверстий. Это геометрические кандидаты, а не заявление о конструкторском замысле. Передайте выбранные дескрипторы отверстий как protected_refs в edit_feature(); эта правка также проверяет все остальные распознанные отверстия и внешний контур.

Параметры
  • object_namestring
last_errorтолько чтение

Возвращает сведения о последнем неудачном вызове execute(): тип исключения, сообщение и (для ошибок времени выполнения и синтаксических ошибок) номер строки и фрагмент из 5 строк вокруг ошибочной строки. Ошибки безопасности включают сообщение, но без строки/фрагмента. Возвращает {"error": null}, если последний execute() выполнился успешно или ещё не было неудачных вызовов execute(). Вызывайте эту функцию сразу после ошибки execute(), чтобы получить точную ошибочную строку — это намного быстрее, чем повторное чтение отправленного кода.

Параметры

Без параметров.

lint_drawingтолько чтение

I see you've shared a snippet of documentation or a deprecation notice about a drawing-quality checking tool for build123d, along with some usage details. Since you haven't asked a specific question, I'll summarize what this is describing and then ask how I can help you with it. ## What this is about This appears to be a deprecation notice for a function or module that performs structural drawing-quality checks in build123d (a Python CAD library). The key points: - Deprecated: The feature is marked as deprecated (#465) and has been moved to a separate package/library called draftwright. - Timeline: It's off by default in version 0.4.0 and will be removed in 0.5.0. Calling the deprecated function presumably shows a message explaining the replacement. - Purpose: The tool runs checks on technical drawings (e.g., DXF exports) to detect issues like: - Label vs. measured dimension mismatches (e.g., axis swap) - Leader lines passing through labels - Overlapping annotations/labels - Lines extending beyond page bounds - Redundant collinear lines - Native <text> elements in SVGs (which don't export to DXF properly) - Modes: - Session mode (default): Reconstructs annotations and delegates to build123d-drafting-helpers (lint_drawing + find_interferences). - SVG mode: Scans SVG files for export-only issues. - Parameters: - drawing_scale – to account for scaled-up geometry before projection. - view_shape_names – to detect overlaps with view outlines. ## How can I help? Are you: - Wondering how to migrate to the new draftwright package? - Seeing this deprecation warning and unsure what to do? - Looking for help using the replacement library or the described checks? - Trying to understand the purpose or implementation of a specific check? Please let me know what you'd like to accomplish, and I'll provide more targeted guidance. If you're simply sharing this for informational purposes, feel free to ask any question you have about it!

Параметры
  • drawing_scalenumber
  • svg_pathstring
  • view_shape_namesstring[] | null
list_sessionsтолько чтение

Сообщает, сколько сессий CAD удерживает этот серверный процесс, его настроенный лимит и как долго каждая из них простаивает. Хэндлы секретны и никогда не возвращаются. Инструмент оператора/диагностики для развертываний HTTP: через stdio всегда существует ровно одна сессия.

Параметры

Без параметров.

locate_gate_defectsтолько чтение

Сообщает, ГДЕ тело не проходит проверку корректности, с 3D-координатами, чтобы вы могли исправить конкретную кромку или грань, а не гадать. validate()/export() сообщают, ЧТО не так (например, "1 non-manifold edge", "BRepCheck failed"), но не где; вызывайте этот инструмент, когда validate() ПАДАЕТ, чтобы получить список дефектов по каждому элементу: brep_invalid_face (индекс грани + центр + статус BRepCheck, например, неориентируемый BSpline), open_edge / nonmanifold_edge (середина кромки B-rep + faces_incident), самокасание сетки, которое отвергают строгие CAD/mesh-потребители, - mesh_nonmanifold_edge (середина кромки) и mesh_nonmanifold_vertex (точка касания угла к углу), mesh_untriangulated_face (грань, которую невозможно разбить на треугольники при базовом допуске), mesh_refined_untriangulated_face (грань, которая не разбивается только при более мелком допуске), и mesh_vertex_deflection_defect (конечная точка тесселированной кромки, которая отклоняется от собственной вершины BREP больше, чем на величину отклонения сетки; исправленная/залеченная грань, граница которой топологически замкнута, но геометрически смещена от вершины; BRepCheck и даже подсчёт открытых кромок могут показывать чистый результат, но строгая проверка сетки всё равно её отвергает). Каждый дефект включает общую подсказку по исправлению, а также метаданные diagnostic_class / repair_family / next_step; блок diagnosis верхнего уровня подсчитывает виды дефектов и рекомендует следующий путь проверки. Пустой список означает, что деталь проходит структурные проверки. Выполняется в отдельном процессе с ограничением по времени (проверяет сетку), поэтому огромная деталь возвращает чистую ошибку бюджета, а не зависает. object_name: именованный объект из show() (по умолчанию: текущая форма).

Параметры
  • object_namestring
measureтолько чтение

Измеряет фигуру и возвращает полную геометрическую сводку: объём (мм³), площадь поверхности (мм²), топологию (количество граней/рёбер/вершин), ограничивающий параллелепипед с размерами по каждой оси и центром, объёмный центр масс, 6-компонентный тензор инерции (Ixx/Iyy/Izz/Ixy/Ixz/Iyz) и перечень типов граней, классифицирующий каждую грань как Plane/Cylinder/Cone/Sphere/Torus/BSpline с площадью и параметрами, зависящими от типа (например, диаметр и ось цилиндра); одинаковые грани свёртываются с указанием количества, неаналитические узкие грани объединяются в одну сводную строку. При проверке геометрии отдавайте предпочтение measure, а не render_view — числа однозначны. Топология — это самое быстрое подтверждение успешности булевой операции: неудачное вырезание оставляет количество граней/рёбер/вершин без изменений. object_name: именованный объект из show() (по умолчанию текущая фигура). density (г/см³) или предустановка материала (steel, stainless, aluminum/6061, brass, copper, titanium, abs, pla, petg, nylon) добавляет mass_g и масштабирует инерцию до истинных моментов массы в г·мм².

Параметры
  • densitynumber
  • materialstring
  • object_namestring
mesh_holesтолько чтение

Находит отверстия под крепёж в MESH, выполняя разрезы по всем трём осям. Возвращает JSON {count, holes:[{axis, diameter, location, span, depth, through}]}, где axis задаёт направление сверления, а location задаёт центр отверстия в мировых координатах. Это mesh-аналог функции find_holes(), которая требует настоящей топологии и не возвращает ничего для импортированного STL: это обычный случай при доработке скачанной модели, когда нужно учесть её существующие крепёжные элементы перед проектированием детали, которая будет прикручиваться. Считывайте depth и through так: глухое углубление глубиной в несколько миллиметров - это посадочное место под термовставку, а не отверстие под винт, а соосные углубления, высверленные с противоположных сторон, возвращаются по отдельности, а не объединяются в одно ложное сквозное отверстие. min_diameter/max_diameter по умолчанию охватывают зазоры под M2-M8, цековки и карманы под вставки. min_depth отбрасывает кольцевые фаски и осколки тесселяции. Он сообщает то, что показывают сечения, и не классифицирует зенковки или профили резьбы. object_name: именованный объект из show()/import_cad_file (по умолчанию: текущая форма).

Параметры
  • max_diameternumber
  • min_depthnumber
  • min_diameternumber
  • object_namestring
  • slicesinteger
  • tolerancenumber
  • weldnumber
mesh_sectionтолько чтение

Строит контуры на одной плоскости сечения сетки, сначала наибольшие. Возвращает JSON {axis, position, loop_count, enclosed_passages, loops:[{points, center, size, min, max, enclosed}]}, всё в двух осях, отличных от axis. enclosed_passages подсчитывает контуры на нечётной глубине вложенности, представляющие проходы через материал на этой высоте. Открытый паз даёт 0. Работает с импортированными STL-оболочками и телами. axis: X, Y или Z (нормаль плоскости). position: абсолютная мировая координата. tolerance: допуск тесселяции. weld: расстояние слияния точек при соединении сегментов. object_name: именованный объект из show()/import_cad_file (по умолчанию: текущая форма).

Параметры
  • axisstring
  • object_namestring
  • positionnumber
  • tolerancenumber
  • weldnumber
prepare_drawingтолько чтение

Подготавливает растровый инженерный чертёж для эффективной проверки. Обнаруживает значительные пространственные области, сохраняет одно размеченное обзорное изображение плюс читаемые PNG-фрагменты и возвращает их пиксельные ограничивающие прямоугольники и пути. Идентификаторы областей служат только подтверждением компоновки: этот инструмент НЕ подписывает виды, не распознаёт CAD-элементы, не интерпретирует линии, не определяет размеры и не обводит геометрию. Используйте его один раз в начале работы вместо того, чтобы многократно писать shell/PIL-скрипты для нарезки; просматривайте возвращённое обзорное изображение и только нужные фрагменты. Печатные размеры остаются определяющими. image_path: PNG/JPEG/TIFF-чертёж в разрешённом корневом каталоге для чтения. output_dir: каталог для фрагментов в разрешённом корневом каталоге для записи. max_regions: 1..30. padding: отступ фрагмента в пикселях, 0..500.

Параметры
  • image_pathstringобязательный
  • max_regionsinteger
  • output_dirstring
  • paddinginteger
recognise_featuresтолько чтение

Выполняет общую инвентаризацию quiddity один раз и возвращает точные, локальные для запуска сведения о правках. При families='' ответ содержит компактную инвентаризацию и количество целевых семейств; передавайте семейства через запятую, например 'holes,bosses,blends', для получения структурированных записей и дескрипторов @feature. Возвращенные дескрипторы можно использовать внутри execute() как recognition_faces(handle) или recognition_faces(handle, role='defining'); они перестают работать, если их исходная геометрия была заменена. coordinate_frame='caller' (по умолчанию) сохраняет координаты импортированной модели, используемые в инструкциях правок; 'part' использует жестко эквивариантную систему координат, связанную с деталью, и возвращает эту систему. include_faces добавляет точные индексы граней вызывающей стороны и дескрипторы геометрии. max_features ограничивает расширенные записи диапазоном 1..100; счетчики остаются точными.

Параметры
  • coordinate_framestring
  • familiesstring
  • include_facesboolean
  • max_featuresinteger
  • object_namestring
render_drawingтолько чтение

УСТАРЕЛО (#465) — перенесено в draftwright; по умолчанию отключено в 0.4.0, удалено в 0.5.0. Вызов объясняет замену. Растеризует существующий SVG-файл в PNG через resvg. Дополняет render_view (которая принимает shapes из build123d из активной сессии), принимая SVG, записанный вне песочницы — обычно коротким Python-скриптом, который напрямую вызывает ExportSVG. PNG возвращается инлайн, чтобы LLM могла увидеть рисунок без необходимости открывать файл в другом инструменте. Аргументы: svg_path: путь к SVG-файлу на диске. width: ширина выходного изображения в пикселях (по умолчанию 1200); высота задаётся пропорциями SVG. save_to: необязательный путь для записи PNG. Если пусто, байты PNG передаются только инлайн.

Параметры
  • save_tostring
  • svg_pathstringобязательный
  • widthinteger
render_viewтолько чтение

Рендерит модель. Автоматически определяет 3D или 2D: твёрдые тела используют VTK; плоские чертежи используют 2D-конвейер. Результаты рендеринга подтверждают внешний вид, а не геометрию. format: png, svg, dxf или оба. direction принимает top, bottom, front, rear, side, left, right или iso. quality: preview, standard или high; при тайм-ауте стандартный или высококачественный PNG автоматически рендерится повторно один раз как грубый предпросмотр. azimuth/elevation применяются после предустановленного направления. objects выбирает зарегистрированные имена, разделённые запятыми. clip_plane: x/y/z. save_to записывает результат. mode: auto/2d/3d. label_objects и highlights добавляют подписи на PNG; colors управляет цветами объектов/слоёв.

Параметры
  • azimuthnumber
  • clip_atnumber | null
  • clip_planestring
  • colorsobject | null
  • directionstring
  • elevationnumber
  • formatstring
  • highlightsobject[] | null
  • label_objectsboolean
  • modestring
  • objectsstring
  • qualitystring
  • save_tostring
repair_adviceтолько чтение

Возвращает структурированные, проверенные на практике рецепты исправления/редактирования, которые агент может явно выполнить в execute(). В отличие от repair_hints(), которая даёт короткие подсказки по конкретной ошибке, этот инструмент выдает последовательный план с именами шаблонов кода, проверками приёмки и условиями остановки. Передаёт полный текст validate()/export()/last_error() как error_text, предполагаемое изменение как goal, а также любые дополнительные замечания из locate_gate_defects()/compare(a='before', b='after', kind='shape') как context. Инструмент доступен только для чтения и не изменяет геометрию.

Параметры
  • contextstring
  • error_textstring
  • goalstring
repair_hintsтолько чтение

Принимает сообщение об ошибке или причину отказа валидации и возвращает целенаправленные предложения по исправлению распространённых ошибок build123d и отказов проверки: неправильный синтаксис Location, отсутствующий .part, идиомы CadQuery, заблокированные импорты, вырожденные результаты булевых операций, выбор граней для скругления, дефекты B-репа, ошибки не-многообразия/открытых кромок сетки и другие. Передайте полную строку ошибки из execute(), last_error(), validate() или export().

Параметры
  • error_textstringобязательный
resetидемпотентный

Очищает текущий сеанс до пустого состояния, включая все снимки.

Параметры

Без параметров.

resolveидемпотентный

Оценивает выражение селектора для именованного объекта и возвращает дескриптор геометрии. selector - суффикс выражения Python, применяемый к объекту, например '.faces().filter_by(Axis.Z).last()'. Если указан label, дескриптор сохраняется в session.geometry_refs[label] и появляется в session_state(). Возвращает JSON: {label, ref, object, selector, type, geom_type, area/length, center}. center - истинный центр сущности - центр дуги для кругового/эллиптического ребра, центроид площади в противном случае - не параметрическая середина, которая для окружности или цилиндра лежит НА сущности на расстоянии радиуса от её оси. Плоская грань также несёт нормаль; изогнутая грань вместо этого несёт ось {origin, direction} и радиус, потому что у изогнутой грани нет единой нормали (сфера не несёт ни того, ни другого - её центр и радиус говорят всё). Селектор со списком значений несёт count, агрегированный центр, усреднённый по каждому совпадению, и дескрипторы для каждой сущности в entities (первые 50, с entities_truncated, когда их больше). Поле ref использует формат @cad[object#label].

Параметры
  • labelstring
  • object_namestringобязательный
  • selectorstringобязательный
restore_snapshotидемпотентный

Восстанавливает геометрическое состояние из ранее сохранённого снимка (current_shape и реестр show()). Пространство имён переменных Python НЕ восстанавливается - вызовы execute(), сделанные после снимка, остаются в области видимости, но current_shape и все объекты show() возвращаются к тому состоянию, которое было на момент создания снимка. Вызывает ошибку, если имя снимка не существует.

Параметры
  • namestringобязательный
save_drawing_annotations

УСТАРЕЛО (#465) — перенесено в draftwright; отключено по умолчанию в 0.4.0, удалено в 0.5.0. Вызов объясняет замену. Записывает файл .dims.json рядом с SVG-файлом с метаданными разметки. build123d отображает текст как залитые глифы, а не как элементы <text> SVG, поэтому строки разметки невозможно восстановить из готового SVG. Вызывайте этот инструмент после завершения чертежа (размечайте все размеры и выноски с помощью annotate()) и до или после экспорта SVG. Соседний файл автоматически читается inspect_drawing(svg_path=...) для восстановления содержимого разметки. Рабочий процесс: 1. Постройте чертёж с помощью Dimension / Leader / annotate() 2. Экспортируйте SVG: execute("exporter.write('drawing.svg')") 3. Сохраните метаданные: save_drawing_annotations("drawing.svg") 4. Проверьте позже: inspect_drawing(svg_path="drawing.svg") → включает полный словарь разметки из соседнего файла Аргументы: svg_path: путь к SVG-файлу (соседний файл записывается как <svg_path>.dims.json).

Параметры
  • svg_pathstringобязательный
save_snapshotидемпотентный

Сохраняет именованную контрольную точку текущего геометрического состояния (current_shape и реестр объектов show()). Пространство имён переменных Python НЕ сохраняется, только геометрия. Вызывайте это перед рискованными экспериментами, чтобы восстановить заведомо исправную геометрию без повторного выполнения всех предыдущих вызовов execute().

Параметры
  • namestringобязательный
scriptтолько чтение

Возвращает один Python-скрипт, собранный из всех успешно выполненных блоков кода в этом сеансе. Добавляет 'from build123d import *', если его ещё нет. Если указан save_to, записывает скрипт по этому пути и возвращает {script_path, blocks}; в противном случае возвращает {script, blocks}. Полезен для экспорта воспроизводимого скрипта после интерактивного сеанса.

Параметры
  • save_tostring
session_stateтолько чтение

Возвращает структурированный JSON-снимок текущей сессии: метрики current_shape, все именованные объекты (заменяет list_objects) со статистикой геометрии, имена снимков и сводку переменных пространства имён Python (тип + объём для форм, тип + длина для коллекций, тип + значение для скаляров). Используйте это для ориентации после сброса, восстановления или многошаговой сборки, чтобы подтвердить, какие геометрия и переменные активны.

Параметры

Без параметров.

suggest_view_layoutтолько чтение

УСТАРЕЛО (#465) - перемещено в draftwright; отключено по умолчанию в 0.4.0, удалено в 0.5.0. Вызов этой функции объясняет замену. Автоматически вычисляет безопасные позиции VIEW_X / VIEW_Y для многовидового инженерного чертежа. Измеряет ограничивающий прямоугольник указанной фигуры и возвращает позиции на странице для каждого вида (VIEW_X, VIEW_Y), значения look_at и векторы camera/up для стандартной компоновки в третьем углу: [plan ] [ ] [front] [ side ] [ iso ] [ title (bottom-right) ] Возвращает JSON с: views: {name: {VIEW_X, VIEW_Y, half_w, half_h, look_at, camera, up}} free_space: {name: {above/below: {x, y, h}, left/right: {x, y, w}}} - пустой прямоугольник снаружи каждого края вида, ограниченный соседними видами, штампом и полями; перед размещением аннотаций предусмотрите размерные уровни (шаг n × уровень должен помещаться в h/w) warnings: список проблем компоновки (выход за границы, перекрытие штампа) suggestion: рекомендуемые page_w/page_h/scale, если компоновка не помещается Параметры: object_name: имя из show() - используйте "" для измерения текущей фигуры page_w/page_h: размер листа в мм (по умолчанию A4 альбомная 297×210) scale: масштаб чертежа (по умолчанию 1.0; используйте 2.0 для 2:1) views: подмножество ["front","plan","side","iso"] для размещения title_block_w/h: зарезервированная область внизу справа (по умолчанию 150×30 мм) margin: поле страницы в мм (по умолчанию 10) extents: [x, y, z] размеры детали в мм - раскладка по этим числам вместо объекта сеанса (используйте, когда деталь не загружена, например, при сбое импорта) centroid: [x, y, z] начало look_at при использовании extents (по умолчанию [0, 0, 0]) Точность: позиции front/plan/side точны для ортографической проекции. Позиция iso приблизительна (75% от диагонали 3D как полуэкстент) - проверьте с помощью render_view() и при необходимости подправьте вручную, если iso перекрывает соседний вид.

Параметры
  • centroidnumber[] | null
  • extentsnumber[] | null
  • marginnumber
  • object_namestring
  • page_hnumber
  • page_wnumber
  • scalenumber
  • title_block_hnumber
  • title_block_wnumber
  • viewsstring[] | null
validateтолько чтение

Проверяет, пройдёт ли форма контроль допустимости CAD перед экспортом. Возвращает вердикт PASS/FAIL и JSON (passes_gate, n_solids, volume, is_manifold, brep_valid, reasons). Контроль повторяет требования строгих потребителей CAD и сеток: правильно сформированное (BRepCheck), герметичное, манифолдное тело с ненулевым объёмом. FAIL означает, что экспорт STEP/STL будет отклонён сразу: частые причины - оставшийся 2D-эскиз или открытая оболочка в качестве текущей формы, необъединённый составной объект или вырожденный результат булевой операции. Запускает эту проверку непосредственно перед export() для любой детали, которую вы собираетесь отправить или передать. object_name: именованный объект из show() (по умолчанию: текущая форма).

Параметры
  • object_namestring
versionтолько чтение

Возвращает установленные версии сервера build123d-mcp, его ключевых зависимостей (build123d, build123d-drafting-helpers) и сопутствующих пакетов, импортируемых внутри execute() (bd_warehouse для резьб/крепежа/шестерён/подшипников, augura для анализа печатаемости). Используйте это, чтобы проверить, какая сборка сервера запущена: например, чтобы узнать, присутствует ли определённая функция или исправление, или общается ли клиент с устаревшей установкой.

Параметры

Без параметров.

view_axesтолько чтение

УСТАРЕЛО (#465) — перенесено в draftwright; отключено по умолчанию в 0.4.0, удалено в 0.5.0. Вызов объясняет замену. Возвращает сопоставление осей мир→страница для вызова project_to_viewport, вычисляется аналитически (без выполнения проекции). Используйте это ДО рендеринга проекционного вида, чтобы подтвердить, какая ось мира попадает на какую ось страницы и с каким знаком — ловит перестановки осей вида снизу/сбоку до того, как они появятся в рендере. Возвращает JSON вида {"world_X": ["page_X", -1.0], "world_Y": ["page_Y", 1.0], "world_Z": ["depth", 0.0]} — для начала вида снизу (0,0,-100), ось X мира становится отрицательной осью X страницы. Аргументы: viewport_origin: позиция камеры, тот же аргумент, что и в project_to_viewport. viewport_up: вектор вверх. По умолчанию (0,1,0). look_at: целевая точка. По умолчанию начало координат.

Параметры
  • look_atnumber[] | null
  • viewport_originnumber[]обязательный
  • viewport_upnumber[] | null
workflow_hintsтолько чтение

Даёт рекомендации по эффективному использованию этих инструментов. Вызывайте в начале сессии или когда не знаете, какой инструмент выбрать.

Параметры

Без параметров.

0.3.91основная
0.3.90
0.3.89
0.3.88
0.3.87
0.3.86
0.3.85
0.3.84
0.3.83
0.3.82
0.3.81
0.3.80
0.3.79
0.3.78
0.3.77
0.3.76
0.3.75
0.3.74
0.3.73
0.3.72
0.3.71
0.3.70
0.3.69
0.3.68
0.3.67
0.3.66
0.3.65
0.3.64
0.3.63
0.3.62
0.3.61
0.3.60
0.3.59
0.3.58
0.3.57
0.3.56
0.3.55
0.3.54
0.3.53
0.3.52
0.3.51
0.3.50
0.3.49
0.3.48
0.3.47
0.3.46
0.3.45
0.3.44
0.3.43
0.3.42
0.3.41
0.3.40
0.3.39
0.3.38
0.3.37
0.3.36
0.3.35
0.3.34
0.3.33
0.3.32
0.3.31
0.3.30
0.3.29
0.3.28
0.3.27
0.3.26
0.3.25
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.7
0.3.5
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0

Выберите клиент, чтобы установить pzfreo/build123d-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"pzfreo-build123d-mcp-xffhfq8zxv\",\"type\":\"stdio\",\"command\":\"uv\",\"args\":[\"tool\",\"run\",\"--python\",\"3.12\",\"build123d-mcp@latest\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add pzfreo-build123d-mcp-xffhfq8zxv -- uv tool run --python 3.12 build123d-mcp@latest

Либо через JSON-конфиг:

claude mcp add-json pzfreo-build123d-mcp-xffhfq8zxv "{\"command\":\"uv\",\"args\":[\"tool\",\"run\",\"--python\",\"3.12\",\"build123d-mcp@latest\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add pzfreo-build123d-mcp-xffhfq8zxv -- uv tool run --python 3.12 build123d-mcp@latest

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.pzfreo-build123d-mcp-xffhfq8zxv]
command = "uv"
args = ["tool", "run", "--python", "3.12", "build123d-mcp@latest"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите pzfreo/build123d-mcp, а в поле команды запуска — строку ниже:
uv tool run --python 3.12 build123d-mcp@latest

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например pzfreo-build123d-mcp-xffhfq8zxv.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: pzfreo-build123d-mcp-xffhfq8zxv
    command: uv
    args:
      - "tool"
      - "run"
      - "--python"
      - "3.12"
      - "build123d-mcp@latest"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "pzfreo-build123d-mcp-xffhfq8zxv": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "build123d-mcp@latest"
      ]
    }
  }
}

Похожие MCP-сервера

albertnahas/icogenie-mcp

albertnahas/icogenie-mcp

от albertnahas

MCP сервер @icogenie/mcp дает AI-агентам генерировать SVG-иконки по тексту. Помогает разработчикам быстро создавать иконки для интерфейсов в Claude. Поддерживает пакетную работу, библиотеку и ежедневные кредиты.

TypeScript⭐ 8
themesberg/flowbite-mcp

themesberg/flowbite-mcp

от themesberg

MCP сервер для работы с компонентами Flowbite на Tailwind CSS. Даёт доступ к 60+ UI-элементам, умеет генерировать тему по hex-цвету и превращать Figma-макет в код. Помогает разработчикам быстрее создавать интерфейсы.

JavaScript⭐ 42
vkhanhqui/figma-mcp-go

vkhanhqui/figma-mcp-go

от vkhanhqui

Открытый Figma MCP-сервер с полным доступом на чтение и запись через плагин. Не требует API и не имеет лимитов — подходит дизайнерам и разработчикам. Работает с AI-инструментами. Управляйте стилями...

Go⭐ 1178
ethbak/icon-composer-mcp

ethbak/icon-composer-mcp

от ethbak

MCP-сервер для быстрой генерации иконок, логотипов и изображений с эффектами Liquid Glass (iOS 26+). Управляет .icon-бандлами, задаёт стеклянные блики, тени, размытие и тёмную тему. Полезен дизайне...

TypeScript⭐ 61
musepy/genable

musepy/genable

от musepy

Genable — MCP сервер, превращающий текстовый запрос в редактируемые слои Figma: авто-макет, переменные цветов и шрифтов, светлая и темная темы. Полезен дизайнерам и разработчикам для агентных инструментов (Claude Code, Cursor). Совместим с Gemini, Claude, OpenAI.

Astro⭐ 3
GLips/Figma-Context-MCP

GLips/Figma-Context-MCP

от glips

Извлекает из макетов Figma стили, шрифты и отступы. Генерирует код под выбранный фреймворк для Cursor, VS Code и других редакторов.

TypeScript⭐ 16017
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин