bsdd-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bsdd-mcp What properties does IfcWall have?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bsdd-mcp
An MCP server that gives an AI assistant read-only access to the buildingSMART Data Dictionary (bSDD) — the shared library of construction classifications (IFC, ETIM, Uniclass, national dictionaries, …), their classes, properties, units and relations.
It talks to the public bSDD API at https://api.bsdd.buildingsmart.org. No account, API key or
login is needed: every endpoint used here is part of the unsecured, public API.
Install
git clone <this repo>
cd bsdd-mcp
npm install # builds automatically via the prepare scriptRelated MCP server: IFCX MCP
Use it with Claude Code
claude mcp add bsdd -- node /absolute/path/to/bsdd-mcp/dist/index.jsUse it with Claude Cowork / Claude Desktop
Cowork installs local MCP servers as .mcpb bundles. Build one:
npm run bundle # -> build/bsdd-mcp-<version>.mcpbThe bundle is self-contained (compiled server + production dependencies), so it does not
depend on this checkout after installation. Install it from Settings → Connectors →
Install extension… and pick the .mcpb file. Local MCP servers run natively on your
machine, not inside the Cowork sandbox, so the server reaches the bSDD API over your normal
network connection.
If your workplace disables desktop extensions, add the server by hand instead under Settings → Developer → Local MCP servers:
{
"mcpServers": {
"bsdd": {
"command": "node",
"args": ["C:\\path\\to\\bsdd-mcp\\dist\\index.js"]
}
}
}Use it with any other MCP client
Add this to the client's MCP configuration (claude_desktop_config.json for Claude Desktop):
{
"mcpServers": {
"bsdd": {
"command": "node",
"args": ["C:\\path\\to\\bsdd-mcp\\dist\\index.js"]
}
}
}Tools
Tool | What it does | bSDD endpoint |
| List/filter the published dictionaries |
|
| Browse the classes of one dictionary (flat or nested) |
|
| Browse the properties of one dictionary |
|
| Free-text class search across dictionaries |
|
| Free-text search returning classes and properties |
|
| Class details, optionally with child classes and relations |
|
| The properties of a class, with data types and units |
|
| Forward or reverse relations of a class |
|
| Property details |
|
| Which classes use a property |
|
| Details of one value of an enumeration |
|
| Countries, languages, units or reference documents |
|
All tools are read-only and annotated as such.
Typical flow
bsdd_list_dictionaries— find the dictionary URI you need. URIs always contain a version, e.g.https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3; the version can be replaced bylatest.bsdd_search_classes— find a class by name, e.g. "which class describes a wall?".bsdd_get_classfor the definition,bsdd_get_class_propertiesfor its properties,bsdd_get_class_relationsto map it onto classes in other dictionaries.
Configuration
All optional, read from the environment:
Variable | Default | Purpose |
|
| Point at another bSDD instance |
|
| Per-request timeout |
|
| Retries on HTTP 429 / 5xx |
|
| User-Agent sent to bSDD |
Notes on the bSDD API
These are behaviours of the upstream API that the server works around, and that are worth knowing when reading the results:
Rate limiting. bSDD answers with HTTP 429 and a message like "Try again in 4 seconds". The client honours
Retry-After(and that message) and retries with exponential backoff.IFC and text search.
/api/TextSearch/v2treats the IFC dictionary as a preview dictionary and leaves it out unlessIncludePreviewis set, sobsdd_search_textsets it by default.bsdd_search_classes(/api/Class/Search/v1) always covers IFC.Class properties. The
IncludeClassPropertiesoption of/api/Class/v1is deprecated and heavily rate limited;bsdd_get_class_propertiesuses the dedicated paginated endpoint instead.Page size. The API returns up to 1000 items per call. These tools default to 50 to keep responses reasonable for a model context; pass
limitexplicitly when you need more.
Development
npm run build # compile TypeScript to dist/
npm run typecheck # type-check only
npm test # build + unit tests (no network; fetch is stubbed)
npm run test:live # calls every tool against the real bSDD APILicense
MIT — see LICENSE. bSDD content itself is published by buildingSMART International and
its dictionary owners under their own licenses (each dictionary reports its license field).
Available Tools
12 toolsbsdd_get_classGet class detailsARead-onlyIdempotent
Get the details of one class: definition, class type, related IFC entities and (optionally) child classes and relations. Properties are fetched separately with bsdd_get_class_properties.
Inputs: uri (required), languageCode, includeClassRelations, includeReverseRelations, +2 more.
bsdd_get_class_propertiesGet the properties of a classARead-onlyIdempotent
List the properties assigned to a class, with their data type, units, allowed values and property set. Use this instead of the deprecated IncludeClassProperties option of bsdd_get_class.
Inputs: classUri (required), limit, offset, searchText, +3 more.
bsdd_get_class_relationsGet the relations of a classARead-onlyIdempotent
List the relations of a class (e.g. IsEqualTo, HasMaterial, IsParentOf) or, with reverse=true, the classes that point at it. Useful for mapping between dictionaries.
Inputs: classUri (required), limit, offset, reverse, +2 more.
bsdd_get_propertyGet property detailsARead-onlyIdempotent
Get the details of one property: data type, units, allowed values, description and related properties.
Inputs: uri (required), languageCode.
bsdd_get_property_classesGet the classes using a propertyARead-onlyIdempotent
List the classes that use a given property.
Inputs: propertyUri (required), limit, offset, searchText, +1 more.
bsdd_get_property_valueGet property value detailsARead-onlyIdempotent
Get the details of a single property value (an item of an enumeration), by its URI.
Inputs: uri (required), languageCode.
bsdd_list_dictionariesList bSDD dictionariesARead-onlyIdempotent
List the dictionaries (classification systems, e.g. IFC, ETIM, Uniclass) published in bSDD. Start here to discover the dictionary URIs the other tools need.
Inputs: uri, limit, offset, includeTestDictionaries.
bsdd_list_dictionary_classesList classes in a dictionaryARead-onlyIdempotent
List the classes of one dictionary, optionally filtered by text, class type or related IFC entity. Use this to browse a dictionary; use bsdd_search_classes to search across dictionaries.
Inputs: dictionaryUri (required), limit, offset, classType, +4 more.
bsdd_list_dictionary_propertiesList properties in a dictionaryARead-onlyIdempotent
List the properties defined by one dictionary, optionally filtered by text.
Inputs: dictionaryUri (required), limit, offset, searchText, +1 more.
bsdd_list_reference_dataList bSDD reference dataARead-onlyIdempotent
List one of the bSDD reference lists: countries, languages, units (with QUDT URIs) or reference documents. These are the allowed values for the corresponding fields on classes and properties.
Inputs: kind (required).
bsdd_search_classesSearch classes across dictionariesARead-onlyIdempotent
Free-text search for classes across all bSDD dictionaries, including IFC. This is the best starting point for questions like "which class describes a wall?".
Inputs: searchText (required), limit, offset, dictionaryUris, +1 more.
bsdd_search_textSearch classes and properties (free text)ARead-onlyIdempotent
Free-text search returning both classes and properties. Pagination is shared: classes are listed first, properties after them. Note that the IFC dictionary is only included when includePreview is true (the default here); use bsdd_search_classes for class-only searches.
Inputs: searchText (required), limit, offset, typeFilter, +6 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Each tool targets a distinct resource-action combination: list vs search vs get, and each resource (dictionaries, classes, properties, relations, reference data) has a single clear purpose. The search tools are differentiated by scope (classes-only vs classes+properties), and listing tools specify whether they are scoped to a dictionary.
All tools follow the bsdd_<verb>_<noun> pattern, with verbs limited to list, search, and get. The noun phrases are consistently compound structures (e.g., dictionary_classes, class_properties, property_value), making the naming predictable and uniform.
12 tools is well-scoped for a read-only dictionary API, covering the core entities (dictionaries, classes, properties, relations, reference data) without redundancy or fragmentation. Each tool earns its place.
The tool set provides comprehensive read access to bSDD: dictionary discovery, class/property browsing and search, detailed entity retrieval, relations, property values, and reference data. No significant gaps exist for the stated purpose of reading the dictionary.
Related MCP Connectors
Read-only connector: ask your AI about construction and ad-platform data. It never writes.
Read-only search of your Sortio knowledge graph (files and entities) for Claude and ChatGPT.
Connects AI assistants to QCDatabase.AI for everyday construction quality-control work.
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Related MCP Servers
- AlicenseAqualityDmaintenanceExposes CDISC standards data including SDTM, ADaM, CDASH, and Controlled Terminology as tools for AI assistants via the CDISC Library API. It enables users to search standards, retrieve domain variables, and access codelist definitions to facilitate clinical research data management.12MIT
- AlicenseCqualityDmaintenanceEnables AI assistants to create, edit, and export IFC5/IFCX building information models through natural language, handling spatial structure, elements, geometry, metadata, validation, and export.739 npm26Apache 2.0
- FlicenseAqualityDmaintenanceEnables AI clients to search and read Korean Construction Standards (KCS/KDS) documents directly, using the KCSC OpenAPI.42-
- FlicenseAqualityDmaintenanceEnables AI assistants to query standardized building classifications, properties, and data dictionaries from buildingSMART for BIM model enrichment.93-