Skip to main content
Glama
jgsystemsconsulting

jgs-magic-sysmlv1-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
pingA

Liveness probe. Calls the SysML v1 bridge plugin and returns its build metadata.

get_safety_stateA

Return the current safety tier (READ, WRITE, or DANGEROUS) plus dev mode status.

get_licenceA

Return the current licence status: tier, customer, expiry, validity.

save_projectB

Save the current Cameo project. Pass an optional comment for audit log.

get_edit_historyC

Return recent edit history (undo stack) from the open project.

undoA

Undo the last model edit.

redoB

Redo the last undone model edit.

get_elementA

Retrieve a single SysML v1 element by its local ID. Returns type, name, and owner ID.

find_by_nameC

Find all elements whose name contains the given string. Returns list of matches.

find_by_typeA

Find all elements matching a SysML v1 type name (e.g. Block, Requirement, FlowPort).

find_by_qualified_nameB

Find an element by its fully-qualified name (e.g. 'Model::Package::Block').

get_qualified_nameC

Return the fully-qualified name of an element.

get_root_packageA

Return the root model package of the open project.

list_childrenA

List direct children of an element. Returns list with id, name, type.

walk_treeC

Walk the containment tree from root_id. Returns nested tree structure.

searchC

Full-text search across element names.

describe_elementC

Return rich description of an element including stereotypes and tagged values.

get_element_structureA

Return the structural hierarchy under an element (parts, ports, properties).

get_relationshipsC

Return all relationships involving an element.

get_portsC

Return all ports owned by an element.

get_allocationsA

List all Allocate relationships from and to an element.

list_applied_stereotypesC

List all stereotypes applied to an element.

find_unitB

Search the model for SysML Unit-stereotyped elements by name substring.

find_quantity_kindA

Search the model for SysML QuantityKind-stereotyped elements by name substring.

create_elementC

Create a SysML v1 element of the given type under parent_id. Valid types: Block, Package, Requirement, ConstraintBlock, ValueType, InterfaceBlock, FlowPort, ProxyPort, FullPort, PartProperty, ValueProperty, ReferenceProperty, UseCase, Activity, StateMachine, State, Action, Actor, Signal, Class, DataType, Enumeration, Interface.

create_root_modelB

Set or rename the root model element. Returns the root model id and name.

create_enumerationB

Create an Enumeration with the given literal names under parent_id.

create_connectorC

Create a UML Connector between two ConnectableElements (ports, properties).

create_item_flowC

Create an ItemFlow on an existing Connector. The item_element_id must be a Classifier.

create_binding_connectorB

Create a BindingConnector (SysML equal-value constraint) between two properties/ports.

create_allocationC

Create an Allocate relationship from source to target (SysML Allocation).

create_generalizationC

Create a UML Generalization from a specific to a general classifier.

create_diagramB

Create a SysML diagram. kind: BDD, IBD, Parametric, Requirement, Activity, StateMachine, UseCase, Package, Sequence.

create_packageC

Create a UML Package under parent_id.

create_transitionA

Create a UML Transition between two Vertex elements (States/Pseudostates) in a StateMachine.

create_state_machineA

Create a UML StateMachine (with a default Region) owned by parent_id.

create_stateA

Create a State inside a Region. Set is_initial='true' for an initial Pseudostate, is_final='true' for a FinalState.

create_regionA

Create an additional Region inside a StateMachine or composite State (for concurrent/orthogonal regions).

set_state_actionA

Set an entry, do, or exit action body on a State. action_kind must be 'entry', 'do', or 'exit'.

set_transition_triggerC

Add a named Trigger to a Transition.

set_transition_guardC

Set an OpaqueExpression guard constraint on a Transition.

set_transition_effectC

Set an OpaqueBehavior effect on a Transition.

create_activityC

Create a UML Activity owned by parent_id.

create_actionC

Create an Action inside an Activity. action_type: OpaqueAction (default), CallBehaviorAction, SendSignalAction.

create_control_flowB

Create a ControlFlow edge between two ActivityNodes within an Activity.

create_object_flowC

Create an ObjectFlow edge between two ActivityNodes within an Activity.

create_requirementA

Create a SysML Requirement element under parent_id.

create_proxy_portC

Create a SysML ProxyPort on a Block.

create_full_portC

Create a SysML FullPort on a Block.

create_flow_portC

Create a SysML FlowPort on a Block.

add_refineB

Create a SysML Refine dependency from source to target.

add_copyC

Create a SysML Copy dependency from source to target.

add_traceB

Create a UML Trace dependency from source to target (StandardProfile).

list_layout_stylesA

List available auto-layout styles for a diagram.

compare_layout_stylesC

Compare how each auto-layout style would affect a diagram.

create_associationC

Create a UML Association between two classifiers.

create_association_blockC

Create a SysML Association Block (AssociationClass + Block stereotype).

create_flow_specificationC

Create a SysML FlowSpecification (Interface + FlowSpecification stereotype).

create_flow_propertyB

Create a SysML FlowProperty. direction: in | out | inout.

create_constraint_propertyC

Create a ConstraintProperty typed by a ConstraintBlock.

set_encapsulatedB

Set the isEncapsulated tagged value on a Block. value: 'true' or 'false'.

set_item_flow_conveyedC

Set the conveyed Classifier on a SysML ItemFlow.

create_interactionC

Create a UML Interaction (container for sequence diagram content).

create_lifelineC

Create a Lifeline inside a UML Interaction.

create_messageA

Create a Message between two Lifelines in an Interaction. Creates send/receive occurrence specs automatically.

create_combined_fragmentA

Create a CombinedFragment in an Interaction. operator: alt | opt | loop | break | par | seq | strict | neg.

get_standard_library_typesA

Return the available standard library DataTypes from the open project.

rename_elementC

Rename a SysML v1 element.

set_documentationC

Set the documentation (owned Comment body) of an element.

delete_elementB

Permanently delete an element from the model.

move_elementB

Move an element to a new parent (re-owner).

set_typeB

Set the type of a TypedElement (Property, Parameter, Port, etc.).

set_multiplicityC

Set multiplicity bounds on a MultiplicityElement (Property, etc.). Use -1 for upper=*.

set_valueC

Set the default value of a Property as a LiteralString.

set_constraintC

Create a Constraint with an OpaqueExpression body on parent_id.

set_propertyC

Set a tagged value (stereotype property) on an element via TagsHelper.

apply_stereotypeB

Apply a stereotype to an element by its qualified name.

remove_stereotypeB

Remove a stereotype from an element by its qualified name.

set_requirement_idB

Set the SysML requirement ID tagged value on a Requirement element.

set_requirement_textA

Set the normative requirement text on a Requirement element.

set_value_type_unitC

Set the unit of a SysML ValueType element.

set_flow_directionB

Set the direction of a Parameter. Valid values: IN, OUT, INOUT, RETURN.

set_aggregationA

Set a Property's UML aggregation: composite (part), shared, or none (reference).

add_satisfyB

Create a Satisfy relationship from a satisfying element to a requirement.

add_verifyB

Create a Verify relationship from a verifying element to a requirement.

add_deriveC

Create a DeriveReqt relationship between two requirements.

set_connection_endsB

Set source and target ConnectorEnd roles on a Connector.

add_dependencyB

Create a UML Dependency between a client and supplier element.

create_blockC

Create a SysML v1 Block under parent_id.

create_part_propertyC

Create a PartProperty (typed composite part) under a Block.

create_value_propertyB

Create a ValueProperty (scalar attribute) under a Block.

create_reference_propertyC

Create a ReferenceProperty under a Block.

create_interface_blockC

Create a SysML InterfaceBlock under parent_id.

create_value_typeB

Create a SysML ValueType under parent_id.

create_constraint_blockC

Create a SysML ConstraintBlock under parent_id.

create_use_caseC

Create a UseCase element under parent_id.

create_actorB

Create an Actor element under parent_id.

list_diagramsC

List diagrams owned by a package or element.

list_diagram_kindsA

Return supported diagram kinds for SysML v1.

add_symbolC

Add an element symbol to a diagram. Phase B stub.

remove_symbolC

Remove an element symbol from a diagram. Phase B stub.

populate_diagramC

Add multiple element symbols to a diagram. Phase B stub.

auto_layout_diagramC

Apply Cameo's automatic layout to a diagram.

list_diagram_symbolsB

List all symbols currently in a diagram. Phase B stub.

export_diagram_imageA

Export a diagram as a JPEG image (base64 encoded, max 1024px).

Returns MCP ImageContent containing the resized diagram image. The image is re-encoded as JPEG for compatibility with the Claude API.

apply_custom_layoutB

Apply a named layout style to a diagram.

move_symbolD

Move a symbol to specific coordinates. Phase B stub.

resize_symbolC

Resize a symbol in a diagram. Phase B stub.

set_symbol_styleC

Set visual style properties on a diagram symbol. Phase B stub.

set_compartment_visibilityC

Show or hide a compartment on a symbol. Phase B stub.

add_pathC

Add a relationship path to a diagram. Phase B stub.

route_pathC

Set routing style for a relationship path. Phase B stub.

add_diagram_noteC

Add a text note to a diagram. Phase B stub.

impact_analysisC

Return elements that use or are used by the given element.

validate_modelA

Run built-in model validation and return structural violations.

Spelling suite violations (Cameo spell-checker noise) are separated into a spelling array and excluded from the violations count so that the 0-errors gate only reflects structural/semantic issues.

check_requirement_coverageA

Return coverage statistics for requirements.

scope controls which requirements are counted:

  • "authored" (default) — only user-model requirements, excluding SysML library and profile elements that inflate the denominator.

  • "all" — every requirement in the model (legacy behaviour).

New fields: tracedCoverage (Satisfy + Refine + DeriveReqt + Verify), orphans (requirements with zero traceability links). Legacy fields total, satisfied, unsatisfied, satisfyCoverage are preserved.

check_documentation_coverageA

Return the fraction of named elements that have documentation set.

scope controls the denominator:

  • "authored" (default) — only user-model elements; avoids the ~25% ceiling caused by ~1840 undocumentable SysML library elements.

  • "all" — every named element (legacy behaviour).

coverage reflects the scoped fraction; coverageModelWide is always reported for reference.

check_naming_conventionsA

Return elements that violate UML naming conventions.

scope controls which elements are checked:

  • "authored" (default) — user-model only; suppresses ~85 library internals (base_*, extension_*, A_*).

  • "all" — every element.

allowed_patterns is an optional comma-separated list of regex patterns that exempt names from the default rules. Use this to allow requirement-ID schemes such as ^[A-Z]{2,}-\d+$ or Magic Grid label patterns like ^.+ Scenario$.

find_unused_typesA

Return classifiers that are not used as a type anywhere in the model.

find_duplicatesA

Return elements that share the same type+name combination.

export_requirements_matrixA

Return a full requirements traceability matrix with satisfy/verify links.

trace_requirementA

Return full traceability chain for one requirement (derive, satisfy, verify).

generate_model_summaryB

Return a high-level summary of model element counts and coverage.

get_model_metricsA

Return raw element counts broken down by UML/SysML type.

enable_writesC

Enable write operations. Requires the write secret.

disable_writesC

Disable write operations. Requires the write secret.

enable_dangerous_writesA

Enable dangerous write operations (delete, structural changes). Requires the write secret.

enable_dev_modeC

Enable developer mode. Requires the write secret.

disable_dev_modeB

Disable developer mode. Requires the write secret.

begin_batchB

Open a batch session. All write operations within the batch are committed atomically when commit_batch fires.

commit_batchB

Commit all queued operations in the given batch session.

abort_batchB

Roll back all queued operations in the given batch session.

execute_groovyA

Execute Groovy script inside CATIA Magic's JVM with full SysML v1 API access. Requires dev mode active on the plugin side (see enable_dev_mode). Dev mode is a plugin-lifetime capability: it can only be enabled if JGS_V2_DEV_SECRET was set in the CATIA Magic process environment at startup, and the client must supply the matching secret value to enable_dev_mode. Dev mode is independent of licence tier: a FREE-tier client whose plugin was launched with JGS_V2_DEV_SECRET set can still enable dev mode and call execute_groovy. The env var is the security control.

A 'helpers' object is pre-loaded with convenience methods for the v1 (UML/MagicDraw-profile) API. All stereotype names are SysML profile names (e.g. "Block", "Requirement", "Satisfy") — strings, NOT classes:

helpers.findByQN('Model::Pkg::Element') — find by qualified name; returns the Element or null.

helpers.createElement(parent, 'name', factoryFn, stereotypeName=null) — create element under parent. factoryFn is a 0-arg closure returning a fresh element from project.elementsFactory, e.g. { project.elementsFactory.createClassInstance() } (for Block / Requirement) { project.elementsFactory.createPackageInstance() } (for Package) Optionally applies a SysML stereotype by name.

helpers.applyStereotype(element, 'Block') — apply a SysML stereotype by name (uses StereotypesHelper internally).

helpers.setTaggedValue(element, 'Requirement', 'id', 'REQ-001') — set a stereotype-tagged property value.

helpers.getTaggedValue(element, 'Requirement', 'id') — read a stereotype-tagged property value; returns a List (may be empty) or null.

The 'project' binding is pre-loaded with the currently-open Project instance.

Returns a pretty-printed JSON string (str, not dict — intentional: LLM consumers parse the indented JSON for readability, matching v2's macro_tools convention; other v1 tools return dict because FastMCP auto-serialises them, which is fine for non-LLM-facing payloads).

JSON shape (matches v2's executeGroovyStatic exactly): success (bool): true on successful eval, false on exception result (str): script return value via String.valueOf, "null" if script returned null. Only present when success. output (str): captured stdout/stderr from the script error (str): exception message. Only present when not success.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.6/5.0

Scored across 133 tools

Disambiguation2/5

There is direct overlap between the generic create_element factory and roughly 20 specialized create_* tools, so agents face ambiguity about which to call. Generic set_property also overlaps with domain-specific setters like set_requirement_id, and the many Phase B diagram stubs add further confusion.

Naming Consistency4/5

The vast majority of tools follow a clean verb_noun snake_case pattern such as create_block, set_multiplicity, and add_satisfy. A few outliers like ping, undo, redo, search, and impact_analysis break the pattern, but there is no mixed casing or chaotic convention.

Tool Count1/5

133 tools is an extreme number for any MCP server, especially when many are Phase B stubs and the generic create_element tool duplicates numerous specialized create_* variants. Even for a broad SysML v1 modeling surface, this count would be far more manageable around 40-60 consolidated tools.

Completeness3/5

The tool set covers a broad range of SysML v1 modeling: blocks, requirements, ports, flows, state machines, activities, sequences, diagrams, stereotypes, validation, and model metrics. However, there are notable gaps such as no create_parameter or create_operation tools, no delete_diagram, and many diagram symbol operations are explicitly stubs.

Maintenance

ActivityMaintained
ResponsivenessNo issues