loading…
Search for a command to run...
loading…
Enables users to search and navigate over 22,500 indexed sections across 16 Canadian building codes and user guides. It supports keyword searches, hierarchy nav
Enables users to search and navigate over 22,500 indexed sections across 16 Canadian building codes and user guides. It supports keyword searches, hierarchy navigation, and optional full-text extraction from user-provided PDF documents.
PyPI version License: MIT Smithery
AI-powered search for 24,000+ Canadian building code sections.
Enable AI assistants to search, navigate, and cite building regulations across NBC, OBC, BCBC, and 13 other Canadian codes.
Works with Claude Desktop and any MCP-compatible client (Cursor, Windsurf, etc.)
Architects and engineers waste hours searching through thousands of pages of building codes. This MCP server lets AI do the heavy lifting:
You: "What are the fire separation requirements for a 3-storey
residential building in Saskatchewan?"
Claude: [Searches NBC 2025, finds relevant sections, extracts text]
"According to NBC 2025 Section 3.2.2.55, Group C buildings
up to 3 storeys with sprinklers require:
- Maximum area: 1,800 m²
- Floor assemblies: 45-min fire-resistance rating
- Load-bearing walls: Same rating as supported assembly"
| Feature | Description |
|---|---|
| 24,000+ Sections | NBC, OBC, BCBC, ABC, QCC + 11 more codes indexed |
| Smart Search | Fuzzy matching, synonyms, "Did you mean?" suggestions |
| Token Optimized | 81% reduction vs naive approach (v1.2.0) |
| Copyright Safe | BYOD model - coordinates only, you provide the PDF |
| Jurisdiction Aware | Knows which code applies where (ON→OBC, BC→BCBC) |
┌─────────────────────────────────────────────────────────────┐
│ MCP Client (Claude, Cursor, etc.) │
└─────────────────────────┬───────────────────────────────────┘
│ MCP Protocol
▼
┌─────────────────────────────────────────────────────────────┐
│ Building Code MCP Server │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ search_code │ │ get_section │ │ get_table │ │
│ │ (fuzzy+TF-IDF│ │ (BYOD text) │ │ (markdown) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ maps/*.json (15.9 MB) │ │
│ │ Section IDs, pages, keywords, bbox │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ▼ (BYOD mode only) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ User's PDF (via PyMuPDF) │ │
│ │ Text extraction at runtime │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Two Modes:
set_pdf_path for full text extraction.# Install uv (one-time)
pip install uv
Add to claude_desktop_config.json:
{
"mcpServers": {
"building-code": {
"command": "uvx",
"args": ["building-code-mcp"]
}
}
}
pip install building-code-mcp
{
"mcpServers": {
"building-code": {
"command": "building-code-mcp"
}
}
}
You: "I'm designing a 6-storey office building in Vancouver.
What are the fire separation requirements?"
Claude: Let me search the BC Building Code...
[Uses search_code("fire separation office", code="BCBC")]
[Uses get_section("3.2.2.57", code="BCBC")]
Based on BCBC 2024 Section 3.2.2.57, a 6-storey Group D
(business) building requires:
- Sprinkler system: Required
- Floor assemblies: 1-hour fire-resistance rating
- Maximum building area: 7,200 m²
You: "What does OBC section 9.10.14.1 say about spatial separation?"
Claude: [Uses get_section("9.10.14.1", code="OBC_Vol1")]
OBC Section 9.10.14.1 - Spatial Separation Between Buildings:
"Buildings on the same property shall have spatial separation
between them based on the aggregate area of unprotected openings
in exposing building faces..."
You: "Which building code applies in Calgary?"
Claude: [Uses get_applicable_code("Calgary, Alberta")]
Calgary follows the Alberta Building Code (ABC) 2023.
Primary codes: ABC, AFC (Fire), APC (Plumbing)
Also check: National codes (NBC, NFC) for reference
NBC 2025, NFC 2025, NPC 2025, NECB 2025
IUGP9 (Part 9 Housing), UGP4 (Structural), UGNECB (Energy)
Total: 24,000+ indexed sections
Built-in optimizations reduce token usage:
| Optimization | Reduction |
|---|---|
list_codes compact mode |
81% |
disclaimer as resource |
61% |
Default verbose=false |
~50% |
Best practice: Use limit=5-10 and only request verbose=true when needed.
See Token Efficiency Guide for details.
| Tool | Purpose |
|---|---|
list_codes |
Show available codes and connection status |
search_code |
Find sections by keywords |
get_section |
Get section details (page, citation, text) |
get_table |
Get table content as markdown |
get_hierarchy |
Navigate parent/child sections |
verify_section |
Check if section ID exists |
get_applicable_code |
Find codes for a location |
set_pdf_path |
Connect PDF for text extraction |
REST API: https://canada-aec-code-mcp.onrender.com
curl https://canada-aec-code-mcp.onrender.com/search/fire+separation
Note: Hosted API runs in Map-Only mode. Use local MCP for full text.
git clone https://github.com/DavidCho1999/Canada_building_code_mcp.git
cd Canada_building_code_mcp
pip install -e ".[all]"
python src/mcp_server.py
MIT License - See LICENSE
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"canadian-building-code-mcp-server": {
"command": "npx",
"args": []
}
}
}