Creates a connection to the MCP server (runs the server as a subprocess if needed).
This does NOT yet send the "initialize" message to negotiate capabilities.
Sends the "initialize" message to the MCP server to negotiate
capabilities, supported protocol version etc. When this method
returns successfully, the transport is fully initialized and ready to
be used. This has to be called AFTER the "start" method.