IDS MCP Server
Servidor MCP IDS
Creación de archivos IDS de buildingSMART impulsada por IA con un 100% de cumplimiento
Un servidor MCP (Model Context Protocol) que permite a los agentes de IA crear, validar y gestionar de forma determinista archivos de Especificación de Entrega de Información (IDS) que cumplen totalmente con el estándar IDS 1.0 de buildingSMART.
Características
✅ 100% compatible con IDS 1.0 - Todas las exportaciones se validan contra el esquema XSD oficial
✅ Integración con IfcTester - Utiliza la biblioteca oficial de IfcOpenShell
✅ Sesiones basadas en contexto FastMCP - Gestión automática de sesiones
✅ Desarrollo guiado por pruebas (TDD) - Más del 95% de cobertura de código con pruebas exhaustivas
✅ Salida determinista - La misma entrada siempre produce una salida idéntica
✅ Seguridad de tipos - Sugerencias de tipo completas con validación Pydantic
Inicio rápido
Instalación
# Clone repository
git clone https://github.com/Quasar-Consulting-Group/ifc-ids-mcp.git
cd ifc-ids-mcp
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .Uso con Claude Desktop
Añadir a la configuración de Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"ids-mcp": {
"command": "python",
"args": ["-m", "ids_mcp_server"],
"env": {
"IDS_LOG_LEVEL": "INFO"
}
}
}
}Uso programático
from ifctester import ids
# The MCP server handles this automatically via tools
# But you can also use IfcTester directly:
# Create new IDS
my_ids = ids.Ids(title="Project Requirements")
# Add specification
spec = ids.Specification(name="Wall Requirements", ifcVersion=["IFC4"])
spec.applicability.append(ids.Entity(name="IFCWALL"))
requirement = ids.Property(
baseName="FireRating",
propertySet="Pset_WallCommon",
cardinality="required"
)
spec.requirements.append(requirement)
my_ids.specifications.append(spec)
# Export to XML
my_ids.to_xml("requirements.ids")Herramientas MCP disponibles
Gestión de documentos
create_ids - Crear nuevo documento IDS
load_ids - Cargar IDS existente desde un archivo o cadena XML
export_ids - Exportar IDS a XML con validación
get_ids_info - Obtener la estructura y metadatos del documento
Gestión de especificaciones
add_specification - Añadir especificación con versión IFC y cardinalidad
Gestión de facetas
Facetas básicas
add_entity_facet - Añadir filtro de tipo de entidad IFC (p. ej., IFCWALL)
add_property_facet - Añadir requisitos de propiedad
add_attribute_facet - Añadir requisitos de atributo IFC
Facetas avanzadas
add_classification_facet - Añadir requisitos de clasificación
add_material_facet - Añadir requisitos de material
add_partof_facet - Añadir requisitos de relación espacial
Gestión de restricciones
add_enumeration_restriction - Restringir a una lista de valores válidos
add_pattern_restriction - Restringir con patrón regex
add_bounds_restriction - Restringir rangos numéricos
add_length_restriction - Restringir la longitud de la cadena
Validación
validate_ids - Validar documento IDS contra el esquema XSD
validate_ifc_model - Validar modelo IFC contra IDS (función adicional)
Validación temprana y comprobación de restricciones
El servidor MCP incluye validación temprana para detectar violaciones del esquema IDS 1.0 inmediatamente cuando se llaman a las herramientas, en lugar de esperar hasta el momento de la exportación. Esto proporciona a los agentes de IA mensajes de error claros y procesables.
Restricciones del esquema IDS 1.0
1. Una sola faceta de entidad por aplicabilidad
Restricción: IDS 1.0 permite solo UNA faceta de entidad por sección de aplicabilidad de la especificación.
Validación temprana: La herramienta add_entity_facet valida esta restricción antes de añadir la faceta:
# ✅ CORRECT: First entity facet
add_entity_facet(spec_id="S1", location="applicability", entity_name="IFCWALL")
# ❌ INCORRECT: Second entity facet raises ToolError immediately
add_entity_facet(spec_id="S1", location="applicability", entity_name="IFCDOOR")
# Error: "IDS 1.0 XSD constraint violation: Only ONE entity facet is allowed..."Solución alternativa: Crear especificaciones separadas para cada tipo de entidad:
# Specification 1: Walls
add_specification(name="Wall Requirements", ifc_versions=["IFC4"], identifier="S1")
add_entity_facet(spec_id="S1", location="applicability", entity_name="IFCWALL")
# Specification 2: Doors
add_specification(name="Door Requirements", ifc_versions=["IFC4"], identifier="S2")
add_entity_facet(spec_id="S2", location="applicability", entity_name="IFCDOOR")2. Conjunto de propiedades requerido para facetas de propiedad
Restricción: IfcTester requiere el parámetro property_set para una exportación IDS válida.
Validación temprana: La herramienta add_property_facet valida este requisito antes de añadir la faceta:
# ❌ INCORRECT: Missing property_set raises ToolError immediately
add_property_facet(
spec_id="S1",
location="requirements",
property_name="FireRating"
)
# Error: "Property facet validation error: 'property_set' parameter is required..."
# ✅ CORRECT: Include property_set parameter
add_property_facet(
spec_id="S1",
location="requirements",
property_name="FireRating",
property_set="Pset_WallCommon"
)Conjuntos de propiedades comunes:
Pset_WallCommon- Propiedades de muroPset_DoorCommon- Propiedades de puertaPset_WindowCommon- Propiedades de ventanaPset_SpaceCommon- Propiedades de espacioPset_Common- Propiedades personalizadas/genéricas
Beneficios de la validación temprana
Retroalimentación inmediata - Los errores se detectan al invocar la herramienta, no al exportar
Mensajes de error claros - Incluye soluciones alternativas y ejemplos
Previene estados inválidos - Los documentos IDS permanecen válidos durante toda la creación
Mejor experiencia para el agente de IA - Los agentes reciben orientación procesable
Consulte CLAUDE.md para obtener documentación detallada sobre las restricciones de IDS 1.0.
Arquitectura
┌─────────────────────────────────────────────┐
│ AI Agent (Claude, GPT) │
└────────────────────┬────────────────────────┘
│ MCP Protocol
┌────────────────────▼────────────────────────┐
│ FastMCP Server │
│ ┌──────────────────────────────────────┐ │
│ │ MCP Tools (15+ tools) │ │
│ └───────────────┬──────────────────────┘ │
│ ┌───────────────▼──────────────────────┐ │
│ │ Session Manager (Context) │ │
│ └───────────────┬──────────────────────┘ │
│ ┌───────────────▼──────────────────────┐ │
│ │ IfcTester Integration (IDS Engine) │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
│
▼
IDS XML File (100% XSD compliant)Desarrollo
Desarrollo guiado por pruebas (TDD)
Este proyecto sigue estrictamente la metodología TDD:
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=src/ids_mcp_server --cov-report=html
# Run specific test category
pytest tests/unit/ -v # Unit tests
pytest tests/integration/ -v # Integration tests
pytest tests/validation/ -v # XSD validation tests
# Must maintain 95%+ coverage
pytest tests/ --cov-fail-under=95Flujo de trabajo TDD (Red-Green-Refactor)
RED - Escribir una prueba que falle
GREEN - Implementar el código mínimo para pasarla
REFACTOR - Mejorar la calidad del código
Ejemplo:
# RED: Write failing test
def test_create_specification():
result = add_specification(name="Test", ifc_versions=["IFC4"])
assert result["status"] == "success"
# GREEN: Implement
def add_specification(name, ifc_versions):
return {"status": "success"}
# REFACTOR: Improve (keep tests passing)Calidad del código
# Format code
black src/ tests/
# Lint code
ruff check src/ tests/
# Type checking (optional)
mypy src/Estructura del proyecto
ifc-ids-mcp/
├── src/
│ └── ids_mcp_server/
│ ├── __init__.py
│ ├── __main__.py
│ ├── server.py # FastMCP server
│ ├── config.py # Configuration
│ ├── version.py # Version management
│ ├── session/ # Session management
│ │ ├── manager.py
│ │ ├── storage.py
│ │ ├── cleanup.py
│ │ └── models.py # Session data models
│ └── tools/ # MCP tools (17 total)
│ ├── document.py
│ ├── specification.py
│ ├── facets.py
│ ├── restrictions.py # Phase 007
│ ├── validation.py # Phase 008
│ └── validators.py # Early validation helpers
├── tests/ # 168 tests, 94% coverage
│ ├── unit/ # Unit tests
│ ├── component/ # Component tests
│ ├── integration/ # Integration tests
│ └── validation/ # XSD compliance tests
│ └── fixtures/ # Test fixtures
├── samples/ # Sample IDS/IFC files
│ ├── wall_fire_rating.ids
│ └── walls-fire-rating.ifc
├── specs/ # Implementation plans (PRDs)
├── .mcp.json # MCP server configuration
├── .coveragerc # Coverage configuration
├── constitution.md # Project principles
├── DESIGN_SPECIFICATION.md # Technical specification
├── CLAUDE.md # AI agent guide
├── pyproject.toml
├── pytest.ini
└── README.mdPrincipios de la constitución
Este proyecto sigue 6 principios innegociables:
100% cumplimiento del esquema IDS - Todas las exportaciones se validan contra XSD
Desarrollo guiado por pruebas - Más del 95% de cobertura, pruebas antes que código
Integración prioritaria con IfcTester - Sin generación de XML personalizada
Generación determinista - Entrada idéntica = salida idéntica
Sesiones basadas en contexto FastMCP - Gestión automática de sesiones
Buenas prácticas de Python - Sugerencias de tipo, PEP 8, Python moderno
Consulte constitution.md para obtener todos los detalles.
Documentación
Constitución - Principios innegociables
Especificación de diseño - Diseño técnico completo
Guía para agentes de IA - Guía para agentes de IA que trabajan en este proyecto
Planes de implementación - PRD fase por fase
Dependencias
Núcleo
fastmcp - Marco de trabajo del servidor MCP
ifctester - Creación y validación de IDS (de IfcOpenShell)
pydantic - Validación de datos
Desarrollo
pytest - Marco de trabajo de pruebas
pytest-asyncio - Soporte para pruebas asíncronas
pytest-cov - Informes de cobertura
black - Formato de código
ruff - Linting
Referencias
Estándar IDS: https://www.buildingsmart.org/standards/bsi-standards/information-delivery-specification-ids/
Esquema XSD de IDS: https://standards.buildingsmart.org/IDS/1.0/ids.xsd
Documentación de IfcTester: https://docs.ifcopenshell.org/ifctester.html
FastMCP: https://gofastmcp.com/
buildingSMART: https://www.buildingsmart.org/
Licencia
Licencia MIT - consulte el archivo LICENSE para obtener más detalles
Contribución
Lea constitution.md para conocer los principios del proyecto
Siga la metodología TDD (Red-Green-Refactor)
Asegure una cobertura de pruebas superior al 95%
Todas las exportaciones deben validarse contra el XSD de IDS 1.0
Utilice IfcTester para todas las operaciones IDS
Soporte
Problemas: https://github.com/Quasar-Consulting-Group/ifc-ids-mcp/issues
Debates: https://github.com/Quasar-Consulting-Group/ifc-ids-mcp/discussions
Estado: ✅ Implementación completa | 94% de cobertura de pruebas | 17 herramientas MCP | 168 pruebas | Validación temprana
Creado con ❤️ usando IfcOpenShell y FastMCP
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vinnividivicci/ifc-ids-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server