The issue with the current state of the ecosystem to do what you're saying is that server implementations all have extreme variances of quality. Some are very robust and reliable. Others have very poor and limited UX, if you can even get them to start up on your local machine.
So we're not really in a place where we can trust that a server "does what it says it can do [well]", and so any autonomous solution to "choose tools (servers)" probably won't work well today (yet) while the signal to noise ratio is poor.
Personally: I think autonomously choosing between tools is not the most compelling approach in the short to medium time horizon. I expect client application creators to get a lot of mileage by thoughtfully curating the possible servers exposed to their users, and building nice UX to integrate usage of relevant servers as-needed.
It is conceivable that we make it completely dynamic where the agent first decides which set of servers it should need for its task/instruction. Another way of framing that is it should be possible to create agents themselves dynamically based on the objective.
I don’t have a good answer to this yet but if you want to help figure that out we can collaborate