navisworks-viewpoints-mcp
MCP server for managing Navisworks viewpoint XML files, enabling sorting, auditing, merging, and synchronizing viewpoints from any MCP-compatible AI client.
README
navisworks-viewpoints-mcp
Русский · English
MCP-сервер для работы с XML точек обзора Navisworks (nw-exchange-12.0) из любого MCP-совместимого ИИ-клиента.
Работает с любым файлом точек обзора: открыть и отсортировать точки, проверить на дубли, перенести между папками, слить два файла. Сборка нескольких выгрузок в один мастер-файл и синхронизация списков «решено / не решено» — это отдельные сценарии поверх той же логики, а не обязательный режим. Мастер-файл нигде не требуется по умолчанию — почти все инструменты принимают путь к файлу аргументом.
Это портативная версия логики, которая раньше жила скриптами внутри проекта navisworks-external-viewpoint-manage. Теперь её можно поставить на любой машине одной строкой и подключить к Claude, Codex, Kimi, Cursor, Opencode и др.
Установка в один клик
После клика клиент добавит сервер автоматически. Требуется установленный uv. Для обычной работы (открыть файл и отсортировать/проверить точки) больше ничего настраивать не нужно — путь к файлу передаётся прямо в запросе. Поле
NAVISWORKS_MASTER(placeholderREPLACE_WITH_FULL_PATH_TO_MASTER.xml) заполняйте, только если работаете по схеме с мастер-файлом — можно сделать это позже в Settings → MCP, либо удалить, если мастер не используете.
⚡ Быстрый старт через ИИ-агента
Не хотите настраивать руками? Откройте чат своего агента (Cursor, Claude Code, Codex…) и дайте одну фразу:
Прочитай https://raw.githubusercontent.com/mikhalchankasm/navisworks-viewpoints-mcp/main/SETUP_PROMPT.md
и выполни инструкцию по установке MCP-сервера navisworks-viewpoints для моего клиента.
Агент сам определит клиент, пропишет конфиг (не трогая другие серверы), запустит и проверит сервер. Если агент не умеет открывать ссылки — скопируйте готовый промт из SETUP_PROMPT.md. Ручная настройка — ниже.
Возможности (инструменты MCP)
Работают с любым файлом (путь — аргументом); там, где путь опционален, как дефолт берётся мастер из env.
| Инструмент | Что делает | Файл |
|---|---|---|
export_tree |
Сохранить дерево точек в HTML (сворачиваемое) / текст для просмотра без Navisworks | любой |
sort_viewpoints |
Отсортировать точки в файле, пересчитать (N) (одна папка или все) |
любой |
dedupe_viewpoints |
Удалить дубли по имени (в папке) или GUID (глобально) | любой |
audit_viewpoints |
Дубли GUID, конфликты имя/папка, счётчики | любой |
list_folders |
Папки файла со счётчиками view | любой |
list_views |
Точки (имя, guid) в конкретной папке | любой |
rename_folder |
Переименовать папку (с пересчётом (N)) |
любой |
affix_view_names |
Добавить префикс/суффикс к именам точек (массово) | любой |
move_views |
Перенести точки по именам между папками одного файла (есть dry_run) |
любой |
split_file |
Вытащить точки по именам в новый файл (копировать или перенести) | любой |
merge_viewpoints |
Добавить view из одного файла в папку другого (конфликт имени = ошибка) | любой |
reconcile_by_name |
Сверка по именам: что есть в выгрузках, но нет в целевом файле (и наоборот) | каталог + цель |
get_config |
Показать текущие пути из env (нужно только для схемы с мастером) | — |
sync_lists |
Схема «мастер»: синхронизировать два списка ID (решено/открыто) с каталогом выгрузок | мастер + каталог |
add_to_master |
Схема «мастер»: датированная копия мастера + добавление в ЛКП (…), дубли молча в отчёт |
мастер |
Сценарии работы
Сервер не навязывает один процесс — это набор операций. Типичные схемы:
A. Ad-hoc с одним файлом (мастер не нужен)
Самый частый случай: открыли произвольную выгрузку и привели в порядок.
- «Покажи дерево точек, чтобы листать без Navisworks» →
export_tree(HTML со сворачиванием; открой возвращённый файл в браузере) - «Отсортируй точки в
D:\…\выгрузка.xml» →sort_viewpoints - «Убери дубли точек» →
dedupe_viewpoints - «Проверь файл на дубли GUID и одинаковые имена» →
audit_viewpoints - «Покажи папки и сколько в каждой точек» →
list_folders/list_views - «Переименуй папку
Папка 1вЭтаж 1» →rename_folder - «Добавь префикс
AX-ко всем именам точек» →affix_view_names - «Перенеси точки 92, 95 из папки A в папку B» →
move_views - «Вытащи точки 100–105 в отдельный файл» →
split_file
B. Слить два файла
- «Добавь все точки из
выгрузка.xmlв папкуЭтаж 1файласводный.xml» →merge_viewpoints(по умолчанию новые GUID, конфликт имени останавливает — для «пропускать молча» см. схему C).
C. Сборка в мастер-файл (одна из схем, не обязательная)
Когда есть единый накопительный файл «Общие точки», куда стекаются выгрузки:
- «Добавь точки из выгрузки в мастер» →
add_to_master(создаёт датированную копию, кладёт вЛКП (…), существующие имена молча пропускает и собирает в отчёт). - «Синхронизируй списки решённых/открытых с каталогом выгрузок» →
sync_lists. - «Сверь, чего в мастере не хватает относительно выгрузок» →
reconcile_by_name.
Для схемы C удобно один раз прописать путь к мастеру в env (см. ниже) — тогда его не нужно указывать в каждом вызове. Для схем A и B достаточно передавать путь к файлу прямо в запросе.
Требования
- uv (ставит Python сам).
- Git (для установки из репозитория).
Установка / запуск
Запуск сервера у всех клиентов одинаковый — команда uvx тянет пакет прямо из git и держит его в изолированном окружении:
uvx --from git+https://github.com/mikhalchankasm/navisworks-viewpoints-mcp navisworks-viewpoints-mcp
Локальная разработка:
git clone https://github.com/mikhalchankasm/navisworks-viewpoints-mcp
cd navisworks-viewpoints-mcp
uv sync --extra dev
uv run pytest
uv run navisworks-viewpoints-mcp # запустить сервер по stdio
uv run navisworks-viewpoints-mcp --check # проверить, что пути из env подхватились
uv run navisworks-viewpoints-mcp --version
Пути к данным
По умолчанию ничего настраивать не нужно — передавайте путь к файлу прямо в запросе
(«отсортируй D:\…\выгрузка.xml»). Это покрывает схемы A и B.
Переменные окружения нужны только для удобства схемы «мастер» (C): задайте их один раз
в конфиге клиента, и инструменты add_to_master / sync_lists / reconcile_by_name будут
брать пути по умолчанию, без указания в каждом вызове.
| Переменная | Назначение |
|---|---|
NAVISWORKS_MASTER |
Полный путь к мастер-файлу (высший приоритет) |
NAVISWORKS_VIEWPOINTS_ROOT |
Каталог с .xml выгрузками |
NAVISWORKS_MASTER_FILENAME |
Только имя файла мастера (внутри ROOT) |
Явный путь в аргументе инструмента (xml=..., master=..., root=...) всегда важнее env.
Если переменные не заданы и путь не передан — инструмент вернёт понятную ошибку.
Подключение к клиентам
Во всех примерах подставьте реальные пути к вашим файлам. Готовые файлы — в examples/configs/.
Claude Code
.mcp.json в корне проекта (или claude mcp add):
{
"mcpServers": {
"navisworks-viewpoints": {
"command": "uvx",
"args": ["--from", "git+https://github.com/mikhalchankasm/navisworks-viewpoints-mcp", "navisworks-viewpoints-mcp"],
"env": {
"NAVISWORKS_VIEWPOINTS_ROOT": "D:\\\\Path\\\\To\\\\Точки_обзора",
"NAVISWORKS_MASTER_FILENAME": "Общие точки 16-04-2026.xml"
}
}
}
}
Claude Desktop
claude_desktop_config.json (Settings → Developer → Edit Config) — та же структура mcpServers, что и выше.
Cursor
.cursor/mcp.json:
{
"mcpServers": {
"navisworks-viewpoints": {
"command": "uvx",
"args": ["--from", "git+https://github.com/mikhalchankasm/navisworks-viewpoints-mcp", "navisworks-viewpoints-mcp"],
"env": { "NAVISWORKS_MASTER": "D:\\\\...\\\\Общие точки 16-04-2026.xml" }
}
}
}
Codex
~/.codex/config.toml:
[mcp_servers.navisworks-viewpoints]
command = "uvx"
args = ["--from", "git+https://github.com/mikhalchankasm/navisworks-viewpoints-mcp", "navisworks-viewpoints-mcp"]
env = { NAVISWORKS_MASTER = "D:\\\\...\\\\Общие точки 16-04-2026.xml" }
Opencode
opencode.json:
{
"mcp": {
"navisworks-viewpoints": {
"type": "local",
"command": ["uvx", "--from", "git+https://github.com/mikhalchankasm/navisworks-viewpoints-mcp", "navisworks-viewpoints-mcp"],
"environment": { "NAVISWORKS_MASTER": "D:\\\\...\\\\Общие точки 16-04-2026.xml" }
}
}
}
Kimi и прочие stdio-клиенты
Любой клиент, поддерживающий MCP по stdio: command = uvx, args = ["--from", "git+...","navisworks-viewpoints-mcp"], переменные окружения с путями. См. examples/configs/generic-stdio.md.
Формат XML
- Корень
<exchange ... xsi:noNamespaceSchemaLocation="...nw-exchange-12.0.xsd">. <viewpoints>→<viewfolder name="..." guid="...">и/или плоские<view>.- Счётчик
(N)в имени папки = число прямых дочерних<view>; пересчитывается автоматически после правок. - Запись: UTF-8, XML-декларация, namespace
xsi. Поляfilename/filepathу<exchange>не трогаются.
Лицензия
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。