← Projects

R&D

BIM + AI: An AI-Assisted BIM Copilot

Research & Proof-of-Concept: Agent-Orchestrated BIM Workflows In Development

Year

2026

Role

Concept, Architecture, Tool Development

Base project

Luigi Dattilo, revit-mcp-server (open-source, MIT)

Status

Concept + working proof-of-concept

Tools

Revit APIRhino.Inside.RevitGrasshopperDynamoModel Context ProtocolPythonClaude

Overview

Across this portfolio, every project is really a chain of computational-BIM steps. IFC comes in, geometry is rebuilt into native elements, parameters are mapped, schedules and a bill of quantities fall out, disciplines are clash-checked, documents are issued. Today I drive those chains by hand across Revit, Rhino.Inside.Revit, Grasshopper and Solibri. This section explores a single idea: that the same chains can be described once, as tools an AI agent calls in sequence, so the agent runs the workflow end to end while I review at the decision points.

Credit where it is due. This builds directly on the open-source Revit MCP server maintained by Luigi Dattilo (my colleague at GPA), released under the MIT licence. His project is the foundation: the server that lets an AI read and modify a live Revit model. I did not build that framework. What follows is a conceptual extension on top of it: new tools, workflows and an orchestration layer that would grow the server into a domain copilot, grounded in projects I have actually delivered. It is presented as research and proof-of-concept, not a finished product.

How it works, in plain terms

You do not need to know the internals, and neither do I claim to have written them. The idea is simple: you type what you want in plain language, Claude works out which commands to run, the MCP server passes those commands to Revit, and the result comes straight back to you.

Youa prompt Claudepicks the commands MCP serverLuigi Dattilo, MIT Revityour model the result comes back to you

Prompt in, model changes and answers back out. Everything in between is the open-source server doing the talking to Revit.

What one command looks like

An illustrative example of a single instruction becoming actions on the model, using tools that exist in the server today:

Claude + Revit · active model
Tag every room on Level 1, then make a room schedule with name, number and area.
Claude, running 2 tools on the active model
tag_all_rooms42 rooms tagged in Level 1
create_schedule"L1 Rooms" created, 42 rows
Done. I tagged all 42 rooms on Level 1 and built a schedule "L1 Rooms" with Name, Number and Area. Two rooms have no name set. Want me to flag them?

Illustrative. tag_all_rooms and create_schedule are real tools in the base server; this shows how the interaction reads, not a captured session.

A working proof of concept

The idea is only credible if a piece of it runs. The cleanest starting point comes from the SNAM project, where decades of gas-network coordinates had to become a Revit model, and where the real difficulty was that field data carried human recording errors. So the first tool is a QA gate that validates a coordinate dataset before any model is built, flagging bad records rather than silently constructing a wrong pipeline. Because this is pure geometry math it needs no Revit connection and runs today in plain Node. Given a deliberately corrupted sample, it reports:

validate_source_dataCan build todaySNAM
  16 rows checked · 15 well-formed points · 4 error(s), 2 warning(s).

  ✗ [off_route_elbow]  Row 8  (P007): elbow lies 1.80 m off the incoming pipe axis, the recorded position doesn't match the route.
  ✗ [missing_elbow]   Row 11 (P010): the route turns 90° here but the point is recorded as a pipe (BARR), not an elbow, a forgotten elbow reading.
  ✗ [missing_coord]   Row 14 (P013): missing/invalid coordinate(s): z.
  ✗ [duplicate_id]    Row 15: duplicate id "P010" (first seen row 11).
      Row 16 (P015): coordinate jumps 4930 m from the previous point (493× typical spacing), likely a mis-recorded coordinate.
    Row 15 (P010): recorded as an elbow but the route is effectively straight.

  BLOCKED, resolve the errors above before building the model.

The off_route_elbow and missing_elbow cases reproduce the exact failures the SNAM case study describes. The point is not the tool in isolation. It is that an agent can now run this check, explain each anomaly in plain language, and ask how to resolve it, as the first reviewed step of an automated "coordinates in, coordinated model out" workflow.

Proposed tools

Around twenty-seven tools, grouped into families, each anchored to a workflow already shown in this portfolio and each following the base project's existing pattern. Complexity is rated LOW (reuses existing logic), MED (real API work), HIGH (needs an in-process bridge or external service).

ToolPurposeRevit API / bridgeCxProjects
A · IFC interoperability & data-to-model
ifc_to_nativeIFC DirectShapes into quantifiable native walls/floors/ceilings, carrying their data.IFC import, DirectShape, Wall/Floor.Create, Rhino.InsideHIGHAndoraMASE
map_ifc_parametersBind IFC property sets to shared parameters on native elements.Parameter, shared-param fileMEDAndoraMASE
reconstruct_from_coordinatesBuild a pipe/elbow network from a coordinate table; connect by geometry.Pipe.Create, MEPCurve, Connector, Rhino.InsideHIGHSNAM
validate_source_dataQA a dataset before modelling: gaps, off-route elbows, outliers. (built)read-only, geometry mathMEDSNAM
B · Schedules, quantities & cost coding
generate_type_schedulesDetect every unique type used and auto-build stratigraphy schedules ("Abaco").ViewSchedule.CreateSchedule, CompoundStructureMEDMASENapoli
quantity_takeoffMaterial/element takeoff to Excel by WBS or cost code, with totals.get_material_quantities, ClosedXMLLOWMASEShusha
link_schedule_to_costStamp one shared code onto elements so time and cost stay tied to geometry.shared params, Parameter.SetMEDMASE
C · QA/QC, model checking & coordination
rule_based_clashClash test between discipline sets, auto-assigning discipline, size, severity.ElementIntersectsSolidFilter, BoundingBoxMEDAndoraMASENapoliZNM
clash_to_issuesTurn clashes into tracked CDE issues or BCF, status round-tripped.BCF schema, external ACC/APS APIHIGHAndoraMASENapoli
model_checkerRun a declarative ruleset (naming, params, containment) for pass/fail, Solibri-style.FilteredElementCollector, geometryMEDAndoraMASE
naming_standard_auditCheck names against a convention; report and optionally auto-fix.Element.Name, batch_renameLOWMASENapoli
D · Geometry rationalisation & fabrication
run_grasshopperExecute a named GH definition with inputs, write results back to Revit. The key bridge.Rhino.Inside.Revit, GH PlayerHIGHZNMShushaMemorialTour Guillot
rationalize_surfacePanelise and plan-check a freeform surface for fabrication via a GH definition.Rhino.Inside, DirectShapeHIGHZNMMemorial
planarity_reportFlag non-planar panels; report per-face normal deviation across a surface.Face, XYZ normalsMEDZNM
structural_frame_from_surfaceGenerate a hexagrid or diagrid of members and nodes on a host surface.Rhino.Inside, FamilyInstance, adaptiveHIGHShusha
E · Façade generation & building performance
parametric_facade_generateDrive a façade GH definition by parameters; instantiate panels as native families.Rhino.Inside, FamilyInstanceHIGHTour Guillot
daylight_energy_analysissDA, ASE and PV per panel via Ladybug-Honeybee or an external solver.Rhino.Inside GH, external Radiance/E+HIGHTour Guillot
surrogate_performance_predictCall a trained ANN surrogate for instant per-panel performance.external ONNX endpointMEDTour Guillot
design_option_evaluateSweep parameter sets, score against daylight, energy and cost, rank options.orchestrates façade, surrogate, takeoffHIGHTour Guillot
F · Authoring, documentation & orchestration
generate_dynamo_graphBuild a Dynamo .dyn graph from a plain-language description, so Revit automations are authored without hand-wiring nodes. A companion Claude skill writes the graph; this runs it.DynamoRevit, .dyn JSONHIGHNapoliToolkit
place_parametric_detailPlace and refresh pre-built line-based detail families that follow host geometry.FamilyInstance (line-based), detail compsHIGHTour GuillotNapoli
generate_construction_docsBatch views, sheets, viewports and tags for a room or element set.ViewSheet, Viewport, IndependentTagMEDNapoliMASE
phase_state_managerSet up existing, demolition and new phases and their views.Phase, ElementPhaseStatusMEDMASE
point_cloud_fitFit planes, levels and walls to a ReCap scan region for existing conditions.PointCloudInstance, external fittingHIGHAndora
heritage_condition_taggerAnnotate existing fabric with condition and survey data for HBIM.Parameter, IndependentTagLOWAndoraNapoli
workflow_ifc_handoverComposite: validate, ifc_to_native, map params, schedules, audit.inline workflow patternMEDAndoraMASE
project_memoryPersist coding systems and coordination state across sessions.extends store_project_data (SQLite)LOWMASEAndora

How it maps to my projects

The pattern across all eight projects is the same: the copilot never invents the method. Every enhancement wraps a technique I already built and shipped, and makes it callable, sequenced and reviewable by an agent.

Coordination · Andora

Borgo Castello

IFC-only heritage handover rebuilt into native elements, coordinated in Solibri on ACC.

Copilot: workflow_ifc_handover automates the reconstruction; heritage_condition_tagger and point_cloud_fit support the HBIM work.

Coordination · Rome

Nuova Sede MASE

IFC-to-Revit across existing, demolition and new states, schedule and cost on one shared code.

Copilot: phase_state_manager sets up the three states; link_schedule_to_cost keeps time and cost cross-referenced.

Coordination · Napoli

Ex-Mercato Ittico

Restoration of Cosenza's market hall; a studio toolkit accelerated the detailing.

Copilot: generate_construction_docs generalises the toolkit; generate_type_schedules reproduces the Abaco.

Complex geometry · Abu Dhabi

Zayed National Museum

Fractal mound envelope rationalised for fabrication, no two adjacent faces coplanar.

Copilot: rationalize_surface and planarity_report make the surface-by-surface work a repeatable pass.

Complex geometry · Italy

SNAM gas network

Spreadsheet coordinates reconstructed into a pipeline model, catching recording errors.

Copilot: validate_source_data (built) formalises the error-catching; reconstruct_from_coordinates wraps the rebuild.

Complex geometry · Shusha

New Shusha Mosque

Freeform form with steel hexagrid dome and diagrid façade, BOQ off the model.

Copilot: structural_frame_from_surface generates the members and nodes; quantity_takeoff reproduces the BOQ.

Complex geometry · Baku

Patriotic War Memorial

Perforated, doubly-curved GFRC portal reconstructed cleanly to be fabricated.

Copilot: rationalize_surface panelises the canopy; run_grasshopper drives the perforation pattern.

Façade generation · Lyon

Tour Guillot (thesis)

Six-parameter façade, optimised for daylight and PV through an ANN, translated to auto-updating detail families.

Copilot: the whole thesis becomes one loop: generate, predict, evaluate, detail. The intellectual core of this section.

Roadmap

Build today
validate_source_data (done), quantity_takeoff, generate_type_schedules, generate_construction_docs, naming_standard_audit, phase_state_manager, project_memory. Pure Revit API or composition, no bridge.
Prototype
The run_grasshopper bridge and generate_dynamo_graph, plus everything they unlock: ifc_to_native, rationalize_surface, rule_based_clash, workflow_ifc_handover, BCF export. Once one command can drive a Grasshopper definition or a Dynamo graph, most of the geometry tools follow.
Research
surrogate_performance_predict, design_option_evaluate, daylight_energy_analysis, point_cloud_fit, ACC issue integration. Each needs an external component and a validation loop.
Vision
Closed-loop generative design across performance, cost and code compliance; multi-model coordination; an on-premise model for confidential work.

Honest scope

This is a research direction, and it is stronger for naming its limits. A few worth stating plainly:

The defensible version, in one line: an AI agent that orchestrates the computational-BIM tools I have already built, in-process, with me at the review gate. Everything in the "build today" and "prototype" lanes is reachable now; the rest is labelled honestly as research and vision.