Is your feature request related to a problem? Please describe.
In mcp_toolset.py if the get_tools() method does not receive a response due to an issue with the MCP server then this can hang forever until a top level timeout kicks in. However, since there is no timeout or any error handling, the user is in the dark about the error that occurred. There should be better error handling and possibly a configurable/default timeout when handling async calls to external services.
Describe the solution you'd like
Expose a configurable timeout or at least implement a default timeout for async calls to external services alongside appropriate error messages that will inform the user where exactly a failure occurred.