ibuilder

massing-bim

Drive a Massing BIM/AEC project from an AI agent over MCP — read a project's status, records, CDE, KPI and model-quality checks; run standards-compliance, schedule-risk, embodied-carbon, permit- readiness and drawing-QA analyses; author the IFC model with GUID-stable recipes; and draft RFIs. Use when the user asks to inspect, analyse, or author a Massing project through Claude.

ibuilder 130 52 Updated 3mo ago

Resources

3
GitHub

Install

npx skillscat add ibuilder/massing/massing-bim

Install via the SkillsCat registry.

SKILL.md

Massing over MCP

Massing exposes an offline-first MCP server (services/api/mcp_server.py)
that lets you drive a real project through the same engines the web UI and HTTP API use — every read
is grounded in the project's own data and every write goes through the identical validation, guardrail,
and audit path. You never guess from memory; you call a tool and report what it returns.

Connect

pip install "mcp[cli]"
cd services/api
PYTHONPATH=src DATABASE_URL=postgresql://… python mcp_server.py     # stdio server

Claude Desktop (claude_desktop_config.json):

{ "mcpServers": { "massing": {
    "command": "python",
    "args": ["/path/to/services/api/mcp_server.py"],
    "env": { "PYTHONPATH": "/path/to/services/api/src",
             "DATABASE_URL": "postgresql://user:pass@host/db",
             "AEC_RBAC": "1", "AEC_MCP_USER": "you@firm.com" } } } }

Set AEC_MCP_USER to the acting identity when AEC_RBAC=1: reads are then scoped to that user's member
projects and write tools require editor role — the agent can never do what the person couldn't.

Tools

Tool Kind What it does
list_projects read projects you can see (id + name)
project_snapshot read cross-module status: RFIs, submittals, COs, punch, safety, schedule + budget KPIs, risk headline
list_records read records of any module (rfi, submittal, information_container, schedule_activity, …)
cde_status read ISO 19650 CDE container discipline
bim_kpi_scorecard read the 10-category BIM KPI scorecard
openbim_quality read LOIN / IDS / export-health / bSDD (needs a loaded model)
standards_check read run iso19650 | cobie | ids | uniclass — clause-referenced findings + a readiness score
list_recipes read the authoring-coverage matrix — every recipe run_recipe can drive, by category + IFC output
schedule_risk read Monte Carlo P10/P50/P80/P90 completion, criticality index, delay drivers
carbon_report read A1–A3 embodied carbon per element + Buy Clean limits + LEED inventory (needs a model)
permit_readiness read submission-readiness over egress + approvability + code analysis + sheet coverage (needs a model)
drawing_qa read drawing-set QA — duplicate/gap numbers, titleblock, issuance hygiene, model cross-checks
create_rfi write create an RFI
run_recipe write drive a GUID-stable authoring recipe (add_wall, add_column, set_pset, …), saving an audited version

Workflows

Detailed, copy-ready playbooks live alongside this file:

  • `draft-rfi.md` — turn a coordination question into a well-formed RFI grounded in the model.
  • `run-takeoff.md` — pull quantities, cost and carbon signals for an estimate or a check.
  • `drive-a-recipe.md` — author the model safely: discover recipes, precheck params, apply, then publish.

Ground rules for the agent

  1. Read before you write. Snapshot the project (or list the relevant records) before creating an RFI
    or editing the model, so your action references real GUIDs, sheet numbers, and current state.
  2. run_recipe saves a new IFC version but does not reconvert. After a batch of edits, tell the user
    the model needs a publish (the normal reconvert flow) for the viewer/index to reflect them.
  3. Author with GUID-stable recipes only. Never fabricate a GUID or hand-write IFC; call list_recipes
    to see what's available and run_recipe to apply it.
  4. Respect the compliance boundary. Money movement, KYC, and paid third-party bridges are deliberately
    not exposed — don't try to route around them.
  5. Report the tool's own numbers. If a model isn't loaded, the analysis tools return a clear
    "no model loaded" signal — surface that rather than inventing a result.