jgs-magic-sysmlv1-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| check_requirement_coverageA | Return coverage statistics for requirements.
New fields: |
| check_documentation_coverageA | Return the fraction of named elements that have documentation set.
|
| check_naming_conventionsA | Return elements that violate UML naming conventions.
|
| 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 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 133 tools
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.
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.
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.
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.