OpenSysML MCP server
NPM · @OPENMBEE/SYSML-MCP
SysML v2 and KerML for coding agents: workspace diagnostics and edits, execution, REPL sessions.
Available components
Last scanned (7 hours ago)
Scores higher than 55% of npm servers
Category Developer Tools
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 5 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 22206 tokens (~115/item across 193 items; 83 tools + 110 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management43
- Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety81
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 1 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "execute_action" implies "execute" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 85 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Checks we ran (16)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Nov 26 0
- Stability: 0.40 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.11.0 → 0.12.1 functional
- 5 Nov 26 +6
- Stability: unverified → 0.40 ▲ functional
- 26 Oct 26 0
- Security disclosure: fail → pass ▲ functional
- 25 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 24 Oct 26 56
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Nov 2026 · Analysed npm/@openmbee/sysml-mcp@0.12.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 5 packages
| Packages resolved | 5 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
record_run ~561
Run an analysis case — once, over the rows of a sweep (`ranges`), or as a Monte Carlo sample (`runs`) — and record the runs into the model as AnalysisRecords declarations (the RecordRun RPC, the CLI's -record-run/-record-into, the REPL's %record). `run`, `sweep` or `sample` is the runs' own report; `package`, `definition` and `records` name what the model gained and `source` is the declarations generated; `documents` (and `content` for a single document) is the notation of the document the records merged into, or the records as a document of their own, and `modelHash` names the recorded model, cached for the next request. A recording that would error or drop a declaration leaves the model unchanged and is the `error`. The result is the RecordRunResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptDocuments | boolean | – | read the recorded notation from documents rather than content; required for a model of several documents |
| analysisSymbolId | string | yes | qualified name of the analysis case definition or usage to run and record |
| arguments | null|array | – | positional values for the case's in parameters, each a protojson Value |
| engine | string | – | the analysis engine asked, as list_engines names them; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| namedArguments | object | – | values for the case's in parameters by name, each a protojson Value |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| ranges | null|array | – | ranges of the case's parameters to run it over as run_sweep does, recording each completed row; each a protojson SweepRange |
| recordInto | string | – | package the records go into (-record-into); empty is a Records package beside the package enclosing the case's own |
| runs | integer | – | run the Simulation::MonteCarlo case this many times as run_runs does and record each completed run and the sample's conclusion (-runs) |
| seed | null|integer | – | seed of the sample's draws; required with runs |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| subjectSymbolId | string | – | qualified name of a part/usage to instantiate as the subject, or a path from one to a nested object |
Structured output declared, but exposes no named fields.
No examples provided.
references ~83
Find every place in the workspace that refers to the element at a position.
| Name | Type | Req | Description |
|---|---|---|---|
| includeDeclaration | boolean | – | also list the declaration itself |
| path | string | yes | the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document |
| position | object | yes | the position (1-based line and character column) |
| Name | Type | Req | Description |
|---|---|---|---|
| locations | null|array | yes | – |
No examples provided.
rename ~125
Rename the element declared or referenced at a position, everywhere in the workspace. Returns the edits per document; writes the files only with apply=true.
| Name | Type | Req | Description |
|---|---|---|---|
| apply | boolean | – | write every affected file, all or none, each replaced atomically (its mode is kept, other inode metadata is not); false (the default) only returns the edits |
| newName | string | yes | the new name |
| path | string | yes | the document, absolute or relative to the workspace root |
| position | object | yes | a position on the name to rename (1-based line and column) |
| Name | Type | Req | Description |
|---|---|---|---|
| applied | boolean | yes | whether the edits were written to disk |
| changes | null|array | yes | the edits, per document |
No examples provided.
render_document ~173
Render a document definition (doc def) to Markdown, its queries evaluated over the workspace and its diagrams embedded.
| Name | Type | Req | Description |
|---|---|---|---|
| diagramForm | string | – | the notation of every graph-shaped diagram block: mermaid, dot, plantuml or d2; omitted, chosen per diagram as the CLI chooses it |
| linkTemplate | string | – | a template for source links on elements, with {file}, {line}, {col}, {qname} and {id} placeholders |
| name | string | yes | the qualified name of a document definition (doc def), as documents lists |
| show | null|array | – | optional notation elements every diagram draws besides those its view and diagram block show: parameter-symbols, port-symbols, compartments, edge-labels, keywords, multiplicities, typings, qualifiers… |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | yes | – |
| name | string | yes | – |
No examples provided.
render_model_document ~236
Render a named document of a model given by modelHash, paths or sources (the workspace group's render_document renders by name over the root) — a part def specializing DocumentQueries::Document — to Markdown, HTML or AsciiDoc (the RenderDocument RPC, the CLI's -render-document), byte for byte what the CLI writes. The text is the rendered document; the result is the RenderDocumentResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| documentId | string | yes | qualified name of the document, a part def specializing DocumentQueries::Document |
| form | string | – | markdown (the default), html or asciidoc |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
Structured output declared, but exposes no named fields.
No examples provided.
render_model_view ~421
Render a declared view or a targeted pseudo-view of a model given by modelHash, paths or sources as diagram data (the RenderView RPC; the workspace group's render_view renders by name over the root): nodes flattened parents first, edges with their ports, table columns and rows, canvas, notes and notices. The result is the RenderViewResponse as protojson writes it; the text lists the nodes and edges.
| Name | Type | Req | Description |
|---|---|---|---|
| compartments | string | – | how a tree rendering folds a node's owned members into compartment rows of its parent: positioned (the default), most or ports, as sysml -render-compartments takes them |
| depth | integer | – | how many levels of nested elements to draw below each exposed element, overriding the view's own depth; 0 or absent draws every level |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| ports | string | – | minimal (the default) or full: how many of a part's ports are drawn |
| show | null|array | – | optional notation elements to draw besides those the view's rendering shows, as sysml -render-show takes them: parameter-symbols, port-symbols, compartments, edge-labels, keywords, multiplicities, ty… |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| view | string | yes | a qualified view name, or a #<kind>:<qualified name> pseudo-view targeting an element (#interconnection:Demo::Vehicle, #tree:Demo, #state:Demo::Lamp, #action:Demo::Descend, #sequence:..., #case:...,… |
Structured output declared, but exposes no named fields.
No examples provided.
render_run ~127
Render the run a session recorded as a state timeline or a message sequence (%render-run), in a text, diagram or SVG form. Recording must be on before the run: repl_command `%trace on`.
| Name | Type | Req | Description |
|---|---|---|---|
| form | string | – | text (default), mermaid, plantuml, svg (a self-contained SVG drawing) or svg-animated (the SVG replaying the run with SMIL) |
| kind | string | yes | timeline (state occupancy per object machine over clock time) or sequence (the messages sent) |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| form | string | yes | – |
| kind | string | yes | – |
| rendering | – | yes | the rendering as data: lanes with their state spans, transitions and marks for a timeline; nodes and edges for a sequence |
| text | string | yes | the rendering in the form asked for |
| until | number | yes | the clock instant the rendering runs through |
No examples provided.
render_view ~622
Render a diagram or table of a document: a declared view or a pseudo-view, as Mermaid, Graphviz dot, PlantUML, D2, draw.io (diagrams.net XML), text, Markdown, CSV or TSV. The result also lists the nodes and edges drawn with their qualified names (for apply_model_edit) and their declaration ranges in LSP form (0-based).
| Name | Type | Req | Description |
|---|---|---|---|
| compartments | string | – | how a tree rendering folds a node's owned members into compartment rows of its box: positioned (the default, only the layout-less members of a tree some Layout positions), most (every owned usage no… |
| depth | integer | – | how many levels of nested elements a tree or interconnection rendering draws below each exposed element, overriding the view's depth attribute; omitted or 0 keeps the view's own depth |
| form | string | – | the artifact's notation: mermaid, dot (Graphviz), plantuml, d2, drawio (an uncompressed diagrams.net file), text, markdown, csv or tsv; omitted, markdown for a table or matrix and mermaid otherwise |
| lines | string | – | how dot and plantuml route edges: splines (the default), ortho or polyline |
| linkTemplate | string | – | a template for source links on elements, with {file}, {line}, {col}, {qname} and {id} placeholders |
| overlay | string | – | verdicts, on a requirement rendering: runs the verification cases and colors each requirement by its verdict; omitted runs nothing |
| palette | string | – | fill colors by keyword family for dot/mermaid/plantuml/d2/drawio: okabe-ito, tol-bright, tol-muted, tol-light, brewer-set2, brewer-dark2, viridis or cividis; omitted draws black and white |
| path | string | yes | the document, absolute or relative to the workspace root |
| ports | string | – | ports drawn on an interconnection or mixed rendering: minimal (the default, only connected ports) or full (every port, labelled name : Type) |
| show | null|array | – | optional notation elements drawn besides the ones the view's rendering shows: parameter-symbols, port-symbols, compartments, edge-labels, keywords, multiplicities, typings, qualifiers, or all; port s… |
| style | string | – | the drawing style of dot/mermaid: pilot (the default, the Pilot visualizer's look) or cameo (Cameo Systems Modeler's) |
| view | string | – | the qualified name of a view the document declares, a pseudo-view such as #tree, #interconnection, #state, #action, #sequence or #tree:Pkg::Part (see the views tool), or omitted for the one view the… |
| Name | Type | Req | Description |
|---|---|---|---|
| artifact | string | yes | – |
| canvas | null|object | – | – |
| columns | null|array | – | – |
| edges | null|array | yes | – |
| form | string | yes | – |
| kind | string | yes | – |
| nodes | null|array | yes | – |
| notices | null|array | yes | – |
| palette | null|object | – | – |
| rows | null|array | – | – |
| shown | null|array | yes | – |
| stated | string | yes | – |
| style | string | yes | – |
| version | integer | yes | – |
| view | string | yes | – |
No examples provided.
repl_command ~288
Run one sysml prompt command (a % line) in a session and return what it printed. Prefer the typed tools, which return the same data structured: session_load/session_submit/session_eval/session_print/session_save/session_clear, session_run, debug_*, send, advance, features, instances, check/explain/solve/configure/optimize, sweep, runs, render_run. This tool reaches everything else the prompt can do — %instantiate, %invoke, %constraint, %requirement, %satisfy, %validate, %calc, %analysis, %record, %import, %run-query, %render, %viz, %render-document, %trace, %schedule, %seed, %engine, %jobs, %budget, %verbosity, %strict, %lint, %search, %views, %documents, %list, the %check-* settings and the repository commands. Discover the commands with `%help` (every command with its arguments) and the settings with the command alone (`%schedule`, `%engine`). A command that reports an error fails the call with its output.
| Name | Type | Req | Description |
|---|---|---|---|
| line | string | yes | one meta command line as typed at the sysml prompt, starting with %, e.g. %list, %help, %instantiate Demo::car, %features car all |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| output | string | yes | the lines the command printed |
| quit | boolean | – | the line was %quit, which ends a terminal and is only noted here |
No examples provided.
run_analysis ~547
Run an analysis case (the RunAnalysis RPC, the REPL's %analysis): its subject and inputs bound from the arguments and its own declarations, its body run, every declared output answered with the verdict of its objective and of each assertion in its body; a verification case also answers its own verdict. A trade study's evaluations of each alternative are in `evaluations`. Under an explore schedule the answer is the set of distinct `outcomes`. Bounded by the service's OPENSYSML_MAX_* budgets. The result is the RunAnalysisResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | positional values for the case's input parameters, each a protojson Value; the subject is never among them. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"},… |
| engine | string | – | the analysis engine asked; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| namedArguments | object | – | values for input parameters by name, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0,"unit":"m"}},… |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| schedule | string | – | scheduling policy for choice points: declared, reverse (the default), seed:<n>, or explore[:runs=<n>,depth=<d>] |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| subjectSymbolId | string | – | qualified name of a part/usage to instantiate as the case's subject, or a path from one; empty leaves the case's own subject binding to supply it |
| symbolId | string | yes | qualified name of the analysis case definition or usage |
| toolDryRun | boolean | – | run the case only to the first external tool call its ToolExecution names and answer what the tool would be given in toolDryRun, without starting it (sysml -tool-dry-run); refused under explore |
Structured output declared, but exposes no named fields.
No examples provided.
run_document_query ~282
Run a named document query with parameter bindings and answer its typed rows (the RunDocumentQuery RPC, the REPL's %run-query). The query runs over the model and over the objects instantiate created for the same modelHash, which a binding may name. The result is the RunDocumentQueryResponse as protojson writes it; the text is the table.
| Name | Type | Req | Description |
|---|---|---|---|
| bindings | null|array | – | entry-parameter bindings, each a protojson DocumentQueryBinding {"parameter":name,"values":[DocumentValue]} where a DocumentValue is {"elementId":qualified name}, {"stringValue":..}, {"intValue":".."… |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| queryId | string | yes | qualified name of the document query, a calc def specializing DocumentQueries::Query |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
Structured output declared, but exposes no named fields.
No examples provided.
run_runs ~669
Run an action, or a Simulation::MonteCarlo analysis case, a number of times (the RunRuns RPC, the CLI's -runs/-observe, the REPL's %runs): every run is an ordinary run in a context of its own, drawing its modeled randomness from a seed derived from `seed`. `rows` is the table, one row per run with the run number as its input and what it observed as its outputs; `distributions` summarises each observable over the completed runs (extremes, mean, deviation, percentiles, histogram, or the count of each distinct value); for a case `outputs` and `verdicts` are its conclusion over the sample and `unconcluded` why it has none. A run that failed is its row's error. The result is the RunRunsResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| actionSymbolId | string | – | qualified name of the action to run; give this or analysisSymbolId |
| analysisSymbolId | string | – | qualified name of the Simulation::MonteCarlo analysis case, definition or usage; give this or actionSymbolId |
| arguments | null|array | – | positional values for the case's in parameters, each a protojson Value |
| clockStep | number | – | clock step of each run; 0 keeps the default (-clock-step) |
| draws | string | – | draw policy for the model's distributions: random (the default), min, max or average (-draws) |
| engine | string | – | the analysis engine asked, as list_engines names them; empty is auto |
| inputs | object | – | the action's input parameter name to value, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"} |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| namedArguments | object | – | values for the case's in parameters by name, each a protojson Value |
| observe | null|array | – | features of the action each run reports, clock for the time it completed at; empty reports every feature and the clock (-observe). Not for a case, which observes what it declares |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| performerSymbolId | string | – | qualified name of a part/usage, or a path from one, whose object performs the action; empty performs it outside any object |
| runs | integer | yes | how many runs to make (-runs); positive |
| seed | null|integer | – | seed the runs draw their modeled randomness from, one derived seed per run; required unless draws is min, max or average |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| subjectSymbolId | string | – | qualified name of a part/usage to instantiate as the case's subject, or a path from one to a nested object |
Structured output declared, but exposes no named fields.
No examples provided.
run_sweep ~532
Run an analysis case or calc once per row of a parameter sweep (the RunSweep RPC, the CLI's -sweep): each row an ordinary run with the swept parameters bound to that row's values, stepped through the ranges' cartesian product or drawn with samples and seed. A failed row is a row with `error`, not a failed table. Bounded by the service's OPENSYSML_MAX_* budgets. The result is the RunSweepResponse as protojson writes it; the text is the table.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | positional values every row binds, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0,"unit":"m"}}, {… |
| engine | string | – | the analysis engine asked; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| namedArguments | object | – | values every row binds by name, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0,"unit":"m"}}, {"en… |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| ranges | null|array | – | the ranges swept, each a protojson SweepRange {"parameter":name,"start":Value,"end":Value,"step":Value}; several make one row per point of their cartesian product |
| samples | integer | – | rows to draw uniformly from each range instead of stepping through it; 0 steps, above 0 needs seed and refuses a range with a step |
| seed | integer | – | seed the draws are taken from; required with samples |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| subjectSymbolId | string | – | qualified name of a part/usage to instantiate as an analysis case's subject, or a path from one |
| symbolId | string | yes | qualified name of the analysis case or calc, definition or usage |
Structured output declared, but exposes no named fields.
No examples provided.
runs ~225
Run an action count times, each run's modeled randomness seeded on its own, and return the table of the observables with each one's distribution (%runs); or run a Simulation::MonteCarlo analysis case count times on fresh subjects and conclude it.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | for case: argument expressions |
| count | integer | yes | how many runs |
| kind | string | – | action (default): run an action count times and table the observables; case: a Simulation::MonteCarlo analysis case, run count times on fresh subjects and concluded |
| name | string | yes | qualified name of the action or case |
| object | string | – | for action: the object performing it; for case: its subject |
| observables | null|array | – | for action: the features to table with their distributions; every feature the action holds and the clock when omitted |
| seed | null|integer | – | seed each run's modeled randomness derives from; omit for the session's |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| evaluations | null|array | – | – |
| rows | null|array | – | one per run of a sweep or of repeated runs |
| status | string | yes | holds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made) |
| subject | string | yes | what was run or checked, as named |
| text | string | yes | the prompt's report |
| values | null|array | yes | what the run produced: a calc's result, an action's outputs, a case's outputs and verdicts |
| verifications | null|array | – | – |
No examples provided.
self_check ~274
Apply the SysMLValidation constraints, and those of any rule packages named, reflectively to every element of a model (the SelfCheck RPC, the CLI's -self-check and -self-check-package): each element is handed to every constraint whose input its metaclass conforms to. `status` is holds, fails or unresolved; `findings` carry each violation, evaluation the runtime could not make, error and skipped rule constraint with the element's location and the line the CLI prints; the counts and `applications` say how much was checked. The result is the SelfCheckResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| selfCheckPackage | null|array | – | qualified names of packages whose constraint definitions apply after the bundled SysMLValidation ones (-self-check-package); each must be a package the model or its libraries declare |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
Structured output declared, but exposes no named fields.
No examples provided.
send ~153
Send a signal to an object through the runtime's message bus (%send), for the state machine it exhibits or the action parked at a matching accept to take; by default to the object whose behavior is being debugged. The signal is refused when no behavior of the object accepts it now. It is dispatched by the next debug_step or advance.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | the signal's feature values, written parameter=expression |
| session | string | – | session name; omit for the default session |
| signal | string | yes | the signal's definition, qualified if needed |
| to | string | – | the receiving object (name, #id or path); omit for the object whose behavior is being debugged |
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | – |
No examples provided.
server_info ~24
Report the OpenSysML runtime's version and the named capabilities this build supports.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | null|array | yes | named capabilities this build supports; each is a stable string a caller can require |
| version | string | yes | build version of the server, informational only |
No examples provided.
session_clear ~48
Reset a session, as %clear does: every declaration, object and debugging session goes; the session stays open and empty.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| notices | null|array | yes | what the reset discarded: objects held, debugging sessions |
No examples provided.
session_close ~41
Close a REPL session, discarding its model, instances and any run in progress.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | the session's name |
No examples provided.
session_eval ~104
Evaluate an expression in a session, as %eval does: a literal, a declared feature or qualified name, an enumeration literal, a unit, or a compound expression over the session's declarations. Returns the value as data and as the prompt prints it.
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | a SysML expression: a literal, a feature or qualified name, or a compound expression over the session's declarations |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | – |
| output | string | yes | what %eval printed |
| text | string | yes | the value as the prompt prints it |
| value | – | yes | the value in the runtime API's JSON form (opensysml.v1.Value): a typed scalar, sequence, set, instance reference or function |
No examples provided.
session_list ~15
List the open REPL sessions.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| sessions | null|array | yes | names of the open sessions, sorted |
No examples provided.
session_load ~137
Load model files into a session, as %load does: files, directories or globs, resolved against the workspace root and refused outside it. Every file is accepted before the model is analyzed, so load order does not matter, and files beside the paths that declare a namespace they import load too. Returns what loaded and the diagnostics.
| Name | Type | Req | Description |
|---|---|---|---|
| paths | null|array | yes | files, directories (walked for .sysml/.kerml/.ipynb) or glob patterns, relative to the workspace root or absolute; a path outside the root is refused |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| declared | null|array | yes | what the load declared, as the prompt summarizes it; empty when the analysis found an error |
| diagnostics | null|array | yes | every finding over the session's model after the load, located in its file |
| errors | boolean | yes | whether the session's model now has an error |
| files | null|array | yes | the model files the paths named, in load order; files they import from beside them load too |
| text | string | yes | what %load printed |
No examples provided.
session_open ~158
Open a named REPL session: an empty model that declarations, instances and runs accumulate into across calls. The default session opens itself on first use, so this is only needed for a second, independent session, or for one with a root: a directory under the workspace root whose model files load on demand, as %load would load them, when a submission imports or qualifies a root namespace that neither the session nor the library declares.
| Name | Type | Req | Description |
|---|---|---|---|
| root | string | – | directory under the workspace root, relative to it or absolute, whose model files load when a submission imports or qualifies a root namespace nothing in the session declares; omit to resolve against… |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | yes | the session's name |
No examples provided.
session_print ~82
Print a session's model as SysML notation, or one named element with its body, as %print does. Comments are kept, and what is printed can be submitted back.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | qualified name of one element to print with its body; omit for the whole model |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | the notation, as %print writes it; what is printed can be submitted back |
No examples provided.
session_run ~301
Run a behavior in a session to completion and report what it produced: an action (%action then %continue), a state machine (%state, then %advance when a duration is given), a calc (%calc) or an analysis case (%analysis). Objects the run creates stay in the session, and the run's executor stays inspectable with debug_current until the next run or debug_stop. Under %engine check the behavior is checked over every schedule instead.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | argument expressions: positional for a calc; positional, in parameter order, or written parameter=expression for an action's inputs or an analysis case |
| duration | null|number | – | for state: advance the machine's clock by this many time units after its initial transition; omit to take the initial transition alone |
| kind | string | yes | what to run: action, state (a state machine), calc or analysis (an analysis, verification or trade-study case) |
| name | string | yes | qualified name of the behavior |
| object | string | – | an object the session holds (name, #id or path such as car.fl): the performer of an action or state machine, the subject of a case |
| schedule | string | – | scheduling policy for this run alone: declared, reverse, seed:<n> or explore[:runs=N,depth=D]; omit for the session's |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| evaluations | null|array | – | – |
| rows | null|array | – | one per run of a sweep or of repeated runs |
| status | string | yes | holds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made) |
| subject | string | yes | what was run or checked, as named |
| text | string | yes | the prompt's report |
| values | null|array | yes | what the run produced: a calc's result, an action's outputs, a case's outputs and verdicts |
| verifications | null|array | – | – |
No examples provided.
session_save ~160
Write a session's model to a file under the workspace root, as %save does: .sysml notation with comments preserved, or .ttl/.json RDF (experimental). A path outside the root is refused. Without apply nothing is written and the file's content, in the format the extension names, is returned as content.
| Name | Type | Req | Description |
|---|---|---|---|
| apply | boolean | – | write the file; without it the bytes the file would hold (notation, Turtle or JSON by extension) are returned as content and nothing is touched |
| path | string | yes | file to write, relative to the workspace root or absolute but under it: .sysml notation, or .ttl/.json RDF (experimental) |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| applied | boolean | yes | whether the file was written; false for an empty session, which has nothing to save |
| content | string | – | without apply: the file's bytes, in the format the extension names |
| path | string | yes | the file, resolved |
| text | string | yes | what %save printed: notes, warnings, and what was or would be saved |
No examples provided.
session_submit ~124
Submit SysML declarations to a session, as typing them at the prompt does: the text joins the model, the whole model is re-analyzed, and what it declared and the diagnostics about it come back. Submitting a name again replaces its earlier declaration. For an expression use session_eval; for a % command use repl_command.
| Name | Type | Req | Description |
|---|---|---|---|
| session | string | – | session name; omit for the default session |
| text | string | yes | SysML v2 (or KerML) declarations, as typed at the prompt; a redeclaration of a name replaces the earlier one |
| Name | Type | Req | Description |
|---|---|---|---|
| accepted | boolean | yes | whether the text was taken into the model without an error of its own |
| declared | null|array | yes | the names this submission introduced |
| diagnostics | null|array | yes | the findings about this submission, located in it |
| notices | null|array | yes | side effects, such as a debugging session the submission ended |
| text | string | yes | what the prompt printed for the submission |
No examples provided.
signature_help ~75
Describe the invocation enclosing a position: the callable's parameters and which one the position is at.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document |
| position | object | yes | the position (1-based line and character column) |
| Name | Type | Req | Description |
|---|---|---|---|
| activeParameter | integer | yes | – |
| activeSignature | integer | yes | – |
| signatures | null|array | yes | – |
No examples provided.
solve ~77
Ask an SMT solver for values satisfying an element's conditions (%solve, experimental), keeping the values the model already fixes; reports the conflict when the fixed values admit none.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | qualified name of the constraint, requirement, satisfaction, part or analysis case |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| reports | null|array | yes | – |
| text | string | yes | – |
No examples provided.
sweep ~180
Run a calc or analysis case once per row of the ranges given (%sweep), or over rows drawn from them (%samples), and return the table: each row's inputs, outputs, verdicts and timing. The verdict holds when every run completed and every objective was satisfied.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | argument expressions fixed for every row, positional or parameter=expression |
| name | string | yes | qualified name of the calc or analysis case |
| object | string | – | the case's subject, an object the session holds |
| ranges | null|array | yes | one per swept parameter, written parameter=from..to[:step]; the rows are the cartesian product |
| samples | null|object | – | draw rows uniformly from the ranges instead of stepping them |
| session | string | – | session name; omit for the default session |
| Name | Type | Req | Description |
|---|---|---|---|
| evaluations | null|array | – | – |
| rows | null|array | – | one per run of a sweep or of repeated runs |
| status | string | yes | holds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made) |
| subject | string | yes | what was run or checked, as named |
| text | string | yes | the prompt's report |
| values | null|array | yes | what the run produced: a calc's result, an action's outputs, a case's outputs and verdicts |
| verifications | null|array | – | – |
No examples provided.
symbol ~192
Describe one element of a parsed model by qualified name (the GetSymbol RPC): its kind, metadata, children, attributes with their declared values, static type facts, multiplicity and specializations. An unknown name answers with `error` set rather than failing. The result is the SymbolResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| symbolId | string | yes | the element's qualified name, as Demo::Vehicle::mass |
Structured output declared, but exposes no named fields.
No examples provided.
tool_catalog ~97
List the tools this server serves: each tool's name, group, the sysml-grpc RPC or `sysml` CLI flag it stands for, and a one-line summary. Pass `group` (lsp, runtime, session) to narrow the list. The same catalog generates the Tools section of the sysml-mcp manual page.
| Name | Type | Req | Description |
|---|---|---|---|
| group | string | – | answer only this group's tools: lsp, runtime or session |
| Name | Type | Req | Description |
|---|---|---|---|
| groups | null|array | yes | – |
| tools | null|array | yes | – |
No examples provided.
update_document ~71
Replace the text of a document held open by open_document and re-analyze it. Nothing is written to disk. Returns the diagnostics of the new text.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | an open document, absolute or relative to the workspace root |
| text | string | yes | the full new text of the document |
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics | null|array | yes | the diagnostics of the text now held |
| open | boolean | yes | whether the server now holds an open buffer for the document |
| path | string | yes | – |
| version | integer | yes | the buffer's version, incremented by each update |
No examples provided.
validate_instance ~235
Validate an object of a part as a whole (the ValidateInstance RPC, the REPL's %validate): every assertion about an object of symbolId and about the objects it holds — asserted constraints of their types, the requirements they carry, the satisfactions they are the subject of — each answered on the concrete object, with a `summary` verdict about the object as a whole. The result is the ValidateInstanceResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | the analysis engine asked; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| symbolId | string | yes | qualified name of the part or usage an object of which is validated |
Structured output declared, but exposes no named fields.
No examples provided.
verify_constraint ~478
Ask whether a constraint holds (the VerifyConstraint RPC, the REPL's %constraint): against its declared values, or against an object of subjectSymbolId built for the call. The answer is a Verdict: `holds`, the violated `condition`, or an `error` when nothing was decided, with the engine and strength of evidence. The question holds or satisfiable puts it to a solver over the free variables and answers with a witness assignment. The result is the VerifyConstraintResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | positional values for the element's in parameters, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0… |
| engine | string | – | the analysis engine asked, as list_engines names them; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| namedArguments | object | – | values for the element's in parameters by name, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0,"u… |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| question | string | – | evaluate (the default: one evaluation), holds (prove over every free assignment) or satisfiable (find one satisfying assignment) |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| subjectSymbolId | string | – | qualified name of a part/usage to instantiate and evaluate against, or a path from one to a nested object; empty evaluates declared values |
| symbolId | string | yes | qualified name of the constraint or requirement, definition or usage |
Structured output declared, but exposes no named fields.
No examples provided.
verify_requirement ~449
Ask whether a requirement is satisfied (the VerifyRequirement RPC, the REPL's %requirement): its require constraints evaluated against declared values or against an object of subjectSymbolId. Beside the Verdict the answer carries what every verification case verifying the requirement concluded (pass, fail, inconclusive, error). The result is the VerifyRequirementResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | null|array | – | positional values for the element's in parameters, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0… |
| engine | string | – | the analysis engine asked, as list_engines names them; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| namedArguments | object | – | values for the element's in parameters by name, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}, {"quantity":{"realMagnitude":5.0,"u… |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| question | string | – | evaluate (the default: one evaluation), holds (prove over every free assignment) or satisfiable (find one satisfying assignment) |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| subjectSymbolId | string | – | qualified name of a part/usage to instantiate and evaluate against, or a path from one to a nested object; empty evaluates declared values |
| symbolId | string | yes | qualified name of the constraint or requirement, definition or usage |
Structured output declared, but exposes no named fields.
No examples provided.
verify_satisfaction ~249
Evaluate the satisfy assertions a model states (the VerifySatisfaction RPC, the REPL's %satisfy): each against an object of its subject built for the call, answering one Verdict per assertion in declaration order. A model stating no assertion answers an empty list, not an error. The result is the VerifySatisfactionResponse as protojson writes it.
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | the analysis engine asked; empty is auto |
| modelHash | string | – | the model_hash a parse answered; give this, or paths and/or sources to parse first |
| paths | null|array | – | model files to parse as one model, absolute or relative to the workspace root |
| question | string | – | evaluate (the default), holds or satisfiable |
| sources | null|array | – | documents given inline, parsed with paths as one model |
| strictConformance | boolean | – | judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning |
| symbolId | string | – | qualified name limiting the assertions evaluated: those stated within it, or itself when it is a named satisfy; empty evaluates every assertion the model states |
Structured output declared, but exposes no named fields.
No examples provided.
views ~65
List the views a document declares and the pseudo-views (#tree, #interconnection, ...) render_view can draw of it.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | the document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document |
| Name | Type | Req | Description |
|---|---|---|---|
| pseudoViews | null|array | yes | – |
| views | null|array | yes | – |
No examples provided.
workspace_diagnostics ~78
Analyze a SysML v2 / KerML document, or the whole workspace, and list the errors, warnings and hints: syntax, unresolved names, type and constraint violations. Positions are 1-based lines and columns.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | – | one document, absolute or relative to the workspace root; omitted, every document of the workspace |
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics | null|array | yes | – |
| documents | integer | yes | documents analyzed |
| errors | integer | yes | – |
| warnings | integer | yes | – |
No examples provided.
workspace_info ~31
Describe the SysML v2 workspace the server has indexed: its root folder and the model documents found under it.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| documents | null|array | yes | paths of the model documents indexed, the standard library excluded |
| open | null|array | – | documents whose text is held open with edits not yet on disk |
| root | string | yes | the workspace folder the server indexed |
No examples provided.
workspace_symbols ~54
Search the workspace's declared elements by name substring.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | at most this many matches; default 200 |
| query | string | – | case-insensitive substring of the name; empty lists every named element |
| Name | Type | Req | Description |
|---|---|---|---|
| symbols | null|array | yes | – |
| total | integer | yes | matches before the limit |
No examples provided.
How do I install the OpenSysML MCP server server?
OpenSysML MCP server runs locally as an npm package, launched with npx -y @openmbee/sysml-mcp -root .. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @openmbee/sysml-mcp
claude mcp add org-opensysml-sysml-mcp -- npx -y @openmbee/sysml-mcp -root .
What is the OpenSysML MCP server server?
OpenSysML MCP server is listed in the public MCP registry as org.opensysml/sysml-mcp. SysML v2 and KerML for coding agents: workspace diagnostics and edits, execution, REPL sessions. This page covers its npm package (@openmbee/sysml-mcp).
Is the OpenSysML MCP server server safe to use?
OpenSysML MCP server scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 6 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the OpenSysML MCP server server expose?
OpenSysML MCP server exposes 83 tools: advance, apply_edits, apply_model_edit, check, check_behavior, and 78 more. Their descriptions and schemas cost roughly 18,022 tokens of context every time the server is loaded.
Is the OpenSysML MCP server server still maintained?
OpenSysML MCP server is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the OpenSysML MCP server server under?
OpenSysML MCP server declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the OpenSysML MCP server server?
VerifyMCP ran 16 checks on OpenSysML MCP server, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.