Skip to main content
Glama

XMI MCP Server

An MCP (Model Context Protocol) server for querying SysML XMI exports. This server parses the MTConnect SysML model and provides tools for exploring packages, classes, enumerations, and documentation.

Installation

npm install
npm run build

Related MCP server: mcp-registry

Loading into Claude Code on Windows

  1. Open your Claude Code settings file at:

    %APPDATA%\Claude\claude_desktop_config.json

    Or create it if it doesn't exist.

  2. Add the MCP server configuration:

    {
      "mcpServers": {
        "xmimcp": {
          "command": "node",
          "args": ["C:\\source\\vibes\\xmimcp\\dist\\index.js"]
        }
      }
    }
  3. Restart Claude Code for the changes to take effect.

Option 2: Using a Custom XMI File Path

If your XMI file is in a different location, set the XMI_FILE_PATH environment variable:

{
  "mcpServers": {
    "xmimcp": {
      "command": "node",
      "args": ["C:\\source\\vibes\\xmimcp\\dist\\index.js"],
      "env": {
        "XMI_FILE_PATH": "C:\\path\\to\\your\\model.xml"
      }
    }
  }
}

Option 3: Project-Specific Configuration

Create a .mcp.json file in your project root:

{
  "mcpServers": {
    "xmimcp": {
      "command": "node",
      "args": ["C:\\source\\vibes\\xmimcp\\dist\\index.js"]
    }
  }
}

Verifying the Server is Loaded

After restarting Claude Code, you can verify the server is loaded by asking Claude to use one of the tools, such as:

  • "Get model statistics from the XMI server"

  • "List all packages in the SysML model"

Tool Reference

Package Tools

list_packages

List all packages in the SysML model with optional filtering.

Parameters:

Parameter

Type

Description

parentPackage

string

Filter to children of this package (by name or xmi:id)

recursive

boolean

Include nested packages recursively (default: false)

namePattern

string

Regex pattern to filter package names

Example:

List all packages that contain "Asset" in their name

get_package

Get detailed information about a specific package including its children.

Parameters:

Parameter

Type

Required

Description

identifier

string

Yes

Package name or xmi:id

Returns: Package details including child packages, classes, and enumerations.

Example:

Get details of the "Asset Information Model" package

Class/Block Tools

find_classes

Find classes/blocks by name, pattern, or package.

Parameters:

Parameter

Type

Description

name

string

Exact class name to find

namePattern

string

Regex pattern for class names

package

string

Limit search to this package (name or id)

recursive

boolean

Search in nested packages (default: true)

includeAbstract

boolean

Include abstract classes (default: true)

Example:

Find all classes with "Tool" in their name
Find classes in the "Cutting Tool" package

get_class_details

Get full details of a class including properties, inheritance, and documentation.

Parameters:

Parameter

Type

Required

Description

identifier

string

Yes

Class name or xmi:id

includeInherited

boolean

No

Include inherited properties from parent classes (default: false)

Returns: Complete class information including:

  • Properties with types and multiplicity

  • Parent classes (generalizations)

  • Stereotypes (e.g., SysML Block)

  • Documentation

Example:

Get details of the "CuttingTool" class with inherited properties

get_inheritance_hierarchy

Get the inheritance chain for a class showing ancestors and/or descendants.

Parameters:

Parameter

Type

Required

Description

identifier

string

Yes

Class name or xmi:id

direction

string

No

One of: "ancestors", "descendants", "both" (default: "both")

Example:

Show the inheritance hierarchy for the "Asset" class

Enumeration Tools

list_enumerations

List all enumerations with optional filtering.

Parameters:

Parameter

Type

Description

package

string

Filter to a specific package

namePattern

string

Regex pattern for enumeration names

Example:

List all enumerations containing "Type" in their name

get_enumeration

Get details of an enumeration including all literal values and their documentation.

Parameters:

Parameter

Type

Required

Description

identifier

string

Yes

Enumeration name or xmi:id

Returns: Enumeration details with all literals and their documentation.

Example:

Get all values of the "DataItemSubTypeEnum" enumeration

Search Tools

search_documentation

Full-text search across all documentation and comments in the model.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Search terms (space-separated, all must match)

elementTypes

array

No

Limit to: "class", "enumeration", "package", "datatype"

limit

number

No

Maximum results (default: 50)

Example:

Search documentation for "cutting tool life"
Search for "spindle" in class documentation only

search_by_name

Search for any element by name across the entire model.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Name or partial name to search for

exactMatch

boolean

No

Require exact name match (default: false)

elementTypes

array

No

Limit to: "class", "enumeration", "package", "datatype"

Example:

Search for elements named "Asset"
Find all elements containing "Observation"

Reference Tools

resolve_reference

Resolve an xmi:id reference to get element details. Useful for following cross-references in the model.

Parameters:

Parameter

Type

Required

Description

xmiId

string

Yes

The xmi:id to resolve

Example:

Resolve reference "_19_0_3_68e0225_1620206731259_178927_703"

Utility Tools

get_model_statistics

Get statistics about the loaded SysML model.

Parameters: None

Returns:

{
  "packageCount": 120,
  "classCount": 1179,
  "enumerationCount": 106,
  "dataTypeCount": 30,
  "propertyCount": 1924,
  "associationCount": 231
}

Troubleshooting

Server not loading

  1. Ensure Node.js is installed and in your PATH

  2. Verify the paths in the configuration use double backslashes (\\) on Windows

  3. Check that npm run build completed successfully

XMI file not found

  1. Verify the XMI file exists at the expected path

  2. Use the XMI_FILE_PATH environment variable to specify a custom location

Tools not appearing

  1. Restart Claude Code after updating the configuration

  2. Check the Claude Code logs for any error messages

Development

# Install dependencies
npm install

# Build
npm run build

# Run directly (for testing)
npm start

License

MIT

Available Tools

11 tools
find_classesC

Find classes/blocks by name, pattern, or package

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoExact class name to find
namePatternNoRegex pattern for class names
packageNoLimit search to this package (name or id)
recursiveNoSearch in nested packages
includeAbstractNoInclude abstract classes

TDQS

C2.9/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 full burden. It states 'find' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, rate limits, or what the output format looks like (e.g., list of class names or full objects). For a search tool with no annotations, this leaves critical gaps in understanding how it behaves.

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, efficient sentence with zero waste. It's front-loaded with the core action and criteria, making it easy to parse. Every word earns its place, and there's no redundancy or fluff.

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?

Given no annotations and no output schema, the description is incomplete for a search tool with 5 parameters. It doesn't explain what the tool returns (e.g., list of class names, objects, or something else), error conditions, or behavioral constraints. For a tool of this complexity, more context is needed to guide effective use.

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 fully documents all 5 parameters. The description adds minimal value by mentioning 'by name, pattern, or package', which aligns with parameters but doesn't provide additional semantics beyond what the schema already specifies. Baseline 3 is appropriate as the schema does the heavy lifting.

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 the verb 'find' and resource 'classes/blocks', specifying search criteria (by name, pattern, or package). It distinguishes from siblings like 'get_class_details' (detailed view) and 'list_packages' (different resource), but doesn't explicitly contrast with 'search_by_name' which might overlap. The purpose is specific and actionable.

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 guidance on when to use this tool versus alternatives like 'search_by_name' or 'get_class_details' is provided. The description implies a search function but doesn't specify contexts, prerequisites, or exclusions. Without such guidance, the agent must infer usage from tool names alone, which is insufficient.

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

get_class_detailsB

Get full details of a class including properties and inheritance

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesClass name or xmi:id
includeInheritedNoInclude inherited properties from parent classes

TDQS

B3.1/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 of behavioral disclosure. It mentions what details are included but doesn't cover aspects like error handling, performance, or data format. For a read operation, this leaves gaps in understanding how the tool behaves beyond its basic function.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized for its function, making it easy to understand quickly.

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?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose but lacks details on output format, error cases, or how it integrates with sibling tools, which could hinder an agent's ability to use it effectively in context.

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 input schema has 100% description coverage, clearly documenting both parameters. The description adds minimal value by implying the 'includeInherited' parameter's effect but doesn't provide additional context beyond what the schema already states, such as examples or edge cases.

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 the tool's purpose with a specific verb ('Get') and resource ('full details of a class'), and specifies what details are included ('properties and inheritance'). However, it doesn't explicitly differentiate from sibling tools like 'find_classes' or 'get_inheritance_hierarchy', which might offer overlapping functionality.

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?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'find_classes' (likely for searching) and 'get_inheritance_hierarchy' (likely for inheritance structure), there's no indication of how this tool differs or when it's preferred, leaving usage context unclear.

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

get_enumerationB

Get details of an enumeration including all literals

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesEnumeration name or xmi:id

TDQS

B3.1/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 of behavioral disclosure. While 'Get' implies a read operation, it doesn't specify permissions needed, error conditions (e.g., if the enumeration doesn't exist), rate limits, or the format/structure of the returned details. This leaves significant gaps for a tool with no annotation coverage.

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, efficient sentence that states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every part contributing directly to understanding what the tool does.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It clarifies the resource and output scope ('details' and 'all literals'), but lacks behavioral context and usage guidance, which are notable gaps despite the simple structure.

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 input schema has 100% description coverage, with the single parameter 'identifier' documented as 'Enumeration name or xmi:id'. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

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 the tool's purpose with a specific verb ('Get') and resource ('enumeration'), and specifies what information is retrieved ('details' and 'all literals'). However, it doesn't explicitly differentiate this from sibling tools like 'list_enumerations' or 'get_class_details', which would require a 5.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_enumerations' (likely listing multiple enumerations) and 'get_class_details' (for classes), there's clear potential for confusion, but the description offers no explicit when/when-not instructions or named alternatives.

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

get_inheritance_hierarchyB

Get the inheritance chain for a class (parents and children)

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesClass name or xmi:id
directionNoboth

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states what the tool does, not behavioral traits like error handling, performance, or output format. It mentions 'parents and children' which aligns with the 'direction' parameter, but lacks details on depth limits, traversal order, or what 'chain' entails structurally.

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, efficient sentence with zero waste, front-loading the core purpose. Every word earns its place, making it easy to parse quickly.

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?

For a tool with 2 parameters, no annotations, and no output schema, the description is minimally complete. It covers the basic purpose but lacks details on output format, error cases, or usage context, leaving gaps that could hinder effective agent invocation.

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 50% (only 'identifier' has a description), but the description adds minimal value beyond the schema. It implies 'direction' through 'parents and children' (matching 'both'), but doesn't explain parameter interactions or semantics like how 'identifier' is resolved. Baseline 3 is appropriate as the schema covers half the parameters adequately.

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 the verb ('Get') and resource ('inheritance chain for a class'), specifying it includes parents and children. It distinguishes from siblings like 'get_class_details' or 'find_classes' by focusing on inheritance relationships, though it doesn't explicitly mention these alternatives.

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

Usage Guidelines3/5

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

The description implies usage when inheritance hierarchy is needed, but provides no explicit guidance on when to use this tool versus alternatives like 'get_class_details' (which might include inheritance) or 'search_by_name'. No exclusions or prerequisites are mentioned.

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

get_model_statisticsB

Get statistics about the loaded SysML model

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 states the tool retrieves statistics but doesn't specify what kind (e.g., counts, metrics, performance data), whether it's read-only or has side effects, or any constraints like rate limits or authentication needs. This leaves significant gaps in understanding the tool's behavior.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what statistics are returned, their format, or any behavioral traits. For a tool that likely provides structured data about a model, more context is needed to understand its utility and output.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it correctly avoids mentioning any. A baseline of 4 is appropriate since no parameter information is required.

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 the action ('Get statistics') and target resource ('loaded SysML model'), making the purpose understandable. However, it doesn't differentiate from siblings like 'get_class_details' or 'get_package' which also retrieve model information, so it's not fully specific about what type of statistics are provided.

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 guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., requiring a model to be loaded first), exclusions, or comparisons to sibling tools like 'list_packages' or 'search_documentation' that might serve related purposes.

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

get_packageB

Get detailed information about a specific package

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesPackage name or xmi:id

TDQS

B3.1/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 full burden for behavioral disclosure. While 'Get detailed information' implies a read-only operation, it doesn't specify what constitutes 'detailed information' (metadata, dependencies, version), whether there are authentication requirements, rate limits, or error conditions. For a tool with no annotation coverage, this leaves significant behavioral 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 a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the core purpose immediately.

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?

Given the tool's simplicity (single parameter, no output schema, no annotations), the description is minimally adequate but has clear gaps. It states what the tool does but doesn't provide usage guidance, behavioral context, or output expectations. For a tool with no output schema, the description should ideally indicate what kind of information is returned, but it only vaguely mentions 'detailed information'.

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 the single parameter 'identifier' documented as 'Package name or xmi:id'. The description adds no additional parameter semantics beyond what the schema already provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter information in the description.

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 the tool's purpose with a specific verb ('Get') and resource ('detailed information about a specific package'), making it immediately understandable. However, it doesn't differentiate this tool from potential siblings like 'get_class_details' or 'get_enumeration' that might also retrieve detailed information about other resource types.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_packages' (which might list packages without details) and 'search_by_name' (which might search across resources), there's no indication of when this specific package detail retrieval is appropriate versus those other tools.

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

list_enumerationsC

List all enumerations with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoFilter to a specific package
namePatternNoRegex pattern for enumeration names

TDQS

C2.9/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 of behavioral disclosure. It states the tool lists enumerations with filtering but doesn't describe what the output looks like (e.g., format, pagination), whether it's read-only or has side effects, or any rate limits or authentication needs. This leaves significant gaps for a tool with no annotation coverage.

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, efficient sentence that front-loads the core purpose ('List all enumerations') and adds a key detail ('with optional filtering'). There is no wasted verbiage, and every word earns its place, making it easy to parse quickly.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain the return values (e.g., what data is included in the list), behavioral traits like safety or performance, or how it differs from sibling tools. For a listing tool with no structured output definition, more context is needed to guide effective use.

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 input schema has 100% description coverage, with clear documentation for both parameters ('package' and 'namePattern'). The description adds minimal value beyond the schema by mentioning 'optional filtering' but doesn't provide additional context like examples or usage scenarios. This meets the baseline for high schema coverage.

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 the verb ('List') and resource ('all enumerations'), making the purpose immediately understandable. It also mentions optional filtering, which adds specificity. However, it doesn't differentiate this tool from sibling tools like 'get_enumeration' or 'search_by_name', which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_enumeration' (likely for single enumeration details) and 'search_by_name' (likely for broader searches), the agent has no indication of when this filtered listing is preferred. No exclusions or prerequisites are mentioned.

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

list_packagesC

List all packages in the SysML model with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
parentPackageNoFilter to children of this package (by name or xmi:id)
recursiveNoInclude nested packages recursively
namePatternNoRegex pattern to filter package names

TDQS

C2.9/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 of behavioral disclosure. It states the tool lists packages but doesn't describe key behaviors such as output format (e.g., list of names, details), pagination, rate limits, or error handling. For a list operation without annotations, this leaves significant gaps in understanding how the tool behaves.

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, efficient sentence that front-loads the core purpose ('List all packages') and adds a key feature ('with optional filtering') without unnecessary details. Every word earns its place, making it highly concise and well-structured.

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?

Given the lack of annotations and output schema, the description is incomplete for a tool with three parameters and list functionality. It doesn't cover behavioral aspects like output format or error conditions, leaving the agent with insufficient context to use the tool effectively beyond basic invocation.

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 description adds minimal value beyond the input schema, which has 100% coverage with clear descriptions for all three parameters. It mentions 'optional filtering' but doesn't elaborate on parameter interactions or usage examples. With high schema coverage, the baseline is 3, and the description doesn't significantly enhance parameter understanding.

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 the verb ('List') and resource ('packages in the SysML model'), making the purpose specific and understandable. However, it doesn't differentiate this tool from sibling tools like 'get_package' or 'search_by_name', which might also retrieve package information, so it doesn't reach the highest score.

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?

The description mentions 'optional filtering' but provides no guidance on when to use this tool versus alternatives like 'get_package' (for single packages) or 'search_by_name' (for broader searches). There's no explicit when/when-not usage context or named alternatives, leaving the agent with minimal direction.

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

resolve_referenceC

Resolve an xmi:id reference to get element details

ParametersJSON Schema
NameRequiredDescriptionDefault
xmiIdYesThe xmi:id to resolve

TDQS

C2.9/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 states the action ('resolve') but doesn't describe traits like whether this is a read-only operation, error handling for invalid IDs, performance characteristics, or output format. This is a significant gap for a tool with zero annotation coverage, making it minimally 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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('Resolve an xmi:id reference to get element details') earns its place by specifying the action, input, and outcome, making it highly concise and well-structured.

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?

Given the complexity (a reference resolution tool), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'element details' include, error cases, or how this differs from sibling tools. For a tool with no structured behavioral or output data, more context is needed to be fully helpful.

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 input schema has 100% description coverage, with 'xmiId' documented as 'The xmi:id to resolve'. The description adds no additional meaning beyond this, such as format examples or constraints. According to the rules, with high schema coverage (>80%), the baseline is 3 even without param info in the description, which applies here.

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 the verb ('resolve') and resource ('xmi:id reference'), specifying what the tool does. It distinguishes itself from siblings like 'get_class_details' or 'search_by_name' by focusing on ID resolution rather than name-based or class-specific queries. However, it doesn't explicitly differentiate from all siblings (e.g., 'find_classes' might also use IDs), keeping it from a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid xmi:id), exclusions, or comparisons to siblings like 'get_class_details' (which might return similar element details). Usage is implied by the purpose but not explicitly stated, leaving gaps for an AI agent.

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

search_by_nameB

Search for any element by name across the entire model

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesName or partial name to search for
exactMatchNoRequire exact name match
elementTypesNoLimit to specific element types

TDQS

B3.3/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. It mentions searching 'across the entire model' but doesn't disclose behavioral traits like pagination, result limits, performance implications, or error handling. This is a significant gap for a search tool with no annotation coverage.

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, efficient sentence that is front-loaded with the core purpose. There is zero waste, and every word earns its place by clearly conveying the tool's function.

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?

Given the tool's moderate complexity (search with filtering), no annotations, and no output schema, the description is adequate but has clear gaps. It covers the basic purpose but lacks details on behavior, results format, or limitations, making it minimally viable but incomplete for effective agent use.

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 parameters thoroughly. The description adds no additional meaning beyond what the schema provides, such as examples or context for parameter use. Baseline 3 is appropriate when the schema does the heavy lifting.

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 the tool's purpose with a specific verb ('Search') and resource ('any element by name across the entire model'). It distinguishes from siblings like 'find_classes' or 'list_packages' by emphasizing broader search scope, though it doesn't explicitly name alternatives.

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

Usage Guidelines3/5

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

The description implies usage for searching by name across all model elements, which suggests when to use it versus more specific tools like 'find_classes' or 'get_package'. However, it lacks explicit guidance on when to choose this tool over alternatives or any exclusions.

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

search_documentationB

Full-text search across all documentation/comments

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch terms (space-separated, all must match)
elementTypesNoLimit search to specific element types
limitNoMaximum results to return

TDQS

B3.1/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 full burden. It mentions 'full-text search' but lacks details on behavioral traits such as search algorithm (e.g., exact match, fuzzy), performance expectations, rate limits, or authentication needs. This is inadequate for a search tool with no annotation coverage.

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, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration, making it easy to parse quickly.

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?

Given no annotations and no output schema, the description is minimal. It covers the basic purpose but lacks context on search behavior, result format, or integration with siblings. For a search tool with 3 parameters and multiple alternatives, this leaves gaps in completeness.

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 fully documents parameters like 'query', 'elementTypes', and 'limit'. The description adds no additional meaning beyond what's in the schema, such as examples or usage tips, meeting the baseline for high schema coverage.

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 the tool performs 'full-text search across all documentation/comments', which specifies the action (search), scope (all documentation/comments), and method (full-text). However, it doesn't explicitly differentiate from sibling tools like 'search_by_name' or 'find_classes', which likely have more specific scopes.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'search_by_name', 'find_classes', and 'list_enumerations', there's no indication of when this broad search is preferred over more targeted tools, leaving usage context unclear.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.0
    • First observedfind_classes
    • First observedget_class_details
    • First observedget_enumeration
    • First observedget_inheritance_hierarchy
    • First observedget_model_statistics
    • First observedget_package
    • First observedlist_enumerations
    • First observedlist_packages
    • First observedresolve_reference
    • First observedsearch_by_name
    • First observedsearch_documentation

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific SysML model elements or operations. For example, find_classes searches for classes by criteria, get_class_details retrieves detailed class information, and search_by_name performs broader element searches, with no significant overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as find_classes, get_class_details, and list_packages. This uniformity makes the tool set predictable and easy to understand for an agent.

Tool Count5/5

With 11 tools, the count is well-scoped for exploring and querying a SysML model. Each tool serves a specific purpose, such as retrieving details, listing elements, or searching, without redundancy, making the set comprehensive yet manageable.

Completeness4/5

The tool set covers key operations for SysML model exploration, including retrieval, listing, searching, and statistical analysis. Minor gaps might exist, such as tools for modifying or validating the model, but the provided tools support most agent workflows effectively without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A generic MCP server that exposes local repository checkouts, allowing users to search and read code and documentation through natural language. It supports multiple instances, enabling seamless interaction with various codebases via configurable tool prefixes and URI schemes.
    2,013
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server designed for interacting with the Model Context Protocol Registry API to discover and retrieve information about available MCP servers. It provides tools to search, list, and view detailed configurations and version history for servers within the registry.
    4
    MIT

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/MRIIOT/XMIMCP'

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