Skip to main content
Glama
DavidCho1999

Canadian Building Code MCP Server

by DavidCho1999

Canadian Building Code MCP

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.)


Why This Exists

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"

Features

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)


Architecture

┌─────────────────────────────────────────────────────────────┐ │ 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:

  • Map-Only (default): Returns page numbers & coordinates. No PDF needed.

  • BYOD: Connect your PDF via set_pdf_path for full text extraction.


Quick Start (1 minute)

# Install uv (one-time) pip install uv

Add to claude_desktop_config.json:

{ "mcpServers": { "building-code": { "command": "uvx", "args": ["building-code-mcp"] } } }

Option 2: pip

pip install building-code-mcp
{ "mcpServers": { "building-code": { "command": "building-code-mcp" } } }

Example Conversations

Finding Requirements

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²

Checking Specific Sections

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..."

Jurisdiction Lookup

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

Supported Codes

National Codes (4)

NBC 2025, NFC 2025, NPC 2025, NECB 2025

Provincial Codes (9)

  • Ontario: OBC 2024 (Vol 1 & 2), OFC

  • British Columbia: BCBC 2024

  • Alberta: ABC 2023

  • Quebec: QCC, QECB, QPC, QSC (2020)

User's Guides (3)

IUGP9 (Part 9 Housing), UGP4 (Structural), UGNECB (Energy)

Total: 24,000+ indexed sections


Token Efficiency (v1.2.0)

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.


Tools Available

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


API Access

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.


Development

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

License

MIT License - See LICENSE


Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

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/DavidCho1999/Canada-AEC-Code-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server