I am working on a Unity client that is designed to work with a Node server on a local network. I would like for the Unity client to auto-discover the local Node server. My understanding is that the NetworkDiscovery component in Unity is designed to work with Unity server (not a Node server). Is there a built-in tool for discovering non-unity servers on a local network?
No, such a general tool doesn’t exist. Discovery in a Network must be either explicitly implemented in the server or you have to use some sort of brute force scanning. Scanning only works if the server has some sort of known response which you can interpret as “hey, there’s a server”. Not every protocol supports discovery since the protocol must support sending broadcasts which TCP for example does not. UDP does support broadcasts. Though as i said the server must explicitly implement some sort of reply mechanism in order to identify itself. There is no standard for this.
The NetworkDiscovery component should work with any kind of UDP server that responds to the broadcast. Just have a look at the source code. Note if the NetworkManager is used, the class will use this broadcast data. However if not you can send whatever you want. The important thing is that the server you want to find actually listens for broadcasts on a specific port and is able to identify the broadcast as a discovery request and then reply to the request.
Though if you don’t trust Unity’s implementation you can use the ordinary UDPClient. The basic idea is explained here