Multithreaded telnet chat server in Java
I scanned the code of Server 3 times, looking for where something is added to handlers. Because that's where I expected it.
I thought the code might be broken or that sendAll is an unused method, because handlers seems always empty.
Finally I found that it's the MessageHandler instances that use Server.getHandlers(), and append themselves.

Why is MessageHandler aware of the handlers of the server?
MessageHandler doesn't really need to be aware of the collection of handlers in the server, does it?
It doesn't, and therefore shouldn't.
In fact, it would be better if the message handlers were cleanly isolated from each other.

By the same line of reasoning,
why is MessageHandler aware of the Server at all?
It would be better if it wasn't.
If you want to let message handlers interact with the server in some way,
it would be better to create a dedicated interface for that,
and pass an instance of that interface to message handlers.

It's not recommended to start threads from constructors.
It would be better to let Server call .run() on the message handlers right after construction.

Do not nest try blocks within try blocks.
Break up the large try-catch to smaller blocks with minimal code within any try. The nesting will naturally disappear,
and the code will become easier to understand and to debug.

In Java it's recommended to declare class fields at the top, followed by constructors, followed by methods.