MCP server for MEPBridge ACAIstr that exposes MEP (Mechanical, Electrical, Plumbing) design tools via the Model Context Protocol. Automatically generates MCP tools from tool-descriptors.json and routes tool calls to Archicad JSON API via Node.js backend.
MEPBridge server has 13 tools with basic schemas and descriptions, but significant quality gaps prevent production use. Tool names lack action verbs (e.g., 'MEPBridge.MoveElements' instead of 'move_elements'). Descriptions are present but generic (avg ~80 chars, below 194-char baseline). Input schemas exist but lack depth: most parameters have type and description, but no enums for constrained values (e.g., 'system_type' accepts free-form strings like 'FreshAir' with no validation). Output schemas are completely undocumented, LLMs cannot predict response structure. Error handling is absent from visible code. No evidence of idempotency, pagination, or composition patterns. Read-only tools (10 of 13) lack clear discovery guidance. Write tools (MoveElements, CreatePipe) have no confirmation/dry-run pattern.
Create structural conduit line in MEP system. Scans surrounding structures for clearance, creates pipe segments with specified parameters, and verifies physical layout bounds.
Retrieve all available MEP reference sizes and sizing sets.
Retrieve all available MEP systems (piping, ductwork, cabling) from the project.
Retrieve all classification systems and items from the project.
Retrieve property definitions for a specific element.
Retrieve all favorite objects from the project library.
Tool names do not follow verb_noun convention. All 13 tools use 'MEPBridge.VerbNoun' format instead of lowercase 'verb_noun' (e.g., 'move_elements', 'get_project_info'). LLMs parse intent from names, non-standard naming increases disambiguation errors.
No output schemas documented. LLMs cannot predict response structure for any tool. This violates the 'Document the output schema' critical check and prevents downstream tool chaining. Example: CreatePipe returns what? A pipe_id? Coordinates? Status?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Retrieve all layers from the Archicad project.
Retrieve all available libraries in the Archicad project.
Retrieve all available profiles in the project.
Retrieve project information including metadata and configuration from Archicad.
Retrieve all stories/floors from the Archicad project.
Move/shift MEP elements while preventing load-bearing wall penetrations. Scans surrounding structures, re-routes conduits with automatic branch angle compensation, and verifies coordinates.
Query and read attributes from selected elements. Extracts thermal properties, dimensions, and other physical characteristics without modifying the model.
Constrained parameters use free-form strings instead of enums. 'system_type' in CreatePipe accepts 'FreshAir', 'HotWater', 'ColdWater' but no enum constraint, LLMs will hallucinate invalid values. 'domain' in GetAvailableSystems similarly unconstrained.
Write tools (MoveElements, CreatePipe) lack confirmation/dry-run pattern. No evidence of 'confirm_before_execute' or preview capability. Agents can trigger irreversible MEP model changes without user approval.
Discovery tools (Get*) lack pagination. No limit, offset, or cursor parameters visible. If GetLibraries or GetAvailableSystems returns hundreds of items, context window exhaustion and token waste result. Baseline pattern requires pagination for list tools.