Mapping MTConnect Streams for Dashboard Visualization

Connect FlowFuse to MTConnect agents and build real-time CNC machine dashboards without custom code.

Sumit Shinde
Back to Blog Posts
Image representing null

Most manufacturing facilities run MTConnect agents on their CNC machines, but the XML data these agents produce isn't directly usable. You receive streams of timestamped measurements, state changes, and condition flags wrapped in hierarchical XML structures. Converting this into a functional dashboard means solving three problems: retrieving the data reliably, parsing it correctly, and routing specific values to the right display components.

This article walks through the implementation. You'll connect FlowFuse to an MTConnect agent, extract data items from the XML response, and build dashboard widgets that update in real time.

What MTConnect Is and Why It Matters

MTConnect is an open manufacturing standard that defines how equipment communicates operational data. Before MTConnect, each machine tool manufacturer used proprietary protocols. Connecting a Mazak, Haas, and DMG MORI to the same monitoring system meant writing custom integrations for each brand. MTConnect solves this by providing a vendor-neutral protocol that any machine can implement.

The standard specifies what data machines should report and how to structure it. A spindle speed reading from a Haas looks identical to one from a Mazak when both machines run MTConnect agents. This standardization makes it possible to build dashboards and monitoring systems that work across mixed machine fleets without custom code for each manufacturer.

MTConnect agents typically run as software on the machine controller or on a separate computer connected to the machine. The agent reads data from the controller's internal systems and exposes it through HTTP endpoints that return XML. You don't interact with the machine directly—you interact with the agent.

Data Types in MTConnect

MTConnect organizes data into three categories:

  • Samples - Continuous numeric measurements like spindle speed, axis position, temperature, power consumption. These values change smoothly and have units.
  • Events - Discrete state changes like mode switches, program starts, door opens. Values are strings or enumerations.
  • Condition - Equipment health at the component level: normal, warning, fault, unavailable. Multiple conditions can be active simultaneously.

Agents expose this through HTTP endpoints. /current returns latest values for all data items. /sample?from=X&count=Y returns time-series data.

XML Response Structure

When you query an MTConnect agent, the response is an XML document rooted in the Streams element, which contains one or more DeviceStream elements—each representing a device or machine.

Within each DeviceStream, ComponentStream elements describe individual machine components such as spindles, axes, or controllers. Each component reports its data using three categories: Samples, Events, and Conditions.

Samples represent continuously measured values, while Events represent discrete or state-based changes. Conditions are reported inside a Conditions container and use state-specific elements—such as Normal, Warning, or Fault—rather than a generic condition element. Multiple condition states may be active at the same time, as long as they represent different condition data items.

Each reported data item includes a dataItemId for identification, a timestamp indicating when the value was recorded, and the value itself provided as text content, for example:

<SpindleSpeed dataItemId="S1spd" timestamp="2026-01-30T14:23:17.492Z">2847</SpindleSpeed>

While this hierarchical structure provides a complete and standardized view of the machine, dashboard implementations must traverse multiple levels of nesting and correlate dataItemId values with their definitions in the Devices model to extract and display the data they care about.

Getting Started

Now that we understand the structure of MTConnect and the challenges involved, let's look at how to collect and visualize MTConnect data using FlowFuse.

FlowFuse is an industrial application platform built on Node-RED that brings data collection, transformation, and visualization together in one place. Instead of writing custom integration code, you build flows visually by dragging, configuring, and connecting nodes, then deploying them—no separate tools required.

Prerequisites

Before you begin, you need:

  • FlowFuse instance – An active FlowFuse account with an instance created and access to the Node-RED Editor. Sign up at https://app.flowfuse.com and follow the FlowFuse getting started guide at https://flowfuse.com/docs/user/introduction/#getting-started-with-flowfuse. If you are new to Node-RED, you can also check out our course on Node-RED.
  • MTConnect agent – A CNC machine running an MTConnect agent or an MTConnect simulator such as the public agent at agent.mtconnect.org or a locally hosted agent
  • Network access – Connectivity from the FlowFuse instance to the MTConnect agent's HTTP endpoint, with the FlowFuse Remote Device Agent installed when connecting from cloud-hosted FlowFuse to on-premises machines

Collecting MTConnect Data

Bringing MTConnect data into FlowFuse is the first step toward a live dashboard. While you could use the standard HTTP Request node to query MTConnect agents, which is the most common approach, that method requires manually parsing XML responses and navigating through large nested objects to extract specific data points. In this article, I'll show you an easier way.

The Solution Engine node (node-red-contrib-solution-engine) makes this straightforward because it lets you access any data point directly by its dataItemId, without having to worry about parsing XML or navigating nested structures.

You can install the node by following the instructions in the FlowFuse documentation: Using the Palette Manager.

Once installed, follow these steps to start collecting data:

  1. Add the mtconnect-dataitem node to your canvas and open its configuration.

  2. Enter the host of your MTConnect agent or broker (for example, mtconnect.isoc.net).

  3. Enter the port your agent is listening on.

  4. Path (optional): leave this empty in most cases. The node automatically detects the type of agent or broker and chooses the correct endpoint:

    • For SolutionEngine agents, it uses /api/v6/mtc/current.
    • For generic MTConnect brokers like mtconnect.isoc.net, it uses /current.

    Only fill in this field if your broker uses a custom endpoint that differs from the defaults. Entering /current manually for standard brokers may cause the node to fail.

  5. Enter the dataItemId for the value you want to retrieve.

  6. Once everything is configured, deploy the flow.

To trigger the node, add an Inject node, set the polling interval you want, and connect it to the mtconnect-dataitem node. This will fetch the latest data at regular intervals and send it to your dashboard or other nodes in the flow.

When the node successfully retrieves data, it outputs the following fields: msg.payload (the value), dataItemId, timestamp, sequence, and name. The node also shows the status with a green square when data is found successfully. If the value isn't available, it will display a yellow square.

MTConnect Data Item node output on debug panel

Building the Dashboard

Now that you're successfully retrieving MTConnect data, the next step is to display it on a live dashboard. FlowFuse makes this straightforward with its dashboard package. You can bind any data item to a visual component, and it updates automatically whenever new data arrives.

Before you start, make sure to install the @flowfuse/node-red-dashboard package to add the dashboard nodes.

For this tutorial, we'll demonstrate two example data points: Controller Mode and Spindle Speed. You can apply the same steps to all other data points as an exercise. I'm using a public MTConnect demo agent (https://demo.mtconnect.org) to make it easy to follow along.

Note: This is a brief demonstration to help you understand the workflow. When building your production dashboard, make sure to use the appropriate host and port for your actual MTConnect agent, and select widgets that best suit your specific monitoring needs and use case.

I've provided additional data points with their dataItemIds below so you can practice. Try to match the dashboard shown in the image below, or create your own layout by selecting different dataItemIds and widget types. For more information on available dashboard widgets, see the FlowFuse documentation: https://dashboard.flowfuse.com/nodes/widgets.

MTConnect FlowFuse Dashboard at left and MTConnect demo public agent digital twin at right

Available Data Points for Practice

Data Item ID Name Description
execution Execution State Program execution status (ACTIVE, READY, STOPPED)
doorstate Door State Machine door status (OPEN/CLOSED)
program Program Name Currently loaded program name
activeprog Active Program Currently executing program
Tool_number Tool Number Active tool number
pallet_num Pallet Number Current pallet identifier
Xabs X-Axis Absolute Position Current X-axis absolute position in mm
Zabs Z-Axis Absolute Position Current Z-axis absolute position in mm
Bpos B-Axis Position Current B-axis rotational position
Cpos C-Axis Position Current C-axis rotational position

Steps to Create the Dashboard

  1. Drag an Inject node onto the canvas, double-click it, and set Repeat to interval for every 1 second.

  2. Drag two mtconnect-dataitem nodes onto the canvas and connect them to the inject node.

  3. Double-click the first mtconnect-dataitem node and configure it: Host: demo.mtconnect.org, Port: 5000, Data Item ID: mode. For the second node, use the same configuration except Data Item ID: Srpm. Click Done for both nodes.

  4. Drag a Text widget onto the canvas and double-click it. Click the + button next to Group to create a new group: Group Name: Machine State, select the page and check Display group name, then click Done.

  5. In the Text widget configuration: Label: Controller Mode:, Layout: Select the 4th option, enable Style option, Font: Default, Text Size: 26, then click Done.

Text widget configuration settings

  1. Connect the mode mtconnect-dataitem node output to the Text widget input.

  2. Drag a Gauge widget onto the canvas and double-click it. Create a new group: Group Name: Spindle Speed. In the Gauge widget configuration: Type: Half gauge, Style: Rounded, Value: msg.payload, Range limits: 0 to 10000.

  3. Add three segments by clicking the + button in the Segments section and configure them as shown in the image below.

Gauge widget configuration settings

  1. Connect the Srpm mtconnect-dataitem node output to the Gauge widget input.

  2. Click Deploy in the top-right corner.

To achieve the page layout as shown in the dashboard I have built, follow the Setting Page Layout guide and set it to Notebook.

Your dashboard should now display live updates for Controller Mode and Spindle Speed from the MTConnect agent. You can extend this by adding more data items from the table above, experimenting with different widget types, and organizing them into logical groups for your specific monitoring needs.

Below is the complete flow configuration. If you've successfully built the dashboard following the steps above, you can compare it with this reference implementation:

Conclusion

Your MTConnect dashboard is now live, pulling real-time machine data and displaying it through visual widgets. The setup you've built here works the same way across any MTConnect-compliant machine in your facility.

This is what FlowFuse does—it makes connecting to equipment, collecting data, transforming it into useful formats, and visualizing it on dashboards straightforward. Beyond basic monitoring, you can log production metrics to databases for trend analysis, set up automated alerts when machines enter fault states, integrate shop floor data with MES or ERP systems, and build event-driven workflows that respond to machine conditions. For production environments, FlowFuse Enterprise provides role-based access control, audit logging, high availability infrastructure, and dedicated support—giving you the operational controls needed to run manufacturing applications reliably across multiple facilities.

Want to deploy this across your facility? Contact us to discuss your manufacturing monitoring requirements.

About the Author

Sumit Shinde

Technical Writer

Sumit is a Technical Writer at FlowFuse who helps engineers adopt Node-RED for industrial automation projects. He has authored over 100 articles covering industrial protocols (OPC UA, MQTT, Modbus), Unified Namespace architectures, and practical manufacturing solutions. Through his writing, he makes complex industrial concepts accessible, helping teams connect legacy equipment, build real-time dashboards, and implement Industry 4.0 strategies.