Uses Pydantic for data validation and type-safe model definitions throughout the IDS file creation and management process
Employs Pytest as the testing framework with 168 tests achieving 94% code coverage for validation and quality assurance
Built with Python 3.8+ as the core implementation language with full type hints and modern Python best practices
Utilizes Ruff for code linting to maintain code quality standards
IDS MCP Server
AI-powered creation of buildingSMART IDS files with 100% compliance
An MCP (Model Context Protocol) server that enables AI agents to deterministically create, validate, and manage Information Delivery Specification (IDS) files that are fully compliant with the buildingSMART IDS 1.0 standard.
Features
✅ 100% IDS 1.0 Compliant - All exports validate against official XSD schema
✅ IfcTester Integration - Uses the official IfcOpenShell library
✅ FastMCP Context-Based Sessions - Automatic session management
✅ Test-Driven Development - 95%+ code coverage with comprehensive tests
✅ Deterministic Output - Same input always produces identical output
✅ Type-Safe - Full type hints with Pydantic validation
Quick Start
Installation
Usage with Claude Desktop
Add to your Claude Desktop configuration (claude_desktop_config.json):
Programmatic Usage
Available MCP Tools
Document Management
create_ids - Create new IDS document
load_ids - Load existing IDS from file or XML string
export_ids - Export IDS to XML with validation
get_ids_info - Get document structure and metadata
Specification Management
add_specification - Add specification with IFC version and cardinality
Facet Management
Basic Facets
add_entity_facet - Add IFC entity type filter (e.g., IFCWALL)
add_property_facet - Add property requirements
add_attribute_facet - Add IFC attribute requirements
Advanced Facets
add_classification_facet - Add classification requirements
add_material_facet - Add material requirements
add_partof_facet - Add spatial relationship requirements
Restriction Management
add_enumeration_restriction - Constrain to list of valid values
add_pattern_restriction - Constrain with regex pattern
add_bounds_restriction - Constrain numeric ranges
add_length_restriction - Constrain string length
Validation
validate_ids - Validate IDS document against XSD schema
validate_ifc_model - Validate IFC model against IDS (bonus feature)
Early Validation & Constraint Checking
The MCP server includes early validation to catch IDS 1.0 schema violations immediately when tools are called, rather than waiting until export time. This provides AI agents with clear, actionable error messages.
IDS 1.0 Schema Constraints
1. Single Entity Facet per Applicability
Constraint: IDS 1.0 allows only ONE entity facet per specification's applicability section.
Early Validation: The add_entity_facet tool validates this constraint before adding the facet:
Workaround: Create separate specifications for each entity type:
2. Property Set Required for Property Facets
Constraint: IfcTester requires property_set parameter for valid IDS export.
Early Validation: The add_property_facet tool validates this requirement before adding the facet:
Common Property Sets:
Pset_WallCommon- Wall propertiesPset_DoorCommon- Door propertiesPset_WindowCommon- Window propertiesPset_SpaceCommon- Space propertiesPset_Common- Custom/generic properties
Benefits of Early Validation
Immediate Feedback - Errors caught at tool invocation, not export time
Clear Error Messages - Includes workarounds and examples
Prevents Invalid States - IDS documents stay valid throughout creation
Better AI Agent Experience - Agents receive actionable guidance
See CLAUDE.md for detailed documentation on IDS 1.0 constraints.
Architecture
Development
Test-Driven Development
This project strictly follows TDD methodology:
TDD Workflow (Red-Green-Refactor)
RED - Write failing test
GREEN - Implement minimum code to pass
REFACTOR - Improve code quality
Example:
Code Quality
Project Structure
Constitution Principles
This project follows 6 non-negotiable principles:
100% IDS Schema Compliance - All exports validate against XSD
Test-Driven Development - 95%+ coverage, tests before code
IfcTester Integration First - No custom XML generation
Deterministic Generation - Identical input = identical output
FastMCP Context-Based Sessions - Automatic session management
Python Best Practices - Type hints, PEP 8, modern Python
See constitution.md for full details.
Documentation
Constitution - Non-negotiable principles
Design Specification - Complete technical design
AI Agent Guide - Guide for AI agents working on this project
Implementation Plans - Phase-by-phase PRDs
Dependencies
Core
fastmcp - MCP server framework
ifctester - IDS authoring and validation (from IfcOpenShell)
pydantic - Data validation
Development
pytest - Testing framework
pytest-asyncio - Async test support
pytest-cov - Coverage reporting
black - Code formatting
ruff - Linting
References
IDS Standard: https://www.buildingsmart.org/standards/bsi-standards/information-delivery-specification-ids/
IDS XSD Schema: https://standards.buildingsmart.org/IDS/1.0/ids.xsd
IfcTester Docs: https://docs.ifcopenshell.org/ifctester.html
FastMCP: https://gofastmcp.com/
buildingSMART: https://www.buildingsmart.org/
License
MIT License - see LICENSE file for details
Contributing
Read constitution.md for project principles
Follow TDD methodology (Red-Green-Refactor)
Ensure 95%+ test coverage
All exports must validate against IDS 1.0 XSD
Use IfcTester for all IDS operations
Support
Issues: https://github.com/Quasar-Consulting-Group/ifc-ids-mcp/issues
Discussions: https://github.com/Quasar-Consulting-Group/ifc-ids-mcp/discussions
Status: ✅ Implementation Complete | 94% Test Coverage | 17 MCP Tools | 168 Tests | Early Validation
Built with ❤️ using IfcOpenShell and FastMCP
local-only server
The server can only run on the client's local machine because it depends on local resources.
Tools
Enables AI agents to create, validate, and manage buildingSMART IDS (Information Delivery Specification) files with 100% compliance to the IDS 1.0 standard using IfcOpenShell's IfcTester library.