MCP Revit Families
Enables AI assistants to inspect and modify open Autodesk Revit 2021 family (RFA) documents via pyRevit, including auditing parameters, creating parametric geometry, adding formulas, writing to existing ADSK/shared parameters, and saving backup or result copies.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
MCP Revit Families
Локальный MCP-сервер для работы с семействами в Autodesk Revit 2021 через pyRevit. Помогает AI-ассистенту проверить открытое семейство, подготовить план изменений, создать геометрию и заполнить подтверждённые параметры оборудования.
Работа выполняется в уже открытом RFA. Основной сценарий: открыть своё базовое семейство с нужными ADSK-параметрами → передать ассистенту исходники → проверить dry-run → выполнить построение → проверить сохранённую копию.
Это рабочий прототип с ограниченными геометрическими операциями. Он не является универсальным преобразователем «любой PDF → готовое семейство» и не гарантирует LOD350 автоматически. Чтение чертежа и подготовка спецификации выполняются ассистентом/пользователем; мост исполняет явную спецификацию.
Лицензия: MIT. Платформа: Windows, Revit 2021, pyRevit 5.1.x. Подключение: локальный MCP через STDIO.
Содержание
Related MCP server: revit-mcp
Что умеет решение
Возможность | Что реализовано |
Диагностика | Версия Revit, версии API, pyRevit, процесс, маршруты связи |
Аудит RFA | Параметры, GUID, формулы, значения по типам, тела, коннекторы |
Предварительная проверка | Состояние документа, опорные плоскости, система координат |
Обычные параметры семейства | Создание геометрических TYPE-параметров Length, Angle, YesNo с проверкой назначения |
Общий построитель | Параметрические коробки и цилиндры вдоль X, заданные положения и несколько типоразмеров |
Формулы | Новые арифметические зависимости с проверкой единиц, циклов и источника расчёта |
ADSK/shared | Запись только в существующие параметры при подтверждённом источнике |
Детализация | Общая спецификация: контуры, выдавливания, вращение, loft, булевы операции и FreeForm |
Сохранение | Резервная копия, отдельный результат RFA, JSON-отчёт; для детализации — PNG |
Коннекторы не создаются и не изменяются. Их пользователь расставляет самостоятельно. Геометрические штуцеры могут присутствовать в модели без MEP-коннекторов.
Существующие ADSK/shared definitions, GUID, формулы и признаки экземпляр/тип не заменяются. Общий построитель не удаляет исходную геометрию. Универсальная детализация может заменить только явно выбранные помеченные формы своего моста, с проверкой зависимостей и сохранности остальных элементов.
Как устроено подключение
AI-ассистент / MCP-клиент
│ локальный STDIO
▼
CPython: scripts/run_server.py → mcp_server
│ HTTP только 127.0.0.1, порт определяется автоматически
▼
pyRevit Routes → ExternalEvent → Revit API 2021
│
▼
Активное семейство RFA в открытом RevitЗдесь два разных Python:
CPython в
.venvзапускает MCP-сервер. В него устанавливается пакетmcp.IronPython внутри pyRevit выполняет Revit API. Устанавливать
mcpвнутрь pyRevit не нужно.
MCP-клиент сам запускает локальный сервер. Постоянное отдельное окно с run_server.py не требуется. HTTP-порт pyRevit — внутренний канал моста, не URL MCP-сервера для поля Streamable HTTP.
Папка проекта должна быть доступна для чтения и записи под тем же пользователем Windows, который запускает Revit. Репозиторий не содержит API-ключей и сам не обращается к моделям AI. Авторизация и оплата AI-клиента настраиваются отдельно. Результаты чтения RFA передаются MCP-клиенту; использование их облачным ассистентом зависит от выбранного клиента и его настроек.
Что установить
Компонент | Требование / проверенная среда |
Windows | Локальная рабочая станция с установленным Revit |
Autodesk Revit | 2021; проверялся 2021.1.10, build 21.1.100.12 |
RevitAPI / RevitAPIUI | 21.0.0.0; используются библиотеки установленного Revit |
pyRevit | 5.1.x; проверялась сборка 5.1.0.25094+1131-wip |
Движок pyRevit | IronPython 2.7.12 / .NET Framework 4.8 в проверенной среде |
CPython | 64-bit; SDK требует Python ≥3.10, локально проверен 3.14.3 |
MCP SDK |
|
Git | Для клонирования и обновления; можно скачать ZIP вручную |
MCP-клиент | С поддержкой локального STDIO на этом Windows-компьютере |
Другие версии Python из допустимого SDK диапазона не считаются проверенными этой публикацией. Revit 2022–2026 и pyRevit 6.x текущий мост не поддерживает: он намеренно проверяет версии. Не заменяйте номер версии в проверке без переноса и испытания API-кода.
Ссылки для установки: Python, Git for Windows, pyRevit — releases. Revit, pyRevit и их библиотеки не входят в репозиторий.
Установка по шагам
1. Скачайте репозиторий
Откройте PowerShell. Ниже используется C:\BIM; можно выбрать другую локальную папку, в которой у вас есть право записи.
New-Item -ItemType Directory -Path C:\BIM -Force
Set-Location C:\BIM
git clone https://github.com/yllld/MCP-Revit-Families.git
Set-Location C:\BIM\MCP-Revit-FamiliesБез Git: GitHub → Code → Download ZIP, распакуйте архив, затем перейдите в папку, содержащую этот README и каталоги scripts, core, extensions. Не работайте прямо внутри ZIP.
2. Создайте Python-окружение
Проверьте установленную версию:
py -0p
py -3.14 --versionСоздайте окружение и установите зависимости:
py -3.14 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txtЕсли используете другую совместимую версию, замените -3.14 на её номер. Если команды py нет, используйте полный путь к установленному python.exe. Активировать окружение не обязательно: далее везде указан его собственный интерпретатор.
requirements-lock.txt — снимок зависимостей проверенной Windows-среды с Python 3.14.3. Для воспроизведения именно этой среды вместо последней команды можно использовать pip install -r requirements-lock.txt. Это не универсальный lock-файл для всех платформ и версий Python.
requirements-pdf.txt содержит необязательные инструменты чтения PDF. Для работы моста и выполнения готовых JSON-спецификаций они не нужны.
3. Подключите pyRevit к Revit 2021
Если вкладка pyRevit уже есть в Revit 2021, проверьте её версию. Если pyRevit ещё не установлен, установите подходящую сборку 5.1.x и привяжите её к Revit 2021.
Диагностика из PowerShell:
pyrevit env
pyrevit clones
pyrevit attachedПри необходимости привязки закройте Revit и используйте имя установленного клона из pyrevit clones:
pyrevit attach ИМЯ_ВАШЕГО_КЛОНА default 2021Это шаблон команды: замените имя клона. Проверьте выбранный движок в выводе pyrevit env. Не используйте --installed, если хотите подключить только Revit 2021. Если CLI pyrevit не найден, проверьте установку CLI и PATH, затем откройте новое окно PowerShell.
4. Зарегистрируйте расширение MCP
Из корня репозитория:
$mcpRepo = (Get-Location).Path
pyrevit extensions paths add (Join-Path $mcpRepo 'extensions')Добавлять нужно каталог extensions, а не вложенный MCPHealth.extension. Альтернатива через интерфейс: pyRevit → Settings → список каталогов пользовательских расширений → добавить полный путь к extensions.
Сохраняйте расположение расширения внутри репозитория: startup.py находит соседние модули по относительному пути. Копирование только MCPHealth.extension отдельно от остальных каталогов нарушит подключение.
Запустите Revit 2021 заново или выполните pyRevit → Reload при отсутствии выполняемой операции. Должна появиться вкладка MCP, панель Diagnostics, кнопка Health / Health Check.
Если ранее было установлено это же расширение из другой папки, оставьте зарегистрированной одну копию. Две копии с одинаковыми маршрутами могут обращаться к разным каталогам .runtime.
5. Нажмите Health в Revit
Кнопка выводит диагностику. Ожидается success: true, версия Revit 2021, API 21.0.0.0, routes_available: true и список маршрутов /family-mcp/active/....
В корне репозитория появится .runtime/revit2021-<PID>.json. Он содержит адрес локального сервера и ID процесса Revit. Это служебный файл, а не постоянная настройка: порт и PID могут измениться после перезапуска.
Для Health открытый документ не обязателен. Для остальных операций откройте RFA в редакторе семейства. Открытый RVT с размещённым оборудованием не подходит.
Подключение MCP-клиента
Codex
Из корня репозитория:
$mcpRepo = (Get-Location).Path
codex mcp add revit2021 -- (Join-Path $mcpRepo '.venv\Scripts\python.exe') (Join-Path $mcpRepo 'scripts\run_server.py')
codex mcp listЛибо добавьте секцию из config/codex.example.toml в конфигурацию Codex, заменив пути. Обычно это %USERPROFILE%\.codex\config.toml; при заданном CODEX_HOME используйте каталог конфигурации оттуда. Существующие секции сохраняйте; повторный блок [mcp_servers.revit2021] не добавляйте.
В примере установлено tool_timeout_sec = 180: операции Revit могут занимать больше стандартного клиентского ожидания. После настройки переподключите сервер или перезапустите клиент. Для этого локального сервера OAuth не нужен. Официальная инструкция OpenAI по MCP.
Для одновременной регистрации расширения и сервера есть вспомогательный скрипт:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\register.ps1Он добавляет путь расширения, регистрирует сервер revit2021 и сохраняет имеющиеся конфигурационные файлы в .runtime/backups. Он не устанавливает Revit, pyRevit или Python. Для регистрации только расширения используйте -SkipCodex. Параметр ExecutionPolicy Bypass действует на запускаемый процесс, а не меняет системную политику навсегда.
Другие локальные MCP-клиенты
Используйте тип транспорта STDIO:
Поле | Пример |
Name |
|
Command |
|
Arguments |
|
Working directory | Не обязателен; launcher вычисляет корень сам |
Timeout | 180 секунд, если клиент позволяет настроить |
Для клиентов с форматом mcpServers есть config/mcp.example.json. Способ импорта зависит от конкретного клиента. В JSON обратные слеши удваиваются, в интерфейсном поле пути — нет. Не добавляйте кавычки как часть самого значения пути.
Обычный облачный чат без доступа к локальному MCP не сможет запустить этот процесс на вашем компьютере. Этот проект не разворачивает публичный HTTP-сервис или туннель.
Первые проверки
Проверка MCP без запущенного Revit
.\.venv\Scripts\python.exe scripts\check_mcp.pyКоманда выполняет настоящий MCP handshake и получает список девяти инструментов. Ожидается success: true, revit_contacted: false. Эта проверка подтверждает работоспособность Python/MCP, но ещё не связь с Revit.
Проверка связи с Revit
Запустите Revit 2021, нажмите Health, затем:
.\.venv\Scripts\python.exe scripts\smoke_mcp.pyОжидается успешный Health через цепочку MCP → pyRevit → Revit. Результат появится в reports/health_check.json. Команда не изменяет семейство.
Проверка активного семейства
Откройте предназначенное для работы .rfa, затем:
.\.venv\Scripts\python.exe scripts\call_active_family.py revit_get_active_family_context
.\.venv\Scripts\python.exe scripts\call_active_family.py revit_inspect_active_family
.\.venv\Scripts\python.exe scripts\call_active_family.py revit_family_preflight --summaryПроверьте имя/путь документа, категорию, текущий тип и сообщения errors/warnings. Эти команды читают документ. Если тип отсутствует, создайте именованный тип в «Типоразмеры в семействе» либо подготовьте явный каталог типов; обычный пример ниже предполагает текущий тип.
Повседневная работа с ассистентом
Откройте базовое RFA с нужной категорией и корпоративными параметрами.
Попросите выполнить Health и аудит. Убедитесь, что ассистент видит нужный файл.
Передайте PDF/каталог и точную модель, страницу, строку таблицы или цвет выделения. Дайте клиенту доступ к локальным файлам.
Попросите dry-run: размеры с источниками, состав геометрии, параметры, формулы, подтверждённые и пропущенные ADSK.
Проверьте спорные размеры. Измерение по масштабу и применение чертежа похожей модели должны быть явно согласованы.
После согласования попросите выполнить подготовленную спецификацию. Ассистент получает свежий
context_tokenи передаётdry_run=false.Проверьте геометрию и отчёт в сохранённом результате. Коннекторы разместите самостоятельно.
Пример первого сообщения:
Выполни Health и аудит активного семейства Revit 2021. Покажи путь RFA, категорию, типоразмеры, ADSK-параметры и коннекторы. Пока только чтение.
Пример задачи по чертежу:
Для модели [точное обозначение] изучи файл [полный путь], страницу [номер]. Подготовь dry-run для открытого RFA: геометрия, обычные Family Parameters с буквенными именами, зависимости и подтверждённые ADSK. Коннекторы не трогай. Отдельно перечисли размеры, которых нет в исходнике. Построение пока не выполняй.
Пример перехода к построению:
Выполни согласованный dry-run в этом RFA. Сохрани резервную копию и отдельный результат. Проверь габариты, параметры и сохранность коннекторов. При ошибке или тайм-ауте сначала выясни фактическое состояние операции, не повторяй запись автоматически.
Сложные формы описывайте общим языком детализации: контуры, выдавливания, вращение, loft и булевы операции. Неподдерживаемую операцию нужно добавить в общий механизм; произвольные sweeps, сетки, сплайны и зависимости пока не реализованы.
Учебный пример без PDF
Откройте тестовое семейство без объёмной геометрии и с выбранным типом. Выполните:
.\.venv\Scripts\python.exe scripts\call_active_family.py revit_build_equipment_in_active_family examples\box.dry-run.json --summaryПример предлагает коробку 800 × 600 × 1200 мм с обычными TYPE-параметрами L, B, H. Это синтетические учебные размеры; ADSK не заполняются. Коробка центрирована по X/Y, низ — на Z=0. При dry_run=true геометрия не создаётся.
Если семейство уже содержит геометрию, пример остановится. Флаг allow_add_to_existing_geometry=true разрешает добавление после проверки состава семейства; он не означает разрешение удалить старые тела.
examples/parameter_policy_preview.json — отдельный пример политики: синтетическое значение ADSK должно быть пропущено даже при confidence=1.0. Это не паспорт оборудования.
Как перейти от dry-run к записи
dry-run — предварительный расчёт плана без изменения модели. context_token — отпечаток проверенного состояния документа, не пароль и не API-ключ. Его нельзя брать из примера или старого запуска.
После успешного dry-run учебного построения полный ответ хранится в reports/active_family_build.json. Подготовьте отдельный запрос записи:
$dryReport = Get-Content .\reports\active_family_build.json -Raw -Encoding UTF8 | ConvertFrom-Json
if (-not $dryReport.ready -or $dryReport.errors.Count -gt 0) { throw 'Dry-run contains errors' }
$buildRequest = Get-Content .\examples\box.dry-run.json -Raw -Encoding UTF8 | ConvertFrom-Json
$buildRequest.dry_run = $false
$buildRequest | Add-Member -NotePropertyName context_token -NotePropertyValue $dryReport.context_token -Force
New-Item -ItemType Directory -Path .\output -Force | Out-Null
$buildRequest | ConvertTo-Json -Depth 100 | Set-Content .\output\box.write.json -Encoding UTF8Этот блок только создаёт JSON. Следующая команда реально изменяет активное RFA:
.\.venv\Scripts\python.exe scripts\call_active_family.py revit_build_equipment_in_active_family output\box.write.json --summaryМежду dry-run и записью не переключайте документ и не меняйте проверяемые параметры/типы. При Stale ... context повторите dry-run и заново сформируйте запрос. Токен не является полным снимком всех возможных свойств Revit и не заменяет проверку активного документа.
Проверяйте результат по полям:
Поле | Значение |
| Итог выполнения операции |
| Предварительный план допускает выполнение |
| Ошибки и ограничения |
| Изменения уже зафиксированы в документе |
| Итоговый файл сохранён |
| Фактические пути результата и резервной копии |
| Откат до фиксации; имя зависит от операции |
Не ориентируйтесь только на HTTP 200, отсутствие исключения или success=true в dry-run. При model_committed=true и saved=false геометрия уже существует в открытом документе: повторный build может создать конфликт. Сначала сохраните/проверьте текущий результат.
Параметры, ADSK и формулы
Для геометрии создаются обычные Family Parameters, без shared definitions и ADSK GUID. Предпочтительные имена: L/B/H, l1/b1/h1, d1/r1/t1, x1/y1/z1. Если чертёж использует A/B/C, сохраняются исходные обозначения через source.designation.
Новые формулы требуют source_type="derived" и source.calculation, совпадающего с выражением. Поддерживаются +, -, *, /, скобки, зависимости между объявленными параметрами, размерные литералы вроде 645 mm. Например, r1 = d1 / 2. if, sin, произвольный Python-код и замена существующих формул не поддерживаются.
Для ADSK/shared одновременно нужны:
существующий параметр с подходящим типом данных и доступом на запись;
прямой источник
source_type="direct", ссылкаfile/reference, полеfield/designation;подтверждение нужной модели
model_match=trueи происхождениеorigin;достоверность
confidence >= 0.95, отсутствие конфликтов;явные единицы для физических величин.
0.70 ≤ confidence < 0.95 означает REVIEW; меньшая или отсутствующая оценка — UNKNOWN. Эти значения показываются в плане и не записываются. Число confidence выставляет составитель спецификации: мост проверяет правила, но не доказывает истинность содержимого PDF.
Для внешнего источника нужны origin="external" и search_authorized=true. Для источника пользователя — origin="user_provided". Значения по масштабу подходят для согласованной геометрии, но не становятся прямыми подтверждёнными характеристиками ADSK.
Если параметр является параметром экземпляра, по умолчанию запись пропускается. Для начальных значений экземпляров внутри семейства требуется write_instance_defaults=true в values-payload инструмента записи либо в spec построителя. Запись применяется к существующим типам; признак instance/type не меняется. Размещённые экземпляры в RVT инструмент не редактирует.
Пример структуры запроса записи, который нужно заполнить реальными данными:
{
"dry_run": true,
"values": {
"values": {
"ADSK_Масса": {
"value": 184,
"unit": "kg",
"confidence": 1.0,
"source": {
"source_type": "direct",
"file": "C:/BIM/inputs/catalog.pdf",
"page": 3,
"field": "Масса, строка точной модели",
"origin": "user_provided",
"model_match": true
}
}
},
"parameter_mapping": {"mappings": [], "unmapped": []}
}
}184 кг здесь — только пример формата, не характеристика реального изделия. Если существующий ADSK_Масса имеет тип Number, а не Mass, мост не должен угадывать физическую единицу по имени.
Поддерживаемые единицы: Length — mm, Angle — deg, Mass — kg, ElectricalPower — W/kW, ElectricalPotential — V, Frequency — Hz, Flow — m3/h/l/s, Pressure — Pa/kPa; полный список в core/active_plan.py. Мост преобразует значения во внутренние единицы Revit.
Подробные правила: docs/parameter_policy.md. Неподтверждённые значения, уже находящиеся в корпоративном шаблоне, не очищаются автоматически: их нужно учитывать при проверке готового семейства.
Универсальная детализация по ТЗ
revit_add_family_details строит детали по общей JSON-спецификации schema_version=1. Название производителя и модель не выбирают код построения: отдельный модуль под изделие не нужен. Формат и примеры всех операций описаны в docs/universal_details.md.
Форма | Как создаётся |
Корпуса, пластины, патрубки, отверстия в профиле | Выдавливание прямоугольных, круглых, эллиптических, скруглённых или произвольных контуров из линий и дуг |
Крышки, буртики, тела вращения | Вращение заданного профиля; результат — FreeForm |
Переходы между сечениями | Loft по последовательности сечений; результат — FreeForm |
Вырезы и составные формы | Разность, объединение или пересечение явно заданных тел; результат — FreeForm |
Наклонные детали | Локальная система координат с произвольными ортогональными осями |
Если обычное выдавливание не проходит проверку или фиксацию транзакции, его попытка откатывается, затем мост строит тот же контур через FreeForm. Если и это невозможно, откатывается вся операция детализации. Незаметно заменить сложный элемент коробкой или пропустить его мост не должен.
Как получать модель, близкую к исходнику
Дайте ассистенту ТЗ, точную модель оборудования, чертежи с несколькими проекциями и таблицу характеристик. Укажите начало координат и требуемые элементы: корпуса, опоры, крышки, крепления, выступы, геометрические штуцеры, отверстия и зоны сопряжения.
Ассистент составляет перечень требований
requirementsи связывает каждое с деталями. Мост проверяет эти связи. Полноту самого перечня относительно PDF проверяет ассистент/пользователь: мост не читает чертёж самостоятельно.Явные размеры переносятся напрямую. Размеры по масштабу отмечаются
accuracy="scaled", с проекцией, страницей, калибровкой, расчётом и оценкой погрешности. Для них требуетсяaccept_scaled_dimensions=true, основанный на разрешении пользователя. Предположения разрешаются отдельно черезaccept_assumptions=trueи всегда остаются отмеченными.Выполните dry-run. В нём видны все детали, формы, источники, замены, предупреждения, ожидаемые габариты и допуск проверки. Ошибки или непокрытые требования блокируют запись.
Выполните запись с актуальным
context_token. Мост проверяет сохранность семейства, число новых форм, габариты всей сборки и, если заданы, границы каждой детали. При ошибке до фиксации откатывается вся группа транзакций.Сверьте сохранённые виды 3D, спереди, справа и сверху с исходником: контуры, взаимное положение, отверстия, выступы и монтажные интерфейсы. Совпадение габаритной коробки не доказывает совпадения формы. Корректировки передаются тем же форматом JSON.
Для изменений можно явно указать replace_generated_ids: заменяются только выбранные формы с меткой нашего моста. Повторный запуск поверх тех же ID без такого списка запрещён. Удаление зависимых размеров или других защищённых элементов вызывает откат; в этом случае начните с чистого базового RFA. Непомеченную исходную геометрию инструмент не заменяет.
Параметризация: новый общий механизм детализации создаёт фиксированную геометрию, общую для типов семейства. Он не добавляет параметры и не привязывает FreeForm к размерам. Для параметрической основы и обычных буквенных параметров используйте revit_build_equipment_in_active_family; ADSK заполняйте отдельным инструментом только по подтверждённым данным. Изменение L/B/H не перестраивает статические детали — нужна новая спецификация и повторная детализация. Это ограничение явно присутствует в dry-run.
Учебный запуск
Откройте отдельное тестовое базовое RFA без объёмной геометрии, с выбранным типом. Пример описывает условную сборку 100 × 60 × 100 мм из четырёх деталей: основание с отверстиями, цилиндр, буртик вращения и переход. Он не относится к реальному изделию.
.\.venv\Scripts\python.exe scripts\call_active_family.py revit_add_family_details examples\details.dry-run.json --summaryОтчёт: reports/active_family_detail.json. Для записи используйте порядок из раздела Как перейти от dry-run к записи, подставив этот файл примера, этот отчёт и инструмент revit_add_family_details. Результат: отдельный Detailed_Family.rfa, JSON-отчёт и четыре PNG. Если экспорт PNG не удался, в ответе будет предупреждение; визуальная проверка всё равно нужна.
Задание ассистенту
Построй семейство в активном базовом RFA максимально близко к приложенному ТЗ. Используй универсальную детализацию schema_version=1 без модулей под конкретное изделие. Сначала перечисли все требуемые элементы и составь dry-run. Явные размеры возьми с чертежа; недостающие видимые размеры разрешаю снять по масштабу ортогональных проекций, с калибровкой и указанием погрешности. Предположения не подставляй молча. Используй выдавливания; сложные формы создавай FreeForm через вращение, loft или булевы операции. Не упрощай и не пропускай неподдерживаемую форму без согласования. После построения сравни габариты и четыре вида с исходником, перечисли отклонения и исправь их тем же общим механизмом. Коннекторы не создавай и не меняй. ADSK заполняй только по достоверным прямым данным.
Предел точности: гарантировать «всегда 1 в 1» по любому PDF нельзя. Скрытая геометрия, нечитаемые размеры, перспективные изображения и неподдерживаемые формы требуют дополнительных данных или согласованного упрощения. Мост не присваивает LOD350 автоматически: готовность определяется требованиями конкретного ТЗ и проверкой результата. Новые операции должны расширять общий язык геометрии, а не добавлять ветвления по марке изделия.
Обновление: прежние запросы с profile/operation и отдельные генераторы под оборудование удалены. Старые JSON нужно перевести в общий формат; существующие RFA автоматически не переделываются. Перезапустите Revit и MCP-клиент после обновления кода.
Все MCP-инструменты
Имя | Назначение | Изменение RFA |
| Связь, версии, PID, Routes | Нет |
| Активное семейство и контекст | Нет |
| Полный аудит | Нет |
| Аудит перед построением, плоскости и координаты | Нет |
| Существующие параметры с источником | Только при |
| Коробки, цилиндры X, обычные параметры и типы | Только при |
| Тестовая коробка и три flex-сценария | Только при |
| Универсальная детализация по явной спецификации | Только при |
| Оформление активного помеченного MCP-вида детализации | Только при |
Оформление доступно для любого вида, созданного универсальной детализацией; имя изделия не проверяется.
Тест геометрии создаёт три служебных MCP_* параметра только для интеграционной проверки и проверяет размеры 800×600×1200 → 1000×800×1500 → 600×400×900 мм. Это исключение для теста, а не система имён производственных семейств. Запускайте запись теста в тестовом RFA.
Где лежат результаты
Все пути считаются от корня вашего клона репозитория:
Каталог | Содержимое |
| Адреса запущенных Revit-процессов и резервные копии настроек |
| Последние JSON-ответы по операциям; следующий запуск может их заменить |
| Резервные копии перед изменениями |
| Результат RFA, подробный JSON и PNG конкретного запуска |
| Ваши исходники, если вы выбрали хранить их здесь |
Ориентируйтесь на backup_path и output_path ответа. Папки запусков разделены UUID.
Перед изменениями SaveAs сохраняет текущее состояние, включая несохранённые правки. Активный документ получает путь резервной копии, затем — результата. Старый исходный файл на диске не перезаписывается. При неудаче до фиксации транзакций документ может остаться открытым под именем резервной копии. После фиксации ошибка сохранения или экспорта не означает автоматический откат геометрии.
Перечисленные рабочие каталоги, PDF, RFA, DLL и конфигурации сессий исключены из Git. .gitignore не является средством шифрования: не публикуйте диагностические отчёты без проверки путей, названий и содержимого параметров.
Ошибки и их исправление
Сообщение / симптом | Что проверить |
| Загружено ли расширение; нажмите Health; есть ли |
Нет вкладки MCP | Путь к |
| Клиент должен запускать |
| Не перенесён ли один каталог |
| Установлена неподдерживаемая версия pyRevit; обновление до любой последней версии не является исправлением |
| Активен RVT, начальный экран или другой документ; откройте нужное семейство в редакторе |
| Закройте лишний процесс или задайте |
| Повторите dry-run после переключения документа/изменения параметров; используйте новый токен |
| Эта геометрия уже построена; проверьте текущее состояние, не удаляйте метки для обхода защиты |
Параметр попал в REVIEW/UNKNOWN | Недостаточно достоверности или прямого источника; дополните исходные данные |
| Требуется явный |
Ошибка единиц / типа параметра | Проверьте фактический ParameterType и unit, а не только имя ADSK |
| Выберите поддерживаемую общую операцию детализации; неизвестные формы не подменяются упрощёнными |
| PDF изменился; проверьте ревизию, размеры и масштаб перед обновлением SHA256 |
Старое поведение после правки Revit-кода | Завершите запрос, затем MCP → Diagnostics → Health; если требуется, перезапустите Revit |
Клиент не видит новые инструменты | После изменения MCP-сервера переподключите его / перезапустите клиент |
Сервер запущен вручную и «ничего не пишет» | STDIO ждёт MCP-протокол; используйте |
Timeout / | Проверьте диалоги Revit, активный документ, |
При нескольких Revit для текущего окна PowerShell:
Get-Process Revit | Select-Object Id, MainWindowTitle
$env:REVIT_PROCESS_ID = '12345'
.\.venv\Scripts\python.exe scripts\smoke_mcp.pyЗамените 12345 на реальный PID. Для запуска из MCP-клиента задайте переменную в конфигурации сервера: [mcp_servers.revit2021.env] для Codex, объект env для соответствующего JSON-клиента. PID меняется при перезапуске Revit.
Не запускайте несколько записей одновременно. Блокировка моста действует внутри одного процесса MCP; несколько отдельных клиентов могут обойти её. Перед вызовом завершите редактирование эскиза, закройте модальные окна и дождитесь окончания текущей операции Revit.
Мост использует loopback, без аутентификации маршрутов pyRevit. PID и context_token проверяют контекст, но не заменяют контроль доступа. Решение рассчитано на доверенную локальную рабочую станцию: не публикуйте Routes-порт в сеть и не меняйте адрес на 0.0.0.0.
Обновление и отключение
Для обновления сначала завершите запросы, сохраните свои изменения кода, затем из корня клона:
git pull --ff-only
.\.venv\Scripts\python.exe -m pip install -r requirements.txtНажмите Health в Revit при отсутствии открытой транзакции. Кнопка обновляет обработчики этого проекта в текущем движке и использует существующий сервер Routes. Для первоначальной загрузки расширения нужен Reload pyRevit или перезапуск Revit. При изменении MCP-схем переподключите MCP-клиент. При переносе папки заново зарегистрируйте путь расширения и пути Python/launcher.
Отключение из корня клона:
codex mcp remove revit2021
pyrevit extensions paths forget (Join-Path (Get-Location).Path 'extensions')После этого перезапустите Revit и клиент. Эти команды не удаляют созданные семейства или саму папку проекта. В другом MCP-клиенте удалите соответствующую запись сервера через его настройки.
Проверки для разработчиков
Из корня репозитория:
.\.venv\Scripts\python.exe -m unittest discover -s tests -v
.\.venv\Scripts\python.exe scripts\check_mcp.pyUnit-тесты проверяют политику параметров, формулы, единицы, источники, контекст, ограничения транспорта и отсутствие автоматического повтора записи. Проверки детализации включают контуры, источники, калибровку масштаба, покрытие ТЗ, габариты и запрет неявной замены. Тестовые данные находятся в tests/fixtures и examples, поэтому частные PDF и локальные отчёты для unit-тестов не нужны.
check_mcp.py проверяет реальный STDIO handshake и список инструментов без обращения к Revit. smoke_mcp.py выполняет живой read-only Health. Успех unit-тестов или компиляции CPython не доказывает корректность Revit API/IronPython: изменённые операции дополнительно проверяйте в Revit 2021 на тестовом RFA, включая Regenerate, readback, сохранение и геометрию.
Универсальная детализация этой версии проверена офлайн; полный прогон новых операций в живом Revit 2021 ещё требуется. Для него используйте учебный пример и порядок проверки в docs/universal_details.md.
Структура, ограничения и лицензия
core/ Независимые от Revit планы, формулы, политика параметров
mcp_server/ MCP-инструменты и HTTP-мост к pyRevit
revit/revit2021/ Аудит, общий язык геометрии, построение и сохранение
extensions/MCPHealth.extension/ Расширение pyRevit и кнопка Health
scripts/ Запуск, регистрация и проверки
config/ Примеры конфигураций и схема mapping
examples/ Учебные запросы dry-run
tests/ Unit-тесты и обезличенные регрессионные данные
docs/ Политика параметров и формат универсальной детализацииСохранены исторические family_roundtrip.py и template_locator.py с их тестами. Создание нового документа из RFT через них не включено в текущие MCP-инструменты и Routes. Основной сценарий — активное RFA.
Ограничения: нет универсального PDF-парсера, работы с проектами RVT, автоматического создания ADSK, редактирования коннекторов, произвольных sweeps, mesh, сплайнов и параметрических void-форм и автоматической полной параметризации FreeForm. Контроль сохранности исходной геометрии по ID, bounding box и числу тел не является полным сравнением топологии.
Исходный код проекта распространяется по MIT, copyright © 2026 yllld. Сторонние компоненты и исходные документы сохраняют собственные права: THIRD_PARTY_NOTICES.md. Корпоративные RFA, Revit DLL, коммерческие предложения и PDF производителей в репозиторий не включены.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI for Revit: 450+ tools, 1 undo step. Windows, Revit 2024–2027 (2021–2023 included). Free account.
Connect your AI assistant to Blender for 3D modeling, Geometry Nodes, materials, lighting, animation, rendering and export. Inspect real scenes and viewport images, refine the result and restore checkpoints. OAuth connects your chat to Blender Bridge Desktop on an online Windows 10/11 x64 computer running Blender 4.2+. The chat can run on another device. Requires an active Blender Bridge account; 7-day trial available. AI model access is separate.
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceAllows AI assistants to interact with Autodesk Revit through the MCP protocol, enabling the AI to create, modify, and delete elements in Revit projects.1541 npm1-
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Autodesk Revit to query project data, manage elements, and execute generated code via the Model Context Protocol. It provides full compatibility with GitHub Copilot and Claude to automate BIM modeling workflows.1341 npmMIT
- AlicenseNot gradedqualityBmaintenanceA pyRevit extension and Python server that enables AI clients to interact with a live Autodesk Revit session through tools for project info, view management, element operations, and schedule management.64MIT
- -licenseNot gradedqualityNot gradedmaintenanceConnects MCP clients like Claude, Codex, and Cursor to a running Autodesk Revit session for typed BIM queries, verified model edits, family authoring, exports, and Power BI workflows. It is open-source, Apache-2.0, and designed for reliable, verified outcomes.-