MCWS Plugin for Open MCT is a package that allows Open MCT to use MCWS (Mission Control Web Services) as a telemetry and persistence provider.
Open Mission Control Technologies, or Open MCT, is a next-generation web-based mission control and situational awareness framework, for visualization of data on desktop and mobile devices. Open MCT is developed at NASA Ames Research Center in Silicon Valley, in collaboration with NASA AMMOS and the Jet Propulsion Laboratory, California Institute of Technology (under its contract with NASA, 80NM0018D0004).
Follow instructions to install the Open MCT Build Tool. The MCWS Plugin is then included and customized in build tool configuration.
- Add the plugin Example:
mct plugins add openmct-mcws-plugin --options '{"mcwsUrl": "<mcws_url>", "namespaces": [{"key": "my-instance", "name": "Shared", "url": "<shared_persistence_url>"}, {"key": "my-instance", "name": "Users", "url": "<user_persistence_url>", "userNamespace": true}]}'- Configure Open MCT Example:
mct plugins configure openmct.plugins.DisplayLayout --options '{"showAsView": ["summary-widget", "vista.packetSummaryEvents", "vista.dataProducts", "vista.packets", "vista.frameSummary", "vista.frameWatch"]}'
mct plugins configure openmct.plugins.Filters --options '["vista.alarmsView", "vista.chanTableGroup", "vista.commandEventsView", "vista.messagesView", "vista.evrView"]'- Build Open MCT Example:
mct buildTo deploy to Tomcat, package the built instance folder as a WAR; see Tomcat Web Application Deployments.
- Specify a pre-configured recipe to build (from the openmct-build directory) Example:
mct build --recipe recipes/mcws/prod.yaml --instance prod-instanceExample prod.yaml
# yaml-language-server: $schema=../../src/assets/openmct-configuration-schema.json
# Builds Open MCT for MCWS without dev plugins enabled. Requires an MCWS server to connect to.
openmct:
version: latest
plugins:
- openmct.plugins.Snow # Theme: 'Snow', 'Espresso' or 'Maelstrom'
- openmct.plugins.ObjectMigration
- openmct.plugins.ClearData:
options:
- ['table', 'telemetry.plot.overlay', 'telemetry.plot.stacked', 'vista.packetSummaryEvents', 'vista.dataProducts', 'vista.packets', 'vista.frameSummary', 'vista.frameWatch', 'vista.chanTableGroup']
- indicator: false
- openmct.plugins.DisplayLayout:
options:
showAsView:
- summary-widget
- vista.packetSummaryEvents
- vista.dataProducts
- vista.packets
- vista.frameSummary
- vista.frameWatch
- openmct.plugins.Filters:
options:
- - vista.alarmsView
- telemetry.plot.overlay
- table
- vista.chanTableGroup
- vista.commandEventsView
- vista.messagesView
- vista.evrView
- openmct.plugins.UTCTimeSystem
- openmct.plugins.Notebook
- openmct.plugins.Clock:
options:
useClockIndicator: false
- openmct.plugins.DefaultRootName:
options: ['VISTA']
- openmct.plugins.MyItems:
enabled: false
- openmct-mcws-plugin:
npmPackage: latest
options:
useDeveloperStorage: false
camUrl: ''
mcwsUrl: ''
namespaces:
- key: 'example-key'
name: 'Deployment Shared'
url: '/path/to/persistence/shared'
- userNamespace: true
key: 'example-key'
name: 'Deployment Users'
url: '/path/to/persistence/users'The recipe example above shows typical build-time values, not the plugin’s built-in defaults.
mcwsUrl: The url to the MCWS server.- In the
namespacesconfiguration,url, the path to the MCWS persistence spaces, are required.
Plugin settings are merged in this order (highest precedence first):
mcws-config.json: optional file at the root of the built Open MCT instance (runtime). Release artifacts will includemcws-config.example.json; copy or rename it tomcws-config.jsonand set values you want to override.- Build-tool recipe / plugin options: set when building with
mct(see examples above). - Plugin defaults: defined in code in the
defaultConfigobject inplugin.js.
For descriptions of all supported options as well as examples of a build tool recipe and a runtime json config, see CONFIGURATION.md.
After the plugin loads, the merged config is available on window.openmctMCWSConfig. To see where each value came from, use window.openmctMCWSConfigurationAudit:
runtime— values frommcws-config.jsonloaded at runtimebuild— values from build-tool recipe / plugin optionsdefault— values from plugin defaults inplugin.jsderived— values computed at load time (e.g.useDeveloperStorage)sources— flat lookup of dotted paths to source name (e.g.sources['time.defaultMode']→'default')
Example (browser console):
openmctMCWSConfigurationAudit.sources.mcwsUrl
openmctMCWSConfigurationAudit.runtime
openmctMCWSConfigurationAudit.buildThis repository still includes a legacy standalone app entry point (index.html, config.js, legacy-index.js) for local development and WAR packaging. This will be removed in the future.
Edit config.js to set window.openmctMCWSConfig (all plugin options). Run npm install, build with npm run build:prod and run with npm start, or package with Maven for Tomcat.
For new deployments, prefer the Open MCT Build Tool with optional runtime mcws-config.json (see Configuration above).
The legacy branch contains the previous combined Open MCT + MCWS product layout.
MCWS is a closed source product in the Advanced Multi-Mission Operations System (AMMOS) catalog. Contact someone at AMMOS for instructions how to install MCWS.
MCWS is the open source repository for MCWS. MCWS will become open source once all closed source dependencies are purged or made to be open source as well.
Mock MCWS server (requires access request)
Open MCT can be deployed to Tomcat as a WAR. How you create the WAR depends on whether you used the build tool or the legacy workflow in this repository.
After building with mct, package the entire built instance directory as the WAR webapp root. That directory (for example openmct-build/instances/prod-instance/) should contain at least:
index.htmlassets/node_modules/- optional
mcws-config.json(if using runtime overrides; see Configuration)
Add or edit mcws-config.json in the instance folder if needed, then create the WAR:
cd /path/to/openmct-build/instances/testing
jar -cvf openmct_client.war .Jamie Vigliotta (jamie.j.vigliotta@nasa.gov), David Tsay (david.e.tsay@nasa.gov)
Or join us on Slack