IDS MCP Server
IDS MCP Server
Создание файлов buildingSMART IDS с помощью ИИ и 100% соответствием стандарту
Сервер MCP (Model Context Protocol), который позволяет AI-агентам детерминированно создавать, проверять и управлять файлами спецификаций доставки информации (IDS), полностью соответствующими стандарту buildingSMART IDS 1.0.
Возможности
✅ 100% соответствие IDS 1.0 — все экспортируемые файлы проходят проверку по официальной схеме XSD
✅ Интеграция с IfcTester — используется официальная библиотека IfcOpenShell
✅ Сессии на основе FastMCP — автоматическое управление сессиями
✅ Test-Driven Development (TDD) — покрытие кода тестами более 95%
✅ Детерминированный вывод — одинаковые входные данные всегда дают идентичный результат
✅ Типобезопасность — полная поддержка подсказок типов с проверкой Pydantic
Быстрый старт
Установка
# 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 .Использование с Claude Desktop
Добавьте в конфигурацию Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"ids-mcp": {
"command": "python",
"args": ["-m", "ids_mcp_server"],
"env": {
"IDS_LOG_LEVEL": "INFO"
}
}
}
}Программное использование
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")Доступные инструменты MCP
Управление документами
create_ids — создание нового документа IDS
load_ids — загрузка существующего IDS из файла или XML-строки
export_ids — экспорт IDS в XML с проверкой
get_ids_info — получение структуры документа и метаданных
Управление спецификациями
add_specification — добавление спецификации с версией IFC и кардинальностью
Управление фасетами
Базовые фасеты
add_entity_facet — добавление фильтра типа сущности IFC (например, IFCWALL)
add_property_facet — добавление требований к свойствам
add_attribute_facet — добавление требований к атрибутам IFC
Расширенные фасеты
add_classification_facet — добавление требований к классификации
add_material_facet — добавление требований к материалам
add_partof_facet — добавление требований к пространственным отношениям
Управление ограничениями
add_enumeration_restriction — ограничение списком допустимых значений
add_pattern_restriction — ограничение регулярным выражением
add_bounds_restriction — ограничение числовых диапазонов
add_length_restriction — ограничение длины строки
Проверка
validate_ids — проверка документа IDS по схеме XSD
validate_ifc_model — проверка модели IFC на соответствие IDS (дополнительная функция)
Предварительная проверка и контроль ограничений
Сервер MCP включает предварительную проверку для немедленного обнаружения нарушений схемы IDS 1.0 при вызове инструментов, а не во время экспорта. Это предоставляет AI-агентам четкие и понятные сообщения об ошибках.
Ограничения схемы IDS 1.0
1. Один фасет сущности на область применения
Ограничение: IDS 1.0 допускает только ОДИН фасет сущности в разделе применимости спецификации.
Предварительная проверка: Инструмент add_entity_facet проверяет это ограничение перед добавлением фасета:
# ✅ 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..."Решение: Создавайте отдельные спецификации для каждого типа сущности:
# 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. Набор свойств (Property Set) обязателен для фасетов свойств
Ограничение: IfcTester требует параметр property_set для корректного экспорта IDS.
Предварительная проверка: Инструмент add_property_facet проверяет это требование перед добавлением фасета:
# ❌ 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"
)Общие наборы свойств:
Pset_WallCommon— свойства стенPset_DoorCommon— свойства дверейPset_WindowCommon— свойства оконPset_SpaceCommon— свойства пространствPset_Common— пользовательские/общие свойства
Преимущества предварительной проверки
Мгновенная обратная связь — ошибки обнаруживаются при вызове инструмента, а не при экспорте
Понятные сообщения об ошибках — включают решения и примеры
Предотвращение невалидных состояний — документы IDS остаются корректными в процессе создания
Улучшенный опыт работы для AI-агентов — агенты получают практические рекомендации
Подробную документацию по ограничениям IDS 1.0 см. в CLAUDE.md.
Архитектура
┌─────────────────────────────────────────────┐
│ 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)Разработка
Test-Driven Development (TDD)
Этот проект строго следует методологии 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=95Рабочий процесс TDD (Red-Green-Refactor)
RED — напишите падающий тест
GREEN — реализуйте минимальный код для прохождения теста
REFACTOR — улучшите качество кода
Пример:
# 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)Качество кода
# Format code
black src/ tests/
# Lint code
ruff check src/ tests/
# Type checking (optional)
mypy src/Структура проекта
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.mdКонституционные принципы
Этот проект следует 6 незыблемым принципам:
100% соответствие схеме IDS — все экспортируемые файлы проходят проверку по XSD
Test-Driven Development — покрытие тестами 95%+, тесты пишутся до кода
Приоритет интеграции с IfcTester — никакой генерации XML вручную
Детерминированная генерация — идентичный ввод = идентичный вывод
Сессии на основе FastMCP — автоматическое управление сессиями
Лучшие практики Python — подсказки типов, PEP 8, современный Python
Полную информацию см. в constitution.md.
Документация
Конституция — незыблемые принципы
Техническая спецификация — полное техническое описание
Руководство для AI-агентов — руководство для агентов, работающих над проектом
Планы реализации — поэтапные описания требований (PRD)
Зависимости
Основные
fastmcp — фреймворк сервера MCP
ifctester — создание и проверка IDS (от IfcOpenShell)
pydantic — проверка данных
Разработка
pytest — фреймворк для тестирования
pytest-asyncio — поддержка асинхронного тестирования
pytest-cov — отчеты о покрытии кода
black — форматирование кода
ruff — линтинг
Ссылки
Стандарт IDS: https://www.buildingsmart.org/standards/bsi-standards/information-delivery-specification-ids/
Схема IDS XSD: https://standards.buildingsmart.org/IDS/1.0/ids.xsd
Документация IfcTester: https://docs.ifcopenshell.org/ifctester.html
FastMCP: https://gofastmcp.com/
buildingSMART: https://www.buildingsmart.org/
Лицензия
Лицензия MIT — подробности см. в файле LICENSE
Участие в разработке
Прочитайте constitution.md для ознакомления с принципами проекта
Следуйте методологии TDD (Red-Green-Refactor)
Обеспечьте покрытие тестами 95%+
Все экспортируемые файлы должны проходить проверку по IDS 1.0 XSD
Используйте IfcTester для всех операций с IDS
Поддержка
Проблемы (Issues): https://github.com/Quasar-Consulting-Group/ifc-ids-mcp/issues
Обсуждения: https://github.com/Quasar-Consulting-Group/ifc-ids-mcp/discussions
Статус: ✅ Реализация завершена | 94% покрытие тестами | 17 инструментов MCP | 168 тестов | Предварительная проверка
Создано с ❤️ с использованием IfcOpenShell и 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