XMI MCP Server
Enables querying and exploration of SysML models stored in XMI (XML) format, providing tools to navigate package hierarchies, find classes and blocks, inspect enumeration values, and perform full-text searches across model documentation.
Click on "Install 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., "@XMI MCP Servershow the inheritance hierarchy and properties for the Asset class"
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.
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 buildRelated MCP server: mcp-registry
Loading into Claude Code on Windows
Option 1: Add to User Settings (Recommended)
Open your Claude Code settings file at:
%APPDATA%\Claude\claude_desktop_config.jsonOr create it if it doesn't exist.
Add the MCP server configuration:
{ "mcpServers": { "xmimcp": { "command": "node", "args": ["C:\\source\\vibes\\xmimcp\\dist\\index.js"] } } }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 |
| string | Filter to children of this package (by name or xmi:id) |
| boolean | Include nested packages recursively (default: false) |
| string | Regex pattern to filter package names |
Example:
List all packages that contain "Asset" in their nameget_package
Get detailed information about a specific package including its children.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Package name or xmi:id |
Returns: Package details including child packages, classes, and enumerations.
Example:
Get details of the "Asset Information Model" packageClass/Block Tools
find_classes
Find classes/blocks by name, pattern, or package.
Parameters:
Parameter | Type | Description |
| string | Exact class name to find |
| string | Regex pattern for class names |
| string | Limit search to this package (name or id) |
| boolean | Search in nested packages (default: true) |
| boolean | Include abstract classes (default: true) |
Example:
Find all classes with "Tool" in their name
Find classes in the "Cutting Tool" packageget_class_details
Get full details of a class including properties, inheritance, and documentation.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Class name or xmi:id |
| 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 propertiesget_inheritance_hierarchy
Get the inheritance chain for a class showing ancestors and/or descendants.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Class name or xmi:id |
| string | No | One of: "ancestors", "descendants", "both" (default: "both") |
Example:
Show the inheritance hierarchy for the "Asset" classEnumeration Tools
list_enumerations
List all enumerations with optional filtering.
Parameters:
Parameter | Type | Description |
| string | Filter to a specific package |
| string | Regex pattern for enumeration names |
Example:
List all enumerations containing "Type" in their nameget_enumeration
Get details of an enumeration including all literal values and their documentation.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Enumeration name or xmi:id |
Returns: Enumeration details with all literals and their documentation.
Example:
Get all values of the "DataItemSubTypeEnum" enumerationSearch Tools
search_documentation
Full-text search across all documentation and comments in the model.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Search terms (space-separated, all must match) |
| array | No | Limit to: "class", "enumeration", "package", "datatype" |
| number | No | Maximum results (default: 50) |
Example:
Search documentation for "cutting tool life"
Search for "spindle" in class documentation onlysearch_by_name
Search for any element by name across the entire model.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Name or partial name to search for |
| boolean | No | Require exact name match (default: false) |
| 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 |
| 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
Ensure Node.js is installed and in your PATH
Verify the paths in the configuration use double backslashes (
\\) on WindowsCheck that
npm run buildcompleted successfully
XMI file not found
Verify the XMI file exists at the expected path
Use the
XMI_FILE_PATHenvironment variable to specify a custom location
Tools not appearing
Restart Claude Code after updating the configuration
Check the Claude Code logs for any error messages
Development
# Install dependencies
npm install
# Build
npm run build
# Run directly (for testing)
npm startLicense
MIT
Available Tools
11 toolsfind_classesC
Find classes/blocks by name, pattern, or package
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact class name to find | |
| namePattern | No | Regex pattern for class names | |
| package | No | Limit search to this package (name or id) | |
| recursive | No | Search in nested packages | |
| includeAbstract | No | Include abstract classes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Class name or xmi:id | |
| includeInherited | No | Include inherited properties from parent classes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Enumeration name or xmi:id |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Class name or xmi:id | |
| direction | No | both |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Package name or xmi:id |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| package | No | Filter to a specific package | |
| namePattern | No | Regex pattern for enumeration names |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| parentPackage | No | Filter to children of this package (by name or xmi:id) | |
| recursive | No | Include nested packages recursively | |
| namePattern | No | Regex pattern to filter package names |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| xmiId | Yes | The xmi:id to resolve |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Name or partial name to search for | |
| exactMatch | No | Require exact name match | |
| elementTypes | No | Limit to specific element types |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms (space-separated, all must match) | |
| elementTypes | No | Limit search to specific element types | |
| limit | No | Maximum results to return |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v1.0.0- First observed
find_classes - First observed
get_class_details - First observed
get_enumeration - First observed
get_inheritance_hierarchy - First observed
get_model_statistics - First observed
get_package - First observed
list_enumerations - First observed
list_packages - First observed
resolve_reference - First observed
search_by_name - First observed
search_documentation
TDQS
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.
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.
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.
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
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
MCP server for querying Forkast documentation
MCP server for AI access to Swagger by SmartBear.
Search and browse every MCP server in the Model Context Protocol registry.
An MCP server that provides access to Testiny projects, test cases and test runs
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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,013MIT
- AlicenseAqualityCmaintenanceAn 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.4MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that provides semantic search, graph query, and keyword search tools for interacting with DocSmith's knowledge graph and documentation.1MIT
- FlicenseNot gradedqualityAmaintenanceAn MCP server that gives an AI agent read and write access to a live SysML v2 model through the vendor-neutral OMG SysML v2 REST API.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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