Skip to main content
Glama
JardiMargalefAgusti

bSDD MCP Server

bSDD MCP Server

MCP server for the buildingSMART Data Dictionary (bSDD) API. Enables AI assistants like Claude to query standardized building classifications, properties, and data dictionaries for BIM model enrichment.

bSDD + Claude Desktop Node.js License

What is bSDD?

The buildingSMART Data Dictionary is an online service that hosts classifications and their properties, allowed values, units, translations, and relations. It provides a standardized way to describe building elements across multiple classification systems like IFC, ETIM, UniClass, OmniClass, and many more.

Related MCP server: IFCX MCP

Features

This MCP server exposes 9 tools to query the bSDD API:

Tool

Description

bsdd_list_dictionaries

List available dictionaries (IFC, ETIM, UniClass, etc.)

bsdd_get_dictionary_classes

Browse class hierarchy of a dictionary

bsdd_get_class

Get full class details with properties and relations

bsdd_search_classes

Search classes by keyword across dictionaries

bsdd_get_class_properties

Get properties of a class (data types, units, allowed values)

bsdd_get_class_relations

Get relationships between classes

bsdd_get_property

Get property details (type, unit, constraints)

bsdd_get_property_classes

Find which classes use a given property

bsdd_text_search

Free-text search across all bSDD content

No API key required — the bSDD public read endpoints are used.

Installation

Prerequisites

Setup

  1. Clone the repository

git clone https://github.com/JardiMargalefAgusti/bSDD-mcp.git
cd bSDD-mcp
  1. Install dependencies

npm install
  1. Build

npm run build
  1. Configure Claude Desktop

Open Claude Desktop settings: Settings → Developers → Edit Config

Add the following entry inside "mcpServers":

{
  "mcpServers": {
    "bSDD": {
      "command": "node",
      "args": ["/absolute/path/to/bSDD-mcp/build/index.js"]
    }
  }
}

Replace /absolute/path/to/bSDD-mcp with the actual path where you cloned the repository.

Windows example:

"args": ["C:\\Users\\youruser\\bSDD-mcp\\build\\index.js"]

macOS/Linux example:

"args": ["/Users/youruser/bSDD-mcp/build/index.js"]
  1. Restart Claude Desktop

The 9 bsdd_* tools should now appear in your tool list.

Usage Examples

Once connected, you can ask Claude things like:

  • "List all available bSDD dictionaries"

  • "What properties should an IfcWall have according to IFC 4.3?"

  • "Search bSDD for fire resistance properties"

  • "Get the class definition of IfcDoor with its property sets"

  • "Which IFC classes use the AcousticRating property?"

  • "Show me the ETIM classification for electrical panels"

  • "What are the allowed values for the FireRating property?"

BIM Enrichment Workflows

This server is designed to work alongside other BIM-related MCP servers:

bSDD + IFC Viewer (BIM-Builder)

  1. Query bSDD for standard properties of an IFC class

  2. Check which properties are missing in your loaded IFC model

  3. Create PropertySets and add standardized properties

bSDD + Revit (FlowRun)

  1. Search bSDD for classification codes and required properties

  2. Generate shared parameters in Revit

  3. Assign standardized values by category/type

Project Structure

bSDD-mcp/
├── src/
│   ├── index.ts              # MCP server entry point (stdio transport)
│   ├── bsdd-client.ts        # HTTP client for bSDD REST API
│   ├── tools/
│   │   ├── dictionaries.ts   # Dictionary browsing tools
│   │   ├── classes.ts        # Class lookup, search, properties, relations
│   │   ├── properties.ts     # Property details and reverse-lookup
│   │   └── search.ts         # Free-text search
│   └── types/
│       └── bsdd.ts           # TypeScript interfaces for API responses
├── package.json
├── tsconfig.json
└── build/                    # Compiled JavaScript (generated)

API Reference

This server uses the bSDD REST API:

  • Base URL: https://api.bsdd.buildingsmart.org

  • Authentication: None required (public read access)

  • Documentation: bSDD API docs

License

MIT

Available Tools

9 tools
bsdd_get_classB

Get full details of a bSDD class (e.g. IfcWall, IfcDoor) including its properties, relations, and child classes. Essential for BIM enrichment.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesClass URI (e.g. from search results or dictionary classes)
languageCodeNoISO language code (e.g. 'es', 'en')
includeChildrenNoInclude child class references (default false)
includeRelationsNoInclude class relations (default false)
includePropertiesNoInclude class properties (default true)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must convey behavioral traits. It mentions that the result includes properties, relations, and child classes, but does not disclose defaults (e.g., includeChildren and includeRelations default to false), potential performance implications, or any read-only guarantees. This is minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one substantive sentence with a short second sentence. It is front-loaded with the verb and key details. The second sentence, 'Essential for BIM enrichment,' is somewhat promotional and adds little informational value, slightly reducing the score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description partially addresses return content by listing what is included (properties, relations, child classes). However, it does not describe the response structure, pagination, or error cases. It is adequate for a read tool but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters. The description adds little beyond the schema, only reinforcing that properties, relations, and child classes are covered by the include flags. This is baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get full details of a bSDD class' with concrete examples (IfcWall, IfcDoor). It also lists the included content (properties, relations, child classes), which differentiates it from more focused sibling tools like bsdd_get_class_properties and bsdd_get_class_relations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The phrase 'Essential for BIM enrichment' is vague and does not clarify when to choose this over siblings such as bsdd_get_class_properties or bsdd_search_classes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_get_class_propertiesA

Get the paginated list of properties for a bSDD class, including data types, units, and allowed values. Use to know what properties a BIM element should have.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax properties to return (default 100)
offsetNoPagination offset
classUriYesClass URI
languageCodeNoISO language code

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It discloses the paginated nature and the content of the returned properties, but does not mention required permissions, error behavior, default sorting, or how pagination parameters interact. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and outcome, followed by a practical use case. Every word earns its place; there is no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list-retrieval tool with a well-described schema and no output schema, the description covers purpose, return content, pagination, and usage context. It lacks details about error cases or exact pagination behavior, but remains largely complete for a simple read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds little parameter-level meaning beyond noting pagination, which aligns with limit/offset. It does not elaborate on classUri or languageCode semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('paginated list of properties for a bSDD class'), making the tool's purpose immediately clear. It also names the included content (data types, units, allowed values), which distinguishes it from sibling tools like bsdd_get_class or bsdd_get_property.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states a use case: 'Use to know what properties a BIM element should have.' This gives clear context for when the tool is appropriate, though it does not name alternative tools or explicitly state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_get_class_relationsA

Get relationships between a class and other classes (parent, child, has-part, similar-to). Useful for cross-referencing between IFC, ETIM, UniClass, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax relations to return (default 50)
offsetNoPagination offset
classUriYesClass URI

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the relationship categories and the cross-referencing purpose, implying a read-only operation. However, it does not describe the return structure, pagination details beyond the schema, or any error/edge-case behavior. This is a moderate level of transparency for a simple get tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that leads with the primary action ('Get relationships'), lists concrete relationship types, and finishes with a practical use case. There is no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description explains the core behavior and provides usage context. It tells the user what relations are returned and mentions cross-referencing, which is the primary use case. It stops short of describing the exact response format, but the low complexity and clear parameter names make it adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full coverage: classUri is described as 'Class URI', limit as 'Max relations to return (default 50)', and offset as 'Pagination offset'. The description reinforces the context (relations between classes) but does not add deeper parameter semantics beyond the schema. This meets the baseline for 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get relationships between a class and other classes' and specifies the relationship types (parent, child, has-part, similar-to). This distinguishes it from sibling tools like bsdd_get_class (which returns class details) and bsdd_get_class_properties (which returns properties). The cross-referencing use case further clarifies intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical context with 'Useful for cross-referencing between IFC, ETIM, UniClass, etc.', which indicates when to use this tool. It does not explicitly name alternatives or exclusions, but the sibling tools (e.g., bsdd_get_class, bsdd_get_class_properties) make the differentiation implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_get_dictionary_classesA

Get the class hierarchy of a bSDD dictionary. Use to browse IFC classes, ETIM product groups, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesDictionary URI (get it from bsdd_list_dictionaries)
limitNoMax classes to return (default 100)
offsetNoPagination offset (default 0)
languageCodeNoISO language code for translations (e.g. 'es', 'ca', 'en')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for transparency. It communicates that the tool returns a hierarchy, which is useful, but it does not mention pagination behavior, response structure, or any potential performance implications. The examples add context but not behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, with the main action front-loaded. Every word adds value: it states the function, gives concrete use cases, and avoids unnecessary detail. This is an excellent model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose and typical use cases, which is sufficient for a simple read operation given the fully documented schema. However, since there is no output schema, it could have been slightly richer in explaining what the hierarchy looks like, but the term 'class hierarchy' gives adequate indication.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description itself adds no additional parameter semantics beyond what the schema already provides. It does not explain how parameters interact or provide usage syntax.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the class hierarchy of a bSDD dictionary' with a specific verb and resource. It differentiates from sibling tools like bsdd_get_class (which retrieves a single class) by focusing on the hierarchy, and provides concrete examples (IFC classes, ETIM product groups) that clarify its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage context ('Use to browse IFC classes, ETIM product groups, etc.'), making it clear when this tool is appropriate. However, it does not mention alternative tools or when NOT to use it, so it lacks full exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_get_propertyA

Get full details of a bSDD property: data type, unit, allowed values, connected property sets. Use to understand what a BIM property means and what values it accepts.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesProperty URI (from class properties or search results)
languageCodeNoISO language code (e.g. 'es', 'en')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the return contents (data type, unit, allowed values, connected property sets) and 'Get' implies a read-only operation, but it does not explicitly state no side effects, authorization needs, or behavior on invalid URIs. This is acceptable but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The main purpose is front-loaded, followed by a clear usage directive. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description sufficiently conveys the tool's return value (property details) and use case, which is adequate given the simple schema and absence of an output schema. It could mention languageCode behavior, but the schema covers that parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameters are straightforward (uri, languageCode). The description does not add parameter-specific semantics beyond what the schema already provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('bSDD property'), and clearly differentiates from siblings by enumerating the details returned (data type, unit, allowed values, connected property sets). This distinguishes it from related tools like bsdd_get_class_properties and bsdd_get_property_classes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to understand what a BIM property means and what values it accepts' provides clear guidance on when to invoke the tool. However, it does not explicitly state when not to use it or mention alternatives, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_get_property_classesA

Find which bSDD classes use a given property. Useful to understand where a property like 'FireRating' or 'AcousticRating' applies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
offsetNoPagination offset
propertyUriYesProperty URI

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention that this is a read-only operation, nor does it describe the result shape (e.g., list of class URIs or full class objects). Although the verb 'find' suggests a query, the lack of any detail about pagination (despite limit/offset params) or output format leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core action, and uses the second sentence to provide a practical use case. Every word earns its place; no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple, but without an output schema or annotations, the description should at least indicate what the response contains. It states it finds classes, implying a list of classes, but does not specify whether these are names, URIs, or full objects. The lack of this information makes it less complete than an ideal tool description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'propertyUri' described as 'Property URI'. The description adds examples like 'FireRating' and 'AcousticRating', which suggest that short names may be acceptable, adding some semantic value. However, this could be ambiguous if a full URI is required, and the description does not elaborate on the format for limit/offset beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find which bSDD classes use a given property.' This is a specific verb+resource combination and differentiates it from sibling tools like bsdd_get_class_properties by being the inverse lookup. The example properties ('FireRating', 'AcousticRating') further clarify intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use it: 'Useful to understand where a property... applies.' It implies a scenario where the user has a property and wants to find applicable classes. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to distinguish it from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_list_dictionariesA

List available bSDD dictionaries (IFC, ETIM, UniClass, etc.). Use to discover classification systems and their URIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 50)
offsetNoPagination offset (default 0)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It does explain that this is a discovery operation returning URIs, but it omits details like pagination behavior (though limit/offset are in schema) and response format. This is acceptable for a simple list endpoint but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise: two sentences, no wasted words. It front-loads the action and resource, then adds a brief purpose. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two optional parameters and no output schema, the description covers the essential purpose and value. It doesn't explain the output structure, but that's likely straightforward given the listing nature. Given the low complexity, this is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both `limit` and `offset` are well-described in the schema itself. The description does not add any additional parameter context, which is fine since the schema already conveys meaning; thus the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('available bSDD dictionaries'), with concrete examples (IFC, ETIM, UniClass) that make the scope obvious. It also distinguishes itself from sibling tools by focusing on dictionary discovery rather than class/property lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use to discover classification systems and their URIs' provides a clear use case. While it doesn't explicitly exclude alternatives, the sibling tools are focused on searching/getting specific entities, so the intent is unambiguous and contextual.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bsdd_search_classesB

Search for classes across bSDD dictionaries by keyword. Use to find IFC classes, ETIM groups, or any classification.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
offsetNoPagination offset
searchTextYesSearch keyword (e.g. 'wall', 'IfcDoor', 'pipe')
languageCodeNoISO language code
dictionaryUriNoRestrict search to a specific dictionary URI
relatedIfcEntityNoFilter by related IFC entity name (e.g. 'IfcWall')

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for behavioral disclosure. It only states the purpose without mentioning pagination, sorting, result structure, language handling, or any limitations. The schema parameters cover search options, but the tool's runtime behavior is opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the main action and scope. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 6 parameters, no annotations, and no output schema, the description provides only the minimal purpose. It does not explain what the response looks like, how to refine the search effectively, or when to choose sibling tools like bsdd_text_search. This leaves the agent without enough context to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds marginal value by hinting at the types of content to search (IFC classes, ETIM groups), but the schema already documents searchText with examples. No additional semantic enrichment beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for classes across bSDD dictionaries by keyword, which distinguishes it from sibling tools like bsdd_get_dictionary_classes or bsdd_get_class. It also provides concrete use cases (IFC classes, ETIM groups). However, it does not explicitly contrast with bsdd_text_search, which could be a close alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use case: 'Use to find IFC classes, ETIM groups, or any classification.' This provides context for when to use the tool. It does not mention exclusions or alternatives, so it stops short of a 5, but it is more than merely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedbsdd_get_class
    • First observedbsdd_get_class_properties
    • First observedbsdd_get_class_relations
    • First observedbsdd_get_dictionary_classes
    • First observedbsdd_get_property
    • First observedbsdd_get_property_classes
    • First observedbsdd_list_dictionaries
    • First observedbsdd_search_classes
    • First observedbsdd_text_search

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap: get_class includes properties and relations, which could be confused with the dedicated get_class_properties and get_class_relations tools. Also, search_classes and text_search both support searching, though descriptions clarify the scope difference.

Naming Consistency4/5

The common bsdd_ prefix and mostly verb_noun pattern (list, get, search) make the set predictable. However, bsdd_text_search breaks the pattern by putting the noun before the verb, and 'list' vs 'get' verbs are used inconsistently (e.g., list_dictionaries vs get_dictionary_classes).

Tool Count5/5

With 9 tools, the server is well-scoped for a domain-specific read-only dictionary service. Each tool covers a distinct aspect of browsing and searching bSDD data without unnecessary bloat.

Completeness4/5

The tool surface is comprehensive for read-only access: dictionary discovery, class hierarchy, class details, properties, relations, property reverse lookup, and free-text search are all covered. Minor gaps include lack of dictionary-level metadata retrieval (e.g., versions, languages) and property-specific search, but these are not critical.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Autodesk Revit to query project data, manage elements, and execute generated code via the Model Context Protocol. It provides full compatibility with GitHub Copilot and Claude to automate BIM modeling workflows.
    13
    60 npm
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants to create, edit, and export IFC5/IFCX building information models through natural language, handling spatial structure, elements, geometry, metadata, validation, and export.
    73
    7 npm
    25
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to load, query, and analyze IFC building model files, including spatial structures, elements, properties, materials, and geometry.
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    AI-powered BIM tool that connects Claude to a Revit file conversion and BIM query service, enabling users to convert .rvt files to XKT, IFC, and DWG, and explore building elements through natural language.
    1
    MIT