Is there a VNC server that lets me define only a region of the screen for remote control?
If the reason why you need this is because of bandwith limitations (e.g. low connection speed), then, as Darth Android said in a comment, VNC already transmits only portions of the screen that change.
If the client has not lost any contents of the area in which it is interested, then it sends a FramebufferUpdateRequest with incremental set to non-zero (true). If and when there are changes to the specified area of the framebuffer, the server will send a FramebufferUpdate.
If you read the terminology at the beginning of the RFC, it is clear that by area they mean a portion of the screen (its corresponding pixels), and since only the changing pixels are transmitted, if the rest of the screen is not touched then only the portion on which you are interested will be transmitted to the client.