Mr. XML Publisher runs on a wide variety of hardware. All that is required is that the machine support a web container compliant with the Java Servlet specification at version 2.4 or greater. That might include anything from a laptop with a single CPU and limited memory to a server with many CPUs, many gigabytes of memory, and multiple network interfaces.
Mr. XML Publisher is a multithreaded application. Thus, it will make full use of all your server's CPU cores and hyperthreading capabilities. Set the MAX_CONCURRENT_REQUESTS <context-param> in Mr. XML Publisher's web.xml file to a number less than or equal to the number of CPU cores in your server. Hyperthreading counts as one-half CPU.
The amount of memory recommended in a server running Mr. XML Publisher depends on too many things to be specific. More is better, especially if you are using a RAM disk to unpack and process uploaded projects. Other factors, such as whether the server is a dedicated Mr. XML Publisher server, whether it simultaneously runs a relational database or native XML data store, and the number of users the server is expected to accommodate, all these things affect the amount of memory required. Two gigabytes is probably the minimum in most cases. Four gigabytes might be needed in a heavily loaded server.
If your local network runs at gigabit speed, it is likely that the time taken to transfer data to/from your Mr. XML Publisher system is negligible. However, if your users routinely format very large XML projects, perhaps several hundred megabytes in size, if your server's networking is not at gigabit speed, or if your server needs to conserve its processing capacity, then you would benefit by using multiple network interfaces combined with "bonding" or "teaming." Depending on your hardware, the operating system, and your server's configuration, the increase in throughput can be significant. Even if the benefit is limited to unburdening your server's CPUs, it is usually well worth the cost and trouble.
Consult the documentation for your networking hardware. Bonding/teaming is not universally supported. On Windows, combining network interfaces is called "teaming." Setting it up is usually very easy, almost automatic. You just follow the guides and prompts Windows presents. On Linux, it's called "bonding." Setting up bonding on Linux can be a bit more difficult. Some Linux distributions automatically detect multiple network interfaces and handle their bonding automatically upon installation of the operating system. With others, you must set it up yourself. Consult the Linux source code's bonding.txt file. It is located in the networking directory within the Linux kernel's source code tree.