MCP server that connects Claude with Navisworks Manage 2026 via C# plugin. Enables inspection and manipulation of BIM models, clash detection, timeliner tasks, and federated model analysis through a TCP bridge.
Server has 26 tools with consistent naming (verb_noun pattern: navis_*) and detailed Spanish descriptions (avg ~250 chars, well above 194-char baseline). All tools have input schemas with type definitions. However, parameter descriptions are often verbose and example-heavy rather than constraint-focused. Output schemas are not documented. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Missing tool annotations (readOnlyHint, destructiveHint). Some tools combine multiple concerns (e.g., navis_get_clash_results does filtering, pagination, and property enrichment in one call).
Añade nuevas tareas al Timeliner. Parámetros: tareas es una lista de diccionarios con 'nombre', 'descripción', 'fecha_inicio', 'fecha_fin', 'tipo_tarea'. Retorna la lista de tareas creadas.
Limpia todas las tareas del Timeliner. OPERACIÓN DESTRUCTIVA: elimina todas las tareas y sus vínculos. Retorna el número de tareas eliminadas.
Crea un único grupo de selección con todos los elementos que cumplen el criterio: categoria.propiedad = valor. Ejemplo: nombre='Muros de hormigón', categoria='Element', propiedad='Material', valor='Concrete' → crea un grupo con todos los muros de hormigón. Retorna el nombre del grupo y el número de elementos incluidos.
Crea un grupo de selección a partir de los elementos actualmente seleccionados en Navisworks. El usuario debe tener los elementos seleccionados en Navisworks antes de llamar a esta herramienta. Parámetro nombre: nombre que tendrá el nuevo grupo.
Crea automáticamente una carpeta de grupos de selección, uno por cada valor único de la propiedad indicada. Ejemplo: categoria='Element', propiedad='Discipline' genera grupos 'Structural (120)', 'Mechanical (85)', 'Electrical (40)', etc. Ejemplo: categoria='LcOaNode', propiedad='Layer' genera grupos por capa. El nombre_carpeta es el nombre de la carpeta que agrupa todos los sets. Retorna la lista de grupos creados con su conteo de elementos.
No output schemas documented. LLMs cannot predict response structure or plan downstream tool chains. Every tool should declare what fields it returns.
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes without explicit hints. navis_clear_timeliner is marked DESTRUCTIVE but has no annotation.
No error handling or recovery guidance. Tools fail silently or return raw exceptions. Descriptions lack 'what to do if this fails' guidance. E.g., navis_ping should explain what to do if plugin is not responding.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Crea un nuevo tipo de tarea en el Timeliner. Parámetros: nombre es el nombre del tipo, descripción es la descripción, color es el color en formato hexadecimal (ej: '#FF0000'). Retorna el tipo de tarea creado.
Encuentra todos los elementos del modelo que tienen vacía una propiedad específica. Parámetros: categoria: nombre exacto de la categoría (ej: 'Element'), propiedad: nombre exacto de la propiedad (ej: 'Material'). Retorna la lista de rutas de los elementos con esa propiedad vacía o sin valor. Útil para auditar calidad de datos y detectar información faltante.
Obtiene un inventario de todas las categorías de propiedades disponibles en cada modelo del federado. Retorna una lista de modelos con sus categorías.
Resultados detallados de una prueba de Clash Detective, PAGINADOS. test_name: nombre exacto de la prueba (usar navis_get_clash_tests primero). offset / limit: paginación; limit<=0 devuelve todos los restantes (respuesta grande). estado: filtra por estado: New / Active / Reviewed / Approved / Resolved. filtro_elemento: sólo choques donde alguno de los dos objetos contenga ese texto. con_propiedades: añade todas las propiedades de ambos objetos.
Lista todas las pruebas de Clash Detective del documento. Para cada prueba muestra: nombre, estado, y desglose de choques por estado (nuevos, activos, revisados, aprobados, resueltos). Usa esto primero para saber qué pruebas existen antes de pedir detalles.
Obtiene todas las propiedades de un elemento específico buscándolo por su ruta. Parámetro item_path: ruta completa del elemento en el árbol del modelo, como la devuelve navis_get_model_tree o navis_get_selected_properties. Ejemplo: 'Modelo > Nivel 1 > Muro:Muro básico [123456]'. Devuelve todas las categorías y propiedades de ese elemento.
Busca todos los elementos del modelo que tienen un valor específico en una propiedad. Retorna la lista de rutas de los elementos encontrados.
Obtiene información general del modelo/documento abierto en Navisworks. Incluye: título del documento, ruta del archivo, número de modelos/archivos mergeados, si hay cambios sin guardar, y lista de archivos en el modelo. Útil para saber qué está abierto antes de hacer cualquier operación.
Obtiene el árbol jerárquico del modelo Navisworks hasta la profundidad indicada. Muestra la estructura de nodos: archivos, capas, grupos y elementos geométricos. Parámetro max_depth: profundidad máxima del árbol (por defecto 3, máximo útil ~5). Ideal para entender cómo está organizado el modelo antes de explorar propiedades.
Obtiene el desglose de valores de una propiedad específica por cada modelo del federado. Parámetros: categoria es el nombre exacto de la categoría, propiedad es el nombre exacto de la propiedad. Retorna un desglose de valores y cantidades por modelo.
Lista todas las categorías de propiedades que existen en el modelo, junto con el conteo de elementos que tienen cada categoría. Útil para descubrir qué tipos de datos hay disponibles (ej: 'Element', 'LcOaNode', 'Revit Type', 'Revit Element', 'IFC', etc.) antes de hacer consultas específicas.
Genera estadísticas de distribución de valores para una propiedad específica. Parámetros: categoria: nombre exacto de la categoría (ej: 'Element', 'Revit Type'), propiedad: nombre exacto de la propiedad (ej: 'Material', 'System Type'). Retorna: total de elementos, cuántos tienen la propiedad, cuántos están vacíos, número de valores únicos, y distribución ordenada por frecuencia.
Obtiene TODAS las propiedades de los elementos actualmente seleccionados en Navisworks. Devuelve cada categoría de propiedad y sus valores para hasta 20 elementos seleccionados. Incluye la ruta completa (path) de cada elemento en el árbol del modelo. Úsalo después de seleccionar elementos en Navisworks para inspeccionarlos en detalle.
Lista todos los grupos de selección existentes en el documento Navisworks. Devuelve el árbol completo: carpetas con sus grupos y el número de elementos en cada grupo. Útil para ver qué grupos ya existen antes de crear nuevos.
Obtiene información general del Timeliner del documento: si está habilitado, número de tareas, número de tipos de tareas, y lista de tareas principales.
Lista todos los tipos de tareas disponibles en el Timeliner con su información: nombre, descripción, y color.
Lista todas las tareas del Timeliner con su información: nombre, descripción, fechas de inicio/fin, duración, tipo de tarea, y estado.
Vincula una tarea del Timeliner a elementos del modelo. Parámetros: task_name es el nombre de la tarea, item_paths es una lista de rutas de elementos. Retorna el número de elementos vinculados.
Lista todas las propiedades de una categoría específica. Parámetro categoria: nombre exacto de la categoría. Retorna la lista de propiedades con información sobre cuántos elementos las tienen y ejemplos de valores.
Verifica si el plugin MCP está activo dentro de Navisworks. Úsalo primero para confirmar que hay conexión antes de otras operaciones. Retorna estado de conexión, versión del plugin y nombre de la aplicación.
Ejecuta una prueba de Clash Detective por su nombre exacto. Retorna el resultado de la ejecución y el número de choques encontrados.
Parameter descriptions include example values (e.g., 'ej: Element, Revit Type') which LLMs reuse literally. Use enum constraints instead of examples.
navis_get_clash_results combines filtering, pagination, and property enrichment in one tool. Should split into separate tools or make optional parameters truly optional with clear defaults.