mmar-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MMAR_API_URL | No | The URL of the MM-AR API. Defaults to http://localhost:8000. | http://localhost:8000 |
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": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mmar_loginA | Log in to the MM-AR metamodeling platform. This MUST be called first before using any other MM-AR tools. Returns a confirmation that the session is active. |
| mmar_check_sessionA | Check if there is an active MM-AR session (i.e., if the user is currently logged in). |
| mmar_logoutA | Log out from the MM-AR platform by clearing the stored session token. |
| mmar_list_scene_typesA | List all available modeling languages (SceneTypes) in MM-AR. Each SceneType defines a modeling language with its classes, relations, and rules. Returns an array of SceneType objects with their UUIDs and names. |
| mmar_get_scene_typeA | Get the full details of a specific modeling language (SceneType) by its UUID. Returns the complete SceneType including all its classes, relationclasses, attributes, ports, and roles. |
| mmar_get_classes_for_scene_typeA | Get all classes (node/shape types) defined in a specific modeling language (SceneType). Classes represent the elements that can be placed on a diagram. |
| mmar_get_relationclasses_for_scene_typeA | Get all relation types (edge/connection types) defined in a specific modeling language (SceneType). Relationclasses define how elements can be connected to each other, including their roles (source/destination rules). |
| mmar_get_classA | Get the full details of a specific class (node type) by its UUID. Returns the class with its attributes, ports, and geometry (VizRep). |
| mmar_get_relationclassA | Get the full details of a specific relation type (edge type) by its UUID. Returns the relationclass with its role_from, role_to, attributes, and connection rules. |
| mmar_list_attribute_typesA | List all available attribute types in MM-AR (e.g., String, Float, Integer, Boolean, Enumeration, Table). These are the primitive data types that attributes can use. You MUST know these UUIDs before creating attributes on classes or relationclasses. |
| mmar_get_attribute_typeA | Get full details of a specific attribute type by UUID. Returns the type definition including its regex validation pattern, name, and description. |
| mmar_get_attributeA | Get the full details of a specific meta-attribute by UUID. Returns the attribute definition including its type, default value, sequence, and UI component. |
| mmar_get_roleA | Get the full details of a specific role by UUID. Returns the role definition including its class_references (which classes it can connect to), port_references, and cardinality (min/max). |
| mmar_get_portB | Get the full details of a specific port by UUID. Ports are connection points on classes. |
| mmar_create_scene_typeA | Create a complete modeling language (SceneType) in MM-AR in a SINGLE atomic transaction. This is the primary way to create metamodels. IMPORTANT RULES:
The scene_type_data JSON must follow this structure: { "uuid": "", "name": "My Language", "description": "...", "classes": [{ uuid, name, geometry, attributes: [{ uuid, name, attribute_type: { uuid, name }, default_value, sequence }], ports: [] }], "relationclasses": [{ uuid, name, geometry, role_from: { uuid, name, class_references: [{ uuid, min, max }] }, role_to: { uuid, name, class_references: [{ uuid, min, max }] }, attributes: [], ports: [] }], "attributes": [], "ports": [], "procedures": [] } |
| mmar_update_scene_typeA | Update an existing modeling language (SceneType). Uses smart diff-based updates by default — new children are added, existing ones are updated. Set hardpatch=true for FULL REPLACEMENT mode: children not in the payload will be DELETED. Use with caution. Send the complete desired state of the SceneType (same structure as mmar_create_scene_type). |
| mmar_delete_scene_typeA | Delete a modeling language (SceneType) and ALL its contents (classes, relationclasses, attributes, etc.) permanently. This cannot be undone. |
| mmar_create_classA | Create a new class (node/shape type) and add it to an existing SceneType. Use this for incremental metamodel building instead of recreating the whole SceneType. The class_data JSON should include: uuid, name, geometry (VizRep function or null), is_reusable, is_abstract, attributes (array), and ports (array). |
| mmar_update_classA | Update an existing class (node type). Send the complete desired state — the server will diff and apply changes to attributes, ports, and other properties. |
| mmar_delete_classA | Delete a class (node type) from a metamodel permanently. This also removes its attributes, ports, and any role references to it. |
| mmar_create_relationclassA | Create a new relationclass (edge/connection type) and add it to an existing SceneType. IMPORTANT: The classes referenced in role_from.class_references and role_to.class_references MUST already exist in the SceneType. The relationclass_data JSON should include: uuid, name, geometry, role_from (with uuid, name, class_references[{uuid, min, max}]), role_to (same structure), bendpoint, attributes, ports. |
| mmar_update_relationclassA | Update an existing relationclass (edge type). Send the complete desired state — the server will diff and apply changes to roles, attributes, and other properties. |
| mmar_delete_relationclassA | Delete a relationclass (edge type) from a metamodel permanently. This also removes its roles, attributes, and ports. |
| mmar_create_attribute_for_classA | Add a new attribute to an existing class. The attribute_data must include uuid, name, attribute_type (with uuid and name of an existing AttributeType), default_value, sequence, and ui_component. |
| mmar_create_attribute_for_scene_typeA | Add a new attribute to an existing SceneType (scene-level attribute, not on a class). Same structure as class attributes. |
| mmar_update_attributeB | Update an existing meta-attribute. Send the updated attribute data including name, default_value, sequence, ui_component, and attribute_type. |
| mmar_update_roleA | Update an existing role on a relationclass. Use this to change cardinality (min/max) or which classes a role can connect to (class_references). Send the complete desired state of the role. |
| mmar_create_portA | Create a new port (connection point) on a class. Ports define where connections can attach to an element. |
| mmar_update_portA | Update an existing port. Send the complete desired state of the port. |
| mmar_list_scene_instancesA | List all model instances (diagrams) for a specific modeling language (SceneType). Returns an array of SceneInstance objects with their UUIDs, names, and content. |
| mmar_get_scene_instanceA | Get the full details of a specific model instance (diagram) by its UUID. Returns the complete SceneInstance including all class instances, relationclass instances, attribute instances, role instances, and port instances. |
| mmar_create_scene_instanceA | Create a new model instance (diagram) for a specific SceneType. The scene_instance_data should be a JSON object with at minimum: uuid (generate a new UUID v4), name, and optionally class_instances, relationclasses_instances, role_instances, attribute_instances, and port_instances arrays. |
| mmar_update_scene_instanceA | Update an existing model instance (diagram). Uses smart diffing — new elements are added, existing ones updated. IMPORTANT: This is the RECOMMENDED way to add connections (relationclass instances). Include uuid_scene_type in the payload. New relationclasses_instances entries will be created. The payload must include at minimum: uuid, name, uuid_scene_type. Add relationclasses_instances array with connection objects including role_instance_from/to. |
| mmar_delete_scene_instanceA | Delete a specific model instance (diagram) and all its contents by UUID. |
| mmar_get_class_instancesA | Get all class instances (elements/nodes) within a specific scene instance (diagram). |
| mmar_get_class_instanceA | Get the full details of a specific class instance (element/node) by its UUID. Returns the class instance with its attribute instances, port instances, and position. |
| mmar_create_class_instanceA | Create a new class instance (element/node) within a scene instance. IMPORTANT: The API does NOT auto-create attribute instances. You MUST include them in the payload. For each attribute on the meta-Class, create an attribute_instance with:
Example payload: { "uuid": "", "uuid_class": "", "name": "My Element", "coordinates_2d": {"x": 0, "y": 0, "z": 0}, "attribute_instance": [ { "uuid": "", "name": "Name", "value": "My Element", "uuid_attribute": "" } ] } |
| mmar_update_class_instanceA | Update an existing class instance. Send the complete desired state including position, attribute instances, etc. |
| mmar_delete_class_instanceA | Delete a specific class instance (element/node) from a diagram by its UUID. |
| mmar_get_relationclass_instancesA | Get all relationclass instances (connections/edges) within a specific scene instance (diagram). |
| mmar_get_relationclass_instanceA | Get the full details of a specific relationclass instance (connection/edge) by its UUID. |
| mmar_create_relationclass_instanceA | Create a new relationclass instance (connection/edge) within a scene instance. Include:
line_points are AUTO-POPULATED from source/target coordinates — you do NOT need to provide them. |
| mmar_update_relationclass_instanceA | Update an existing relationclass instance (connection/edge). Send the complete desired state. |
| mmar_delete_relationclass_instanceA | Delete a specific relationclass instance (connection/edge) from a diagram by its UUID. |
| mmar_get_attribute_instanceA | Get the full details of a specific attribute instance by its UUID. Returns the attribute value, type reference, and which element it belongs to. |
| mmar_get_attribute_instances_for_class_instanceA | Get all attribute instances for a specific class instance (element). |
| mmar_get_attribute_instances_for_relationclass_instanceA | Get all attribute instances for a specific relationclass instance (connection). |
| mmar_update_attribute_instanceA | Update the value of an attribute instance. Use this to change data values on elements (e.g., setting a name, description, or any custom attribute). |
| mmar_delete_attribute_instanceB | Delete a specific attribute instance by its UUID. |
| mmar_get_role_instanceA | Get the full details of a specific role instance by its UUID. Returns the role instance with its class instance reference and cardinality. |
| mmar_get_role_from_for_relationclass_instanceA | Get the source (from) role instance of a specific relationclass instance. |
| mmar_get_role_to_for_relationclass_instanceA | Get the destination (to) role instance of a specific relationclass instance. |
| mmar_update_role_instanceA | Update an existing role instance. Use this to change which class instance a connection endpoint references. |
| mmar_get_port_instanceA | Get the full details of a specific port instance by its UUID. |
| mmar_get_port_instances_for_scene_instanceA | Get all port instances within a specific scene instance. |
| mmar_create_port_instanceB | Create a new port instance within a scene instance. |
| mmar_update_port_instanceA | Update an existing port instance. Send the complete desired state. |
| mmar_delete_port_instanceA | Delete a specific port instance by its UUID. |
| mmar_get_bendpoints_for_relationclass_instanceA | Get all bendpoint instances for a specific relationclass instance (connection). Bendpoints define intermediate waypoints on a connection line. |
| mmar_create_bendpointA | Create a new bendpoint on a relationclass instance (connection). Bendpoints add waypoints to the connection line for routing. |
| mmar_update_bendpointA | Update an existing bendpoint. Use this to change the waypoint position. |
| mmar_delete_bendpointA | Delete a specific bendpoint from a connection by its UUID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create-metamodel | Guided workflow for creating a complete modeling language (SceneType) from a natural-language description. Walks through AttributeType discovery, UUID generation, class/relationclass design, VizRep geometry, and one-shot creation. |
| create-model | Guided workflow for creating a model instance (diagram) from a natural-language description of a system. Discovers the metamodel structure and creates elements + connections. |
| analyze-model | Guided workflow for analyzing an existing model — checks completeness, validates against metamodel rules, and identifies potential issues. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| platform-info | General information about the MM-AR metamodeling platform, its concepts, and how to use the MCP tools. |
| vizrep-templates | Visual Representation (VizRep) geometry code templates for common modeling element shapes. CRITICAL: Elements without geometry cannot be dragged onto the modeling canvas. |
| metamodel-schema | Exact JSON structure required for mmar_create_scene_type. Use this as your template when building SceneType payloads. |
| attribute-type-catalog | Static reference of all pre-defined AttributeTypes with their semantics and recommended ui_component values. Call mmar_list_attribute_types at runtime to get current UUIDs. |
| example-metamodel | A complete, working Petri Net metamodel JSON payload that can be passed directly to mmar_create_scene_type. Use as a ground-truth reference for structure and geometry. NOTE: Replace AttributeType UUIDs with values from mmar_list_attribute_types. |
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/ProTech001/mmar-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server