After some googling and asking Copilot I got an answer, which seems to be right and pushed me in the right direction.
The start_tcp_server function in pymodbus is a blocking call, which means it will not return control to your program until the server is stopped. Changing the values from the client works, so I will have to start doing that. With that change, the reading works fine.