🚀 IDS MCPサーバー
AIを搭載したbuildingSMART IDSファイルの100%準拠作成
AIエージェントが、buildingSMART IDS 1.0標準に完全に準拠した情報配信仕様(IDS)ファイルを決定論的に作成、検証、管理できるMCP(モデルコンテキストプロトコル)サーバーです。

✨ 主な機能
- ✅ 100% IDS 1.0準拠 - すべてのエクスポートは公式のXSDスキーマに対して検証されます。
- ✅ IfcTester統合 - 公式のIfcOpenShellライブラリを使用しています。
- ✅ FastMCPコンテキストベースのセッション - 自動セッション管理が可能です。
- ✅ テスト駆動開発 - 包括的なテストにより95%以上のコードカバレッジを達成しています。
- ✅ 決定論的出力 - 同じ入力は常に同じ出力を生成します。
- ✅ 型安全 - Pydantic検証による完全な型ヒントがあります。
🚀 クイックスタート
📦 インストール
git clone https://github.com/Quasar-Consulting-Group/ifc-ids-mcp.git
cd ifc-ids-mcp
pip install -r requirements.txt
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
my_ids = ids.Ids(title="Project Requirements")
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)
my_ids.to_xml("requirements.ids")
利用可能なMCPツール
ドキュメント管理
- create_ids - 新しいIDSドキュメントを作成します。
- load_ids - ファイルまたはXML文字列から既存のIDSを読み込みます。
- 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では、各仕様の適用性セクションに1つのエンティティファセットのみが許可されています。
早期検証: add_entity_facetツールは、ファセットを追加する前にこの制約を検証します。
add_entity_facet(spec_id="S1", location="applicability", entity_name="IFCWALL")
add_entity_facet(spec_id="S1", location="applicability", entity_name="IFCDOOR")
回避策: 各エンティティタイプに対して個別の仕様を作成します。
add_specification(name="Wall Requirements", ifc_versions=["IFC4"], identifier="S1")
add_entity_facet(spec_id="S1", location="applicability", entity_name="IFCWALL")
add_specification(name="Door Requirements", ifc_versions=["IFC4"], identifier="S2")
add_entity_facet(spec_id="S2", location="applicability", entity_name="IFCDOOR")
2. プロパティファセットにはプロパティセットが必要
制約: IfcTesterは、有効なIDSエクスポートにproperty_setパラメータを必要とします。
早期検証: add_property_facetツールは、ファセットを追加する前にこの要件を検証します。
add_property_facet(
spec_id="S1",
location="requirements",
property_name="FireRating"
)
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)
開発
テスト駆動開発
このプロジェクトはTDD方法論に厳密に従っています。
pytest tests/ -v
pytest tests/ --cov=src/ids_mcp_server --cov-report=html
pytest tests/unit/ -v
pytest tests/integration/ -v
pytest tests/validation/ -v
pytest tests/ --cov-fail-under=95
TDDワークフロー(Red-Green-Refactor)
- RED - 失敗するテストを書きます。
- GREEN - テストをパスするための最小限のコードを実装します。
- REFACTOR - コード品質を向上させます。
例:
def test_create_specification():
result = add_specification(name="Test", ifc_versions=["IFC4"])
assert result["status"] == "success"
def add_specification(name, ifc_versions):
return {"status": "success"}
コード品質
black src/ tests/
ruff check src/ tests/
mypy src/
プロジェクト構造
ifc-ids-mcp/
├── src/
│ └── ids_mcp_server/
│ ├── __init__.py
│ ├── __main__.py
│ ├── server.py # FastMCPサーバー
│ ├── config.py # 設定
│ ├── version.py # バージョン管理
│ ├── session/ # セッション管理
│ │ ├── manager.py
│ │ ├── storage.py
│ │ ├── cleanup.py
│ │ └── models.py # セッションデータモデル
│ └── tools/ # MCPツール(合計17個)
│ ├── document.py
│ ├── specification.py
│ ├── facets.py
│ ├── restrictions.py # Phase 007
│ ├── validation.py # Phase 008
│ └── validators.py # 早期検証ヘルパー
├── tests/ # 168個のテスト、94%のカバレッジ
│ ├── unit/ # 単体テスト
│ ├── component/ # コンポーネントテスト
│ ├── integration/ # 統合テスト
│ └── validation/ # XSD検証テスト
│ └── fixtures/ # テストフィクスチャ
├── samples/ # サンプルIDS/IFCファイル
│ ├── wall_fire_rating.ids
│ └── walls-fire-rating.ifc
├── specs/ # 実装計画(PRD)
├── .mcp.json # MCPサーバー設定
├── .coveragerc # カバレッジ設定
├── constitution.md # プロジェクトの原則
├── DESIGN_SPECIFICATION.md # 技術仕様
├── CLAUDE.md # AIエージェントガイド
├── pyproject.toml
├── pytest.ini
└── README.md
憲章原則
このプロジェクトは6つの非妥協的な原則に従っています。
- 100% IDSスキーマ準拠 - すべてのエクスポートはXSDに対して検証されます。
- テスト駆動開発 - 95%以上のカバレッジ、コードの前にテストを書きます。
- IfcTester統合を優先 - カスタムXML生成は行いません。
- 決定論的生成 - 同じ入力は同じ出力を生成します。
- FastMCPコンテキストベースのセッション - 自動セッション管理が可能です。
- Pythonのベストプラクティス - 型ヒント、PEP 8、最新のPythonを使用します。
詳細はconstitution.mdを参照してください。
ドキュメント
- Constitution - 非妥協的な原則
- Design Specification - 完全な技術設計
- AI Agent Guide - このプロジェクトで作業するAIエージェントのガイド
- Implementation Plans - 段階的なPRD
依存関係
コア
- fastmcp - MCPサーバーフレームワーク
- ifctester - IDSの作成と検証(IfcOpenShellから)
- pydantic - データ検証
開発
- pytest - テストフレームワーク
- pytest-asyncio - 非同期テストサポート
- pytest-cov - カバレッジレポート
- black - コードフォーマット
- ruff - リント
参考文献
- 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/
📄 ライセンス
MITライセンス - 詳細はLICENSEファイルを参照してください。
コントリビューション
- プロジェクトの原則についてconstitution.mdを読んでください。
- TDD方法論(Red-Green-Refactor)に従ってください。
- 95%以上のテストカバレッジを確保してください。
- すべてのエクスポートはIDS 1.0 XSDに対して検証されなければなりません。
- すべてのIDS操作にIfcTesterを使用してください。
サポート
- 問題報告: 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 を使って❤️ で作られました。