navisworks-viewpoints-mcp

navisworks-viewpoints-mcp

MCP server for managing Navisworks viewpoint XML files, enabling sorting, auditing, merging, and synchronizing viewpoints from any MCP-compatible AI client.

Category
Visit Server

README

navisworks-viewpoints-mcp

Русский · English

MCP-сервер для работы с XML точек обзора Navisworks (nw-exchange-12.0) из любого MCP-совместимого ИИ-клиента.

Работает с любым файлом точек обзора: открыть и отсортировать точки, проверить на дубли, перенести между папками, слить два файла. Сборка нескольких выгрузок в один мастер-файл и синхронизация списков «решено / не решено» — это отдельные сценарии поверх той же логики, а не обязательный режим. Мастер-файл нигде не требуется по умолчанию — почти все инструменты принимают путь к файлу аргументом.

Это портативная версия логики, которая раньше жила скриптами внутри проекта navisworks-external-viewpoint-manage. Теперь её можно поставить на любой машине одной строкой и подключить к Claude, Codex, Kimi, Cursor, Opencode и др.

Установка в один клик

Add to Cursor Install in VS Code

После клика клиент добавит сервер автоматически. Требуется установленный uv. Для обычной работы (открыть файл и отсортировать/проверить точки) больше ничего настраивать не нужно — путь к файлу передаётся прямо в запросе. Поле NAVISWORKS_MASTER (placeholder REPLACE_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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured