@@ -49,28 +49,20 @@ internal McpClientImpl(ITransport transport, string endpointName, McpClientOptio
4949        var  notificationHandlers  =  new  NotificationHandlers ( ) ; 
5050        var  requestHandlers  =  new  RequestHandlers ( ) ; 
5151
52-         if  ( options . Capabilities  is  {  }  capabilities ) 
53-         { 
54-             RegisterHandlers ( capabilities ,  notificationHandlers ,  requestHandlers ) ; 
55-         } 
52+         RegisterHandlers ( options . Handlers ,  notificationHandlers ,  requestHandlers ) ; 
5653
5754        _sessionHandler  =  new  McpSessionHandler ( isServer :  false ,  transport ,  endpointName ,  requestHandlers ,  notificationHandlers ,  _logger ) ; 
5855    } 
5956
60-     private  void  RegisterHandlers ( ClientCapabilities   capabilities ,  NotificationHandlers  notificationHandlers ,  RequestHandlers  requestHandlers ) 
57+     private  void  RegisterHandlers ( McpClientHandlers   handlers ,  NotificationHandlers  notificationHandlers ,  RequestHandlers  requestHandlers ) 
6158    { 
62-         if  ( capabilities . NotificationHandlers  is  {  }  notificationHandlersFromCapabilities ) 
59+         if  ( handlers . NotificationHandlers  is  {  }  notificationHandlersFromOptions ) 
6360        { 
64-             notificationHandlers . RegisterRange ( notificationHandlersFromCapabilities ) ; 
61+             notificationHandlers . RegisterRange ( notificationHandlersFromOptions ) ; 
6562        } 
6663
67-         if  ( capabilities . Sampling  is  {  }  samplingCapability ) 
64+         if  ( handlers . SamplingHandler  is  {  }  samplingHandler ) 
6865        { 
69-             if  ( samplingCapability . SamplingHandler  is  not {  }  samplingHandler ) 
70-             { 
71-                 throw  new  InvalidOperationException ( "Sampling capability was set but it did not provide a handler." ) ; 
72-             } 
73- 
7466            requestHandlers . Set ( 
7567                RequestMethods . SamplingCreateMessage , 
7668                ( request ,  _ ,  cancellationToken )  =>  samplingHandler ( 
@@ -79,34 +71,33 @@ private void RegisterHandlers(ClientCapabilities capabilities, NotificationHandl
7971                    cancellationToken ) , 
8072                McpJsonUtilities . JsonContext . Default . CreateMessageRequestParams , 
8173                McpJsonUtilities . JsonContext . Default . CreateMessageResult ) ; 
74+             
75+             _options . Capabilities  ??=  new ( ) ; 
76+             _options . Capabilities . Sampling  ??=  new ( ) ; 
8277        } 
8378
84-         if  ( capabilities . Roots  is  {  }  rootsCapability ) 
79+         if  ( handlers . RootsHandler  is  {  }  rootsHandler ) 
8580        { 
86-             if  ( rootsCapability . RootsHandler  is  not {  }  rootsHandler ) 
87-             { 
88-                 throw  new  InvalidOperationException ( "Roots capability was set but it did not provide a handler." ) ; 
89-             } 
90- 
9181            requestHandlers . Set ( 
9282                RequestMethods . RootsList , 
9383                ( request ,  _ ,  cancellationToken )  =>  rootsHandler ( request ,  cancellationToken ) , 
9484                McpJsonUtilities . JsonContext . Default . ListRootsRequestParams , 
9585                McpJsonUtilities . JsonContext . Default . ListRootsResult ) ; 
86+ 
87+             _options . Capabilities  ??=  new ( ) ; 
88+             _options . Capabilities . Roots  ??=  new ( ) ; 
9689        } 
9790
98-         if  ( capabilities . Elicitation  is  {  }  elicitationCapability ) 
91+         if  ( handlers . ElicitationHandler  is  {  }  elicitationHandler ) 
9992        { 
100-             if  ( elicitationCapability . ElicitationHandler  is  not {  }  elicitationHandler ) 
101-             { 
102-                 throw  new  InvalidOperationException ( "Elicitation capability was set but it did not provide a handler." ) ; 
103-             } 
104- 
10593            requestHandlers . Set ( 
10694                RequestMethods . ElicitationCreate , 
10795                ( request ,  _ ,  cancellationToken )  =>  elicitationHandler ( request ,  cancellationToken ) , 
10896                McpJsonUtilities . JsonContext . Default . ElicitRequestParams , 
10997                McpJsonUtilities . JsonContext . Default . ElicitResult ) ; 
98+ 
99+             _options . Capabilities  ??=  new ( ) ; 
100+             _options . Capabilities . Elicitation  ??=  new ( ) ; 
110101        } 
111102    } 
112103
0 commit comments