MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Add, update, or delete MPS nodes using JSON blueprints — covers the unified blueprint format, staged construction for large subtrees, validation, and reference repair.
$ npx skills add JetBrains/MPS --skill mps-node-editing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JetBrains/MPS mps-node-editing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/mps-node-editing .claude/skills/mps-node-editing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "mps-node-editing" agent skill from https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editing into .claude/skills/mps-node-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mps-node-editing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add JetBrains/MPS --skill mps-node-editing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JetBrains/MPS mps-node-editing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/mps-node-editing .agents/skills/mps-node-editing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mps-node-editing" agent skill from https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editing into .agents/skills/mps-node-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mps-node-editing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JetBrains/MPS --skill mps-node-editing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JetBrains/MPS mps-node-editing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/mps-node-editing .cursor/skills/mps-node-editing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "mps-node-editing" agent skill from https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editing into .cursor/skills/mps-node-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mps-node-editing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/JetBrains/MPS.git --path .agents/skills/mps-node-editing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add JetBrains/MPS --skill mps-node-editing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JetBrains/MPS mps-node-editing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/mps-node-editing .gemini/skills/mps-node-editing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "mps-node-editing" agent skill from https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editing into .gemini/skills/mps-node-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mps-node-editing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install JetBrains/MPS mps-node-editingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add JetBrains/MPS --skill mps-node-editing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/mps-node-editing .github/skills/mps-node-editing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "mps-node-editing" agent skill from https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editing into .github/skills/mps-node-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mps-node-editing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JetBrains/MPS --skill mps-node-editing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JetBrains/MPS mps-node-editing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/mps-node-editing .opencode/skills/mps-node-editing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "mps-node-editing" agent skill from https://github.com/JetBrains/MPS/tree/master/.agents/skills/mps-node-editing into .opencode/skills/mps-node-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mps-node-editing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
mps-node-editingAdd, update, or delete MPS nodes using JSON blueprints — covers the unified blueprint format, staged construction for large subtrees, validation, and reference repair.
Mps Node Editing is an agent skill from JetBrains/MPS, published by the product's own GitHub organization. Add, update, or delete MPS nodes using JSON blueprints — covers the unified blueprint format, staged construction for large subtrees, validation, and reference repair. Use whenever creating, editing, or restructuring nodes in any MPS model (structure, editor, behavior, generator, application code, etc.).
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `references/json-format.md`, `references/staged-construction.md` and `references/troubleshooting.md`).
It works with Model Context Protocol. The repository describes itself as: JetBrains Meta programming System. The licence is Apache-2.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit a92f944. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Mps Node Editing loads about 4.7k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 81 tokens; SKILL.md has 2,380 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from JetBrains/MPS at commit a92f944, republished under its Apache-2.0 licence (© JetBrains). 2,380 words, ~4,675 tokens.
.claude/skills/mps-node-editing/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Companion names in this skill are lazy dependencies: load only those relevant to the current task. If this skill came from an MCP server, use the host's skill loader to resolve the companion's unique discovered entry URI on the same host-assigned originating server. If the host has no server-backed skill loader, stop and report that limitation; do not silently fall back to a filesystem copy. If this skill came from a filesystem catalog, load the named sibling from that same catalog at <skills-root>/<skill-name>/SKILL.md, even if remote skill loaders are also available. Do not invent a tool name or server endpoint.
The core workflow for mutating MPS nodes through MCP tools. JSON blueprints describe the node hierarchy you want; the tools resolve concepts, references, and used languages on insert.
concept field — it is unambiguous and does not require a conceptReference.mps_mcp_get_current_editor_root_node (for the user's focus) or mps_mcp_search_root_node_by_name (by name) to lock onto the target. Don't guess refs.mps_mcp_update_node (ADD/CHILD or SET/CHILD) preserves persistent IDs. mps_mcp_update_root_node_from_json rewrites the entire root and is wasteful when only one subtree changed.mps_mcp_alter_nodes COPY_NODE, not a JSON blueprint. It clones the subtree natively — correct concept, properties, refs, nested structure — as the next sibling (multi-child role) or new root, then tweak with mps_mcp_update_node. Reserve JSON blueprints for nodes with no close match to copy from.mps_mcp_check_root_node_problems immediately after inserting or modifying a complex node. "ok": true from insert does not mean the AST is semantically valid.mps_mcp_update_node — Unified Node-Mutation ToolAll child, property, and reference operations on existing nodes go through mps_mcp_update_node. The operation is selected via operation (ADD/SET) × kind (CHILD/PROPERTY/REFERENCE). There is no DELETE operation — deletion is a SET: omit childJson to delete a child, or pass an explicit null as a triplet's value to clear a property or reference. A shortened triplet is rejected (Invalid property triplet: expected at least 3 elements, and the reference equivalent), so the null has to be written out.
| operation × kind | Required parameters | Notes |
|---|---|---|
ADD × CHILD | nodeReference (parent), childRole, childJson | Optional position (0-based; null/-1 = append) and dryRun. A position ≥ the current child count clamps to an append; a negative value other than -1 is rejected. The response's data.index reports the actual landing index. |
SET × CHILD | childNodeRef (+ childJson to replace) | Replaces an existing child; preserves its position in the role. Optional dryRun. The success envelope is the parent's (data.reference), not the new child's, for both a replacement and a deletion; the replaced child's reference is stale. Omit childJson to delete the child — mps_mcp_update_node offers no other way to delete one (a whole-root rewrite via mps_mcp_update_root_node_from_json can also drop children). |
SET × PROPERTY | properties = [[nodeRef, propertyName, value], …] | Batch operation; returns per-row results. A row whose value is an explicit null deletes that property; a two-element row is rejected, not treated as a delete. |
SET × REFERENCE | references = [[nodeRef, role, targetRefOrName], …] | Batch operation; targetRefOrName accepts an r:... ref or a plain name. A plain name is resolved within the reference role's search scope; if it cannot be resolved the call fails (NOT_FOUND), preserves the previous reference value, and stores no dangling reference. A row whose targetRefOrName is an explicit null deletes that reference; a two-element row is rejected, not treated as a delete. |
ADD × PROPERTY and ADD × REFERENCE are not valid combinations and return an error envelope. So does any other operation value, DELETE included.
mps_mcp_update_node (PROPERTY / REFERENCE / CHILD) and mps_mcp_alter_nodes MOVE_CHILD / MOVE_NODE_TO_PARENT / COPY_NODE also work on nodes inside the current MPS Console input command — pass the node's normal persistent reference; no extra parameter is needed. The node must be inside the current unexecuted console input (not history/stale). MOVE_NODE_TO_PARENT only relocates a node within the current console command — moving a node between the console and a project model, or making a console node a root, is refused. Edits to console nodes skip disk-persistence and refresh the console's imports instead. Nodes outside the selected project are rejected as before.
For project models, MOVE_NODE_TO_PARENT has two intentional forms. Supply a non-null newParentRef and role to reparent the node. To promote it to a root, omit newParentRef and supply modelReference. Do not send "newParentRef": null: explicit null is rejected so it cannot accidentally select the promotion form.
childJson accepts the blueprint as real JSON, as that JSON written as a string (max 4 KB), or as an absolute path to a TEMPORARY file (inside the system temp directory) containing it. Over 4 KB, use the file form to avoid MCP-transport truncation.
Where a documented null means something, how you express it depends on where it sits. For SET × CHILD, the null is the childJson parameter: express it by omitting the parameter or sending an unquoted JSON null. For SET × PROPERTY/REFERENCE the null is the third element of a triplet, so it must be written out as an unquoted JSON null — omitting the properties/references parameter is rejected as missing, and a two-element row is rejected as a malformed triplet, not read as a delete. In neither case is the 4-character string "null" the null form — for childJson it is rejected as Input is the string 'null', not a JSON object/array or a file path.
mps-language-analysis skill if you do not yet know what concepts the model uses.mps_mcp_get_current_editor_root_node for the user's focus.mps_mcp_search_root_node_by_name for a known name.mps_mcp_get_project_structure.mps_mcp_get_concept_details for specific languages.mps_mcp_search_concepts for discovery.mps_mcp_create_root_node / mps_mcp_insert_root_node_from_json for new roots; mps_mcp_update_node (ADD/SET × CHILD/PROPERTY/REFERENCE) for surgical edits; mps_mcp_update_root_node_from_json only for full-root rewrites.dryRun: true call checks concepts, roles, properties and assignability, but it never looks up a reference target given by name: it warns "is a name, not looked up" for every one, including names that exist. Do not rewrite names or dry-run again because of those warnings. Fix only the "names no node" and "matches no Model.Root" warnings, and after the real write check fixReferences.stillBroken. The full rule is under "Dry-run response" in references/reference-formats/response-envelope.md in the mps-mcp-workflow skill root after loading that companion skill from the same origin.mps_mcp_check_root_node_problems. Reported problems may carry a quickFixes array; apply one with mps_mcp_apply_intention, or pass autoApplyQuickFixes=true for one-shot repair of the auto-applicable ones.mps_mcp_alter_nodes FIX_REFERENCES if validation surfaces resolvable-but-unresolved targets.mps-aspect-structure-concepts — defines what concepts exist and what roles they expose.mps-aspect-actions — node factories: what a concept initializes on creation, before your blueprint is applied.mps-baselanguage — when the nodes you edit are BaseLanguage / Java.mps-quotations — embedding inline node literals inside model code.mps-language-analysis — exploring an unfamiliar language before editing.mps-model-manipulation — when the edit also requires navigating the tree from model code (.ancestor<C>, .descendants<C>, siblings, containingRoot); open only references/dot-expression-basics.md in the mps-model-manipulation skill root after loading that companion skill from the same origin.The tools that accept a node JSON blueprint (mps_mcp_update_node for ADD/SET × CHILD, mps_mcp_insert_root_node_from_json, mps_mcp_update_root_node_from_json) all use the same childJson / json parameter convention:
references/json-format.md for the accepted directories.mps_mcp_insert_root_node_from_json and mps_mcp_update_root_node_from_json additionally accept a top-level array for a bulk insert, which mps_mcp_update_node's childJson does not — it takes a single object (or a file path).mps_mcp_print_node; in the latter case the data field is used.dryRun=false).mps_mcp_update_node (ADD/CHILD or SET/CHILD), or pass the JSON as a file path instead of an inline string. See references/staged-construction.md for the recommended pattern.Many concepts ship a node factory (the language's actions aspect) that initializes a freshly
created node. It fires before your blueprint is applied, and it may set properties, add children,
wire references, and reach outside the node entirely: add a used language or model import, add a
module dependency, or bump the language's version. Factories are inherited, so a concept gets the
factories of its super-concepts and its implemented interfaces.
A factory runs for every node that is newly created, and not for a node that already exists:
| Tool | Factory runs for |
|---|---|
the editor, mps_mcp_create_root_node | the new node |
mps_mcp_insert_root_node_from_json | each new root and every nested blueprint child |
mps_mcp_update_node ADD × CHILD, SET × CHILD with a childJson | the new child and its nested children |
mps_mcp_insert_console_command_from_json | the new command node and its children |
mps_mcp_update_root_node_from_json | only the staged children — the root itself already exists, so nothing runs for it |
mps_mcp_update_node SET × CHILD with no childJson (a delete) | nothing |
How a blueprint composes with the factory:
| Blueprint says | Result |
|---|---|
| nothing about a property | the factory's value stands |
| a property the factory also set | your value wins (properties are applied after the factory) |
| nothing about a child role | the factory's children in that role stand |
| a child role | that role is cleared first, then filled from your blueprint |
| nothing about a reference role | the factory's target stands |
| a reference role | your target wins |
Practical consequences:
MigrationScript's or PureMigrationScript's
language-version bump (see the mps-aspect-migrations skill).mps_mcp_check_root_node_problems will report it. That is intentional: the blueprint stays exact.dryRun: true does not run factories at all — their side effects land on the model and module
and nothing rolls them back. A dry run therefore validates the blueprint, not the final node.mps_mcp_update_module(operation="SYNC_VERSION") re-derives the version from the scripts that
actually exist.warnings entry naming the concept, and the node is still created — treat its
factory-initialized state as absent. But a factory that catches internally reports nothing and
the envelope looks clean. That is the norm for AutoInitDSLClass concepts (MigrationScript
among them), whose initializer runs behind its own catch and surfaces only in idea.log. For
those, verify the state the factory was supposed to set rather than trusting ok: true.To see whether a concept has a factory at all, use
mps_mcp_query_structure(operation = "LIST_CONCEPT_ASPECTS", …) — it reports which aspect models
declare something for the concept, including actions. (mps_mcp_get_concept_details does not
list aspects.) The mps-aspect-actions skill covers authoring and reading factories.
references/json-format.md when you need the unified JSON blueprint shape — concept/properties/children/references layout, optional-section rules, and reference-resolution semantics (r:... vs name auto-resolution).references/staged-construction.md when the subtree is large (>~4 KB) or its child refs are needed for later edits — the skeleton → validate → incremental-fill → targeted-update → cleanup pattern.references/troubleshooting.md when an insert call fails with JsonElement.getAsString() errors or when the JSON shape diverges from the user's textual notation.scripts/table_to_bulk_insert.py — turns a CSV (or JSON rows) plus a small JSON mapping spec
into the top-level-array blueprint mps_mcp_insert_root_node_from_json accepts, written to a
file under the system temp directory, and prints {path, roots, children, references}. Covers
typed properties (int, enum literals), split-column child lists, and reference-wrapper
children whose targets are written as names for the tool to resolve after the batch lands.
python3 scripts/table_to_bulk_insert.py courses.csv courses.map.json
{"children":183,"path":"/var/folders/.../bulk_insert-courses-1234.json","references":65,"roots":40}Then mps_mcp_insert_root_node_from_json(modelReference=…, json="<that path>") and read
fixReferences.stillBroken in its response. Skip the dryRun=true call, or ignore its "is a
name, not looked up" warnings: a dry run never looks up name targets, whether the table defines
them or they already exist, and the real insert resolves them.
To check the inserted model against the table, dump it once and run the same script with
--verify. That replaces a hand-written comparison script:
mps_mcp_get_project_structure(startingPoint=<model>, includeNodes=true, nodeDepth=1)
python3 scripts/table_to_bulk_insert.py courses.csv courses.map.json --verify <dumpFile>
row 7 (Conducting): lessons[2].minutes: expected '10', got '12'
{"differences":1,"extraRoots":0,"matched":39,"mismatched":1,"missing":0,"rows":40}It pairs rows with roots by the spec's nameColumn, and compares every property, child and
reference target the spec produces. It exits 0 when every row matches and 1 on any
difference.
Run --help for the full mapping-spec reference, --list-tools for the tools and parameters
it depends on; scripts/examples/ holds a 40-row courses.csv with its matching
courses.map.json. This usage block plus --help are the contract: there is no need to read
the script source or the examples first.
No python3 (typically Windows): author the array by hand as described in
references/json-format.md — one object per row, properties entries omitted for empty cells
so the MPS default applies, one child role per list column, and one wrapper child per
reference with {"role": …, "target": "<name>"} — write it to a file under $TMPDIR
(or /tmp on macOS) and pass that path. Prefer --limit-sized batches, or the
staged construction in references/staged-construction.md, over one oversized blueprint.
© JetBrains, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in .agents/skills/mps-node-editing of JetBrains/MPS.
Open the folder on GitHubat commit a92f944
Mps Node Editing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Mps Node Editing this skillJetBrains/MPS | 1.7k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server Builderanthropics/skills | 180k | 64 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Figma use_figma Plugin API Ruleswarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Stitch to Remotion Walkthrough Videosgoogle-labs-code/stitch-skills | 8.4k | 6 repos | ~3.2k | Automated safety check: Notes | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
google-labs-code/stitch-skills
Builds walkthrough videos from Stitch design projects using Remotion, with transitions, zoom effects and text overlays on each screen.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
JetBrains/MPS
Analyze an MPS language by name — discover concepts, properties, references, children, aspects (editor/constraints/behavior), and metadata.
JetBrains/MPS
Open an MPS project in a running or freshly started MPS instance when MCP tools fail because no project is open (welcome screen), close an open project with mpsmcpcloseproject, or create a new empty…
JetBrains/MPS
Complete JetBrains MPS workflow guide for DSL projects — models, languages, generators, node JSON blueprints, validation, MPS MCP tool usage, and the index of companion skills.
JetBrains/MPS
Structured MPS bugfix workflow driven by a YouTrack issue ID — preflight tool checks, version/branch derivation, parallel-agent problem analysis, solution design, branch creation, implementation…
JetBrains/MPS
Define concepts, interface concepts, enumerations, and constrained data types in an MPS language's structure aspect.
JetBrains/MPS
A skill your agent uses when bundling a new plain Java/Kotlin plugin into MPS distribution archives, debugging packaging/layout issues in build/mps.xml, tracing where per-plugin artefacts end up, or…
Works with
Add, update, or delete MPS nodes using JSON blueprints — covers the unified blueprint format, staged construction for large subtrees, validation, and reference repair. Mps Node Editing is an agent skill from JetBrains/MPS, published by the product's own GitHub organization. Add, update, or delete MPS nodes using JSON blueprints — covers the unified blueprint format, staged construction for large subtrees, validation, and reference repair.
Mps Node Editing fits situations like: restructuring nodes in any MPS model (structure; application code.
Run `npx skills add JetBrains/MPS --skill mps-node-editing -a claude-code`. Or copy the skill folder (.agents/skills/mps-node-editing in JetBrains/MPS) into .claude/skills/mps-node-editing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JetBrains/MPS --skill mps-node-editing -a codex`. Or copy the skill folder (.agents/skills/mps-node-editing in JetBrains/MPS) into .agents/skills/mps-node-editing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JetBrains/MPS --skill mps-node-editing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mps-node-editing, .gemini/skills/mps-node-editing, .github/skills/mps-node-editing and .opencode/skills/mps-node-editing in your project.
Going by SKILL.md and its folder, Mps Node Editing needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Mps Node Editing is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Mps Node Editing: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JetBrains (a GitHub organization, an official publisher) maintains it in JetBrains/MPS, which has 1,660 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 7, 2026.
Source: JetBrains/MPS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.