Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

OpenSysML MCP server

NPM · @OPENMBEE/SYSML-MCP

SysML v2 and KerML for coding agents: workspace diagnostics and edits, execution, REPL sessions.

Available components

+6 this week 77 Trust /100

Last scanned (7 hours ago)

Scores higher than 55% of npm servers

Category Developer Tools

Trust breakdown (7 categories)

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
What we tested

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 →

Changelog

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.

Diagnostics

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 →

MCP tools · 83 exposed · ~18,022 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
acceptDocumentsboolean–read the recorded notation from documents rather than content; required for a model of several documents
analysisSymbolIdstringyesqualified name of the analysis case definition or usage to run and record
argumentsnull|array–positional values for the case's in parameters, each a protojson Value
enginestring–the analysis engine asked, as list_engines names them; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
namedArgumentsobject–values for the case's in parameters by name, each a protojson Value
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
rangesnull|array–ranges of the case's parameters to run it over as run_sweep does, recording each completed row; each a protojson SweepRange
recordIntostring–package the records go into (-record-into); empty is a Records package beside the package enclosing the case's own
runsinteger–run the Simulation::MonteCarlo case this many times as run_runs does and record each completed run and the sample's conclusion (-runs)
seednull|integer–seed of the sample's draws; required with runs
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
subjectSymbolIdstring–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.

NameTypeReqDescription
includeDeclarationboolean–also list the declaration itself
pathstringyesthe document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document
positionobjectyesthe position (1-based line and character column)
NameTypeReqDescription
locationsnull|arrayyes–

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.

NameTypeReqDescription
applyboolean–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
newNamestringyesthe new name
pathstringyesthe document, absolute or relative to the workspace root
positionobjectyesa position on the name to rename (1-based line and column)
NameTypeReqDescription
appliedbooleanyeswhether the edits were written to disk
changesnull|arrayyesthe 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.

NameTypeReqDescription
diagramFormstring–the notation of every graph-shaped diagram block: mermaid, dot, plantuml or d2; omitted, chosen per diagram as the CLI chooses it
linkTemplatestring–a template for source links on elements, with {file}, {line}, {col}, {qname} and {id} placeholders
namestringyesthe qualified name of a document definition (doc def), as documents lists
shownull|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…
NameTypeReqDescription
markdownstringyes–
namestringyes–

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.

NameTypeReqDescription
documentIdstringyesqualified name of the document, a part def specializing DocumentQueries::Document
formstring–markdown (the default), html or asciidoc
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–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.

NameTypeReqDescription
compartmentsstring–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
depthinteger–how many levels of nested elements to draw below each exposed element, overriding the view's own depth; 0 or absent draws every level
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
portsstring–minimal (the default) or full: how many of a part's ports are drawn
shownull|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…
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
viewstringyesa 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`.

NameTypeReqDescription
formstring–text (default), mermaid, plantuml, svg (a self-contained SVG drawing) or svg-animated (the SVG replaying the run with SMIL)
kindstringyestimeline (state occupancy per object machine over clock time) or sequence (the messages sent)
sessionstring–session name; omit for the default session
NameTypeReqDescription
formstringyes–
kindstringyes–
rendering–yesthe rendering as data: lanes with their state spans, transitions and marks for a timeline; nodes and edges for a sequence
textstringyesthe rendering in the form asked for
untilnumberyesthe 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).

NameTypeReqDescription
compartmentsstring–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…
depthinteger–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
formstring–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
linesstring–how dot and plantuml route edges: splines (the default), ortho or polyline
linkTemplatestring–a template for source links on elements, with {file}, {line}, {col}, {qname} and {id} placeholders
overlaystring–verdicts, on a requirement rendering: runs the verification cases and colors each requirement by its verdict; omitted runs nothing
palettestring–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
pathstringyesthe document, absolute or relative to the workspace root
portsstring–ports drawn on an interconnection or mixed rendering: minimal (the default, only connected ports) or full (every port, labelled name : Type)
shownull|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…
stylestring–the drawing style of dot/mermaid: pilot (the default, the Pilot visualizer's look) or cameo (Cameo Systems Modeler's)
viewstring–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…
NameTypeReqDescription
artifactstringyes–
canvasnull|object––
columnsnull|array––
edgesnull|arrayyes–
formstringyes–
kindstringyes–
nodesnull|arrayyes–
noticesnull|arrayyes–
palettenull|object––
rowsnull|array––
shownnull|arrayyes–
statedstringyes–
stylestringyes–
versionintegeryes–
viewstringyes–

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.

NameTypeReqDescription
linestringyesone meta command line as typed at the sysml prompt, starting with %, e.g. %list, %help, %instantiate Demo::car, %features car all
sessionstring–session name; omit for the default session
NameTypeReqDescription
outputstringyesthe lines the command printed
quitboolean–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.

NameTypeReqDescription
argumentsnull|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"},…
enginestring–the analysis engine asked; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
namedArgumentsobject–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"}},…
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
schedulestring–scheduling policy for choice points: declared, reverse (the default), seed:<n>, or explore[:runs=<n>,depth=<d>]
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
subjectSymbolIdstring–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
symbolIdstringyesqualified name of the analysis case definition or usage
toolDryRunboolean–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.

NameTypeReqDescription
bindingsnull|array–entry-parameter bindings, each a protojson DocumentQueryBinding {"parameter":name,"values":[DocumentValue]} where a DocumentValue is {"elementId":qualified name}, {"stringValue":..}, {"intValue":".."…
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
queryIdstringyesqualified name of the document query, a calc def specializing DocumentQueries::Query
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–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.

NameTypeReqDescription
actionSymbolIdstring–qualified name of the action to run; give this or analysisSymbolId
analysisSymbolIdstring–qualified name of the Simulation::MonteCarlo analysis case, definition or usage; give this or actionSymbolId
argumentsnull|array–positional values for the case's in parameters, each a protojson Value
clockStepnumber–clock step of each run; 0 keeps the default (-clock-step)
drawsstring–draw policy for the model's distributions: random (the default), min, max or average (-draws)
enginestring–the analysis engine asked, as list_engines names them; empty is auto
inputsobject–the action's input parameter name to value, each a protojson Value. Example arms: {"intValue":"7"}, {"realValue":1.5}, {"boolValue":true}, {"stringValue":"x"}
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
namedArgumentsobject–values for the case's in parameters by name, each a protojson Value
observenull|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
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
performerSymbolIdstring–qualified name of a part/usage, or a path from one, whose object performs the action; empty performs it outside any object
runsintegeryeshow many runs to make (-runs); positive
seednull|integer–seed the runs draw their modeled randomness from, one derived seed per run; required unless draws is min, max or average
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
subjectSymbolIdstring–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.

NameTypeReqDescription
argumentsnull|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"}}, {…
enginestring–the analysis engine asked; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
namedArgumentsobject–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…
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
rangesnull|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
samplesinteger–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
seedinteger–seed the draws are taken from; required with samples
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
subjectSymbolIdstring–qualified name of a part/usage to instantiate as an analysis case's subject, or a path from one
symbolIdstringyesqualified 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.

NameTypeReqDescription
argumentsnull|array–for case: argument expressions
countintegeryeshow many runs
kindstring–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
namestringyesqualified name of the action or case
objectstring–for action: the object performing it; for case: its subject
observablesnull|array–for action: the features to table with their distributions; every feature the action holds and the clock when omitted
seednull|integer–seed each run's modeled randomness derives from; omit for the session's
sessionstring–session name; omit for the default session
NameTypeReqDescription
evaluationsnull|array––
rowsnull|array–one per run of a sweep or of repeated runs
statusstringyesholds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made)
subjectstringyeswhat was run or checked, as named
textstringyesthe prompt's report
valuesnull|arrayyeswhat the run produced: a calc's result, an action's outputs, a case's outputs and verdicts
verificationsnull|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.

NameTypeReqDescription
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
selfCheckPackagenull|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
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–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.

NameTypeReqDescription
argumentsnull|array–the signal's feature values, written parameter=expression
sessionstring–session name; omit for the default session
signalstringyesthe signal's definition, qualified if needed
tostring–the receiving object (name, #id or path); omit for the object whose behavior is being debugged
NameTypeReqDescription
textstringyes–

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.

NameTypeReqDescription
capabilitiesnull|arrayyesnamed capabilities this build supports; each is a stable string a caller can require
versionstringyesbuild 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.

NameTypeReqDescription
sessionstring–session name; omit for the default session
NameTypeReqDescription
noticesnull|arrayyeswhat 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.

NameTypeReqDescription
sessionstring–session name; omit for the default session
NameTypeReqDescription
sessionstringyesthe 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.

NameTypeReqDescription
expressionstringyesa SysML expression: a literal, a feature or qualified name, or a compound expression over the session's declarations
sessionstring–session name; omit for the default session
NameTypeReqDescription
expressionstringyes–
outputstringyeswhat %eval printed
textstringyesthe value as the prompt prints it
value–yesthe 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.

NameTypeReqDescription
sessionsnull|arrayyesnames 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.

NameTypeReqDescription
pathsnull|arrayyesfiles, directories (walked for .sysml/.kerml/.ipynb) or glob patterns, relative to the workspace root or absolute; a path outside the root is refused
sessionstring–session name; omit for the default session
NameTypeReqDescription
declarednull|arrayyeswhat the load declared, as the prompt summarizes it; empty when the analysis found an error
diagnosticsnull|arrayyesevery finding over the session's model after the load, located in its file
errorsbooleanyeswhether the session's model now has an error
filesnull|arrayyesthe model files the paths named, in load order; files they import from beside them load too
textstringyeswhat %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.

NameTypeReqDescription
rootstring–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…
sessionstring–session name; omit for the default session
NameTypeReqDescription
sessionstringyesthe 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.

NameTypeReqDescription
namestring–qualified name of one element to print with its body; omit for the whole model
sessionstring–session name; omit for the default session
NameTypeReqDescription
textstringyesthe 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.

NameTypeReqDescription
argumentsnull|array–argument expressions: positional for a calc; positional, in parameter order, or written parameter=expression for an action's inputs or an analysis case
durationnull|number–for state: advance the machine's clock by this many time units after its initial transition; omit to take the initial transition alone
kindstringyeswhat to run: action, state (a state machine), calc or analysis (an analysis, verification or trade-study case)
namestringyesqualified name of the behavior
objectstring–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
schedulestring–scheduling policy for this run alone: declared, reverse, seed:<n> or explore[:runs=N,depth=D]; omit for the session's
sessionstring–session name; omit for the default session
NameTypeReqDescription
evaluationsnull|array––
rowsnull|array–one per run of a sweep or of repeated runs
statusstringyesholds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made)
subjectstringyeswhat was run or checked, as named
textstringyesthe prompt's report
valuesnull|arrayyeswhat the run produced: a calc's result, an action's outputs, a case's outputs and verdicts
verificationsnull|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.

NameTypeReqDescription
applyboolean–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
pathstringyesfile to write, relative to the workspace root or absolute but under it: .sysml notation, or .ttl/.json RDF (experimental)
sessionstring–session name; omit for the default session
NameTypeReqDescription
appliedbooleanyeswhether the file was written; false for an empty session, which has nothing to save
contentstring–without apply: the file's bytes, in the format the extension names
pathstringyesthe file, resolved
textstringyeswhat %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.

NameTypeReqDescription
sessionstring–session name; omit for the default session
textstringyesSysML v2 (or KerML) declarations, as typed at the prompt; a redeclaration of a name replaces the earlier one
NameTypeReqDescription
acceptedbooleanyeswhether the text was taken into the model without an error of its own
declarednull|arrayyesthe names this submission introduced
diagnosticsnull|arrayyesthe findings about this submission, located in it
noticesnull|arrayyesside effects, such as a debugging session the submission ended
textstringyeswhat 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.

NameTypeReqDescription
pathstringyesthe document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document
positionobjectyesthe position (1-based line and character column)
NameTypeReqDescription
activeParameterintegeryes–
activeSignatureintegeryes–
signaturesnull|arrayyes–

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.

NameTypeReqDescription
namestringyesqualified name of the constraint, requirement, satisfaction, part or analysis case
sessionstring–session name; omit for the default session
NameTypeReqDescription
reportsnull|arrayyes–
textstringyes–

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.

NameTypeReqDescription
argumentsnull|array–argument expressions fixed for every row, positional or parameter=expression
namestringyesqualified name of the calc or analysis case
objectstring–the case's subject, an object the session holds
rangesnull|arrayyesone per swept parameter, written parameter=from..to[:step]; the rows are the cartesian product
samplesnull|object–draw rows uniformly from the ranges instead of stepping them
sessionstring–session name; omit for the default session
NameTypeReqDescription
evaluationsnull|array––
rowsnull|array–one per run of a sweep or of repeated runs
statusstringyesholds, fails or unresolved; unresolved is a question the model did not answer (an unknown name, a run that could not be made)
subjectstringyeswhat was run or checked, as named
textstringyesthe prompt's report
valuesnull|arrayyeswhat the run produced: a calc's result, an action's outputs, a case's outputs and verdicts
verificationsnull|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.

NameTypeReqDescription
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
symbolIdstringyesthe 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.

NameTypeReqDescription
groupstring–answer only this group's tools: lsp, runtime or session
NameTypeReqDescription
groupsnull|arrayyes–
toolsnull|arrayyes–

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.

NameTypeReqDescription
pathstringyesan open document, absolute or relative to the workspace root
textstringyesthe full new text of the document
NameTypeReqDescription
diagnosticsnull|arrayyesthe diagnostics of the text now held
openbooleanyeswhether the server now holds an open buffer for the document
pathstringyes–
versionintegeryesthe 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.

NameTypeReqDescription
enginestring–the analysis engine asked; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
symbolIdstringyesqualified 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.

NameTypeReqDescription
argumentsnull|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…
enginestring–the analysis engine asked, as list_engines names them; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
namedArgumentsobject–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…
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
questionstring–evaluate (the default: one evaluation), holds (prove over every free assignment) or satisfiable (find one satisfying assignment)
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
subjectSymbolIdstring–qualified name of a part/usage to instantiate and evaluate against, or a path from one to a nested object; empty evaluates declared values
symbolIdstringyesqualified 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.

NameTypeReqDescription
argumentsnull|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…
enginestring–the analysis engine asked, as list_engines names them; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
namedArgumentsobject–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…
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
questionstring–evaluate (the default: one evaluation), holds (prove over every free assignment) or satisfiable (find one satisfying assignment)
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
subjectSymbolIdstring–qualified name of a part/usage to instantiate and evaluate against, or a path from one to a nested object; empty evaluates declared values
symbolIdstringyesqualified 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.

NameTypeReqDescription
enginestring–the analysis engine asked; empty is auto
modelHashstring–the model_hash a parse answered; give this, or paths and/or sources to parse first
pathsnull|array–model files to parse as one model, absolute or relative to the workspace root
questionstring–evaluate (the default), holds or satisfiable
sourcesnull|array–documents given inline, parsed with paths as one model
strictConformanceboolean–judge the documents as conforming SysML v2: notation no pinned production admits is an error rather than a warning
symbolIdstring–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.

NameTypeReqDescription
pathstringyesthe document, absolute or relative to the workspace root; a sysml://stdlib/<file> URI for a standard library document
NameTypeReqDescription
pseudoViewsnull|arrayyes–
viewsnull|arrayyes–

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.

NameTypeReqDescription
pathstring–one document, absolute or relative to the workspace root; omitted, every document of the workspace
NameTypeReqDescription
diagnosticsnull|arrayyes–
documentsintegeryesdocuments analyzed
errorsintegeryes–
warningsintegeryes–

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.

NameTypeReqDescription
documentsnull|arrayyespaths of the model documents indexed, the standard library excluded
opennull|array–documents whose text is held open with edits not yet on disk
rootstringyesthe workspace folder the server indexed

No examples provided.

workspace_symbols ~54

Search the workspace's declared elements by name substring.

NameTypeReqDescription
limitinteger–at most this many matches; default 200
querystring–case-insensitive substring of the name; empty lists every named element
NameTypeReqDescription
symbolsnull|arrayyes–
totalintegeryesmatches before the limit

No examples provided.

Install

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

# add to Claude Code
claude mcp add org-opensysml-sysml-mcp -- npx -y @openmbee/sysml-mcp -root .
Common questions

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.