name: mps-aspect-accessories description: Wire MPS module and model dependencies, used languages, used devkits, extended languages, runtime solutions, accessory models, and language/dependency versions. Use when adding/removing module dependencies, importing languages or devkits into a model, declaring runtime solutions, or shipping accessory content visible to consumers without explicit import. type: reference
MPS Module and Model Dependencies, Accessory Models
This skill covers the wiring layer of an MPS language — the module descriptor (.mpl) and the per-model imports — and the special role of accessory models and runtime solutions.
Note: accessory wiring does not introduce a new aspect model or stereotype; it edits the existing language descriptor and model imports. When you do need to create a new aspect or stereotyped model, see aspect-model-stereotypes.md for the canonical aspect IDs and @stereotype values.
Critical Directives
- Prefer MCP wiring tools over hand-editing
.mplXML. Hand-editing can silently corrupt the module descriptor. If you must hand-edit (e.g. foraccessoryModels, which has no dedicated MCP tool), make a backup, edit only the targeted block, and rebuild the module immediately afterwards so MPS re-reads the descriptor. - Don't hand-edit
languageVersions/dependencyVersions. MPS maintains these. Use the MPS "Update language/dependency versions" action. - Generator modules have their own dependency list. Add target-language deps to the generator, not the parent language.
- Used languages auto-import when nodes are inserted via
mps_mcp_insert_root_node_from_json,mps_mcp_update_node. Manually add a used language only for hand-written code or implicit dependencies. - A runtime solution holds the stable part of generation (code that doesn't vary with the model). Generate thin code that calls it; don't regenerate it. No MCP tool wires the language's
<runtime>block — seereferences/runtime-solutions.md.
Rule of Thumb — Dependency vs. Used Language
- If a concept is used in your language definition → add a
usedLanguage. - If a Java class is referenced in hand-written code → add a
dependencywith the right scope.
MCP Tools Quick Reference
- Module-level:
mps_mcp_module_dependency,mps_mcp_get_project_structure. - Model-level:
mps_mcp_model_dependency,mps_mcp_model_used_language(kind =languageordevkit). - Module creation:
mps_mcp_create_module(type="solution", …)for a runtime solution.
Common Workflow
- Inspect existing wiring:
mps_mcp_get_project_structure(startingPoint=<module>)for the module descriptor,mps_mcp_get_project_structurefor traversal. - Diagnose the symptom against the pitfalls table (
references/pitfalls.md). - Apply the right MCP tool at the right layer (module vs. model vs. accessory).
- Rebuild the module so MPS re-reads the descriptor.
Related Skills
mps-language-inheritance— when you need the difference betweenextendedLanguagesandusedLanguagesin detail.mps-aspect-generator— generator-module dependencies are managed separately from the parent language.mps-language-aspects-overview— to know which aspects exist and where each one lives.
Reference Index
- Open
references/module-level-deps.mdfor the full list of.mpldeclarations (dependencies, usedLanguages, usedDevKits, extendedLanguages, runtimeModules, generators, accessoryModels, version stamps), their scopes, and themps_mcp_module_dependencyscope-dispatch table. - Open
references/model-level-imports.mdfor per-modeldependencies, used languages, used devkits, and the auto-import behavior of node-insertion tools. - Open
references/accessory-models.mdwhen shipping a model that should be available to every consumer of the language without an explicit import — including the.mpl<accessoryModels>XML shape and the hand-edit caveat. - Open
references/runtime-solutions.mdfor runtime solutions — shipping the Java that generated programs call at run time (the generator's stable part, as MPS source or a prebuilt JAR): the Java-facet settings, the language<runtime>-block wiring, jar-as-stubs (java_classesmodel root + facet<library>), the no-MCP-tool caveat, and the Kaja/JavaKaja worked example. - Open
references/extends-vs-uses.mdfor the semantic difference betweenextendedLanguagesandusedLanguageswith examples. - Open
references/pitfalls.mdwhen you need to diagnose a symptom ("Cannot resolve concept X", "ClassNotFoundException", version mismatch, generator can't find target-language concept, devkit changes not picked up). - Open
references/module-creation.mdformps_mcp_create_module— supported types, language-only companions (withGenerator/withSandbox/withRuntime), and thefacetspolicy. - Open
references/module-rename.mdformps_mcp_update_module— what the rename cascades into, the "generator modules are not renameable" rule, and therenameWarnings/renameCriticalProblemssemantics. - Open
references/module-info-fields.mdfor the shared info envelope returned bymps_mcp_get_project_structure(startingPoint=<module>)/mps_mcp_create_module/mps_mcp_update_module—kind,facets,loadExtensions, DevKit-only fields.