bsdd-mcp
Provides read-only access to the buildingSMART Data Dictionary (bSDD), enabling AI assistants to search and retrieve construction classifications, classes, properties, and relations through natural language.
README
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 script
Use it with Claude Code
claude mcp add bsdd -- node /absolute/path/to/bsdd-mcp/dist/index.js
Use it with Claude Cowork / Claude Desktop
Cowork installs local MCP servers as .mcpb bundles. Build one:
npm run bundle # -> build/bsdd-mcp-<version>.mcpb
The 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 |
|---|---|---|
bsdd_list_dictionaries |
List/filter the published dictionaries | GET /api/Dictionary/v1 |
bsdd_list_dictionary_classes |
Browse the classes of one dictionary (flat or nested) | GET /api/Dictionary/v1/Classes |
bsdd_list_dictionary_properties |
Browse the properties of one dictionary | GET /api/Dictionary/v1/Properties |
bsdd_search_classes |
Free-text class search across dictionaries | GET /api/Class/Search/v1 |
bsdd_search_text |
Free-text search returning classes and properties | GET /api/TextSearch/v2 |
bsdd_get_class |
Class details, optionally with child classes and relations | GET /api/Class/v1 |
bsdd_get_class_properties |
The properties of a class, with data types and units | GET /api/Class/Properties/v1 |
bsdd_get_class_relations |
Forward or reverse relations of a class | GET /api/Class/Relations/v1 |
bsdd_get_property |
Property details | GET /api/Property/v5 |
bsdd_get_property_classes |
Which classes use a property | GET /api/Property/Classes/v1 |
bsdd_get_property_value |
Details of one value of an enumeration | GET /api/PropertyValue/v2 |
bsdd_list_reference_data |
Countries, languages, units or reference documents | GET /api/Country|Language|Unit|ReferenceDocument/v1 |
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 |
|---|---|---|
BSDD_API_BASE_URL |
https://api.bsdd.buildingsmart.org |
Point at another bSDD instance |
BSDD_TIMEOUT_MS |
30000 |
Per-request timeout |
BSDD_MAX_RETRIES |
3 |
Retries on HTTP 429 / 5xx |
BSDD_USER_AGENT |
bsdd-mcp/<version> |
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 API
License
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).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.