@@ -683,23 +683,27 @@ func (s *Server) AddReceivingMiddleware(middleware ...Middleware[*ServerSession]
683683}
684684
685685// serverMethodInfos maps from the RPC method name to serverMethodInfos.
686+ //
687+ // The 'allowMissingParams' values are extracted from the protocol schema.
688+ // TODO(rfindley): actually load and validate the protocol schema, rather than
689+ // curating these method flags.
686690var serverMethodInfos = map [string ]methodInfo {
687- methodComplete : newMethodInfo (serverMethod ((* Server ).complete ), true ),
688- methodInitialize : newMethodInfo (sessionMethod ((* ServerSession ).initialize ), true ),
689- methodPing : newMethodInfo (sessionMethod ((* ServerSession ).ping ), true ),
690- methodListPrompts : newMethodInfo (serverMethod ((* Server ).listPrompts ), true ),
691- methodGetPrompt : newMethodInfo (serverMethod ((* Server ).getPrompt ), true ),
692- methodListTools : newMethodInfo (serverMethod ((* Server ).listTools ), true ),
693- methodCallTool : newMethodInfo (serverMethod ((* Server ).callTool ), true ),
694- methodListResources : newMethodInfo (serverMethod ((* Server ).listResources ), true ),
695- methodListResourceTemplates : newMethodInfo (serverMethod ((* Server ).listResourceTemplates ), true ),
696- methodReadResource : newMethodInfo (serverMethod ((* Server ).readResource ), true ),
697- methodSetLevel : newMethodInfo (sessionMethod ((* ServerSession ).setLevel ), true ),
698- methodSubscribe : newMethodInfo (serverMethod ((* Server ).subscribe ), true ),
699- methodUnsubscribe : newMethodInfo (serverMethod ((* Server ).unsubscribe ), true ),
700- notificationInitialized : newMethodInfo (serverMethod ((* Server ).callInitializedHandler ), false ),
701- notificationRootsListChanged : newMethodInfo (serverMethod ((* Server ).callRootsListChangedHandler ), false ),
702- notificationProgress : newMethodInfo (sessionMethod ((* ServerSession ).callProgressNotificationHandler ), false ),
691+ methodComplete : newMethodInfo (serverMethod ((* Server ).complete ), 0 ),
692+ methodInitialize : newMethodInfo (sessionMethod ((* ServerSession ).initialize ), 0 ),
693+ methodPing : newMethodInfo (sessionMethod ((* ServerSession ).ping ), missingParamsOK ),
694+ methodListPrompts : newMethodInfo (serverMethod ((* Server ).listPrompts ), missingParamsOK ),
695+ methodGetPrompt : newMethodInfo (serverMethod ((* Server ).getPrompt ), 0 ),
696+ methodListTools : newMethodInfo (serverMethod ((* Server ).listTools ), missingParamsOK ),
697+ methodCallTool : newMethodInfo (serverMethod ((* Server ).callTool ), 0 ),
698+ methodListResources : newMethodInfo (serverMethod ((* Server ).listResources ), missingParamsOK ),
699+ methodListResourceTemplates : newMethodInfo (serverMethod ((* Server ).listResourceTemplates ), missingParamsOK ),
700+ methodReadResource : newMethodInfo (serverMethod ((* Server ).readResource ), 0 ),
701+ methodSetLevel : newMethodInfo (sessionMethod ((* ServerSession ).setLevel ), 0 ),
702+ methodSubscribe : newMethodInfo (serverMethod ((* Server ).subscribe ), 0 ),
703+ methodUnsubscribe : newMethodInfo (serverMethod ((* Server ).unsubscribe ), 0 ),
704+ notificationInitialized : newMethodInfo (serverMethod ((* Server ).callInitializedHandler ), notification | missingParamsOK ),
705+ notificationRootsListChanged : newMethodInfo (serverMethod ((* Server ).callRootsListChangedHandler ), notification | missingParamsOK ),
706+ notificationProgress : newMethodInfo (sessionMethod ((* ServerSession ).callProgressNotificationHandler ), notification ),
703707}
704708
705709func (ss * ServerSession ) sendingMethodInfos () map [string ]methodInfo { return clientMethodInfos }
@@ -744,6 +748,9 @@ func (ss *ServerSession) handle(ctx context.Context, req *jsonrpc.Request) (any,
744748}
745749
746750func (ss * ServerSession ) initialize (ctx context.Context , params * InitializeParams ) (* InitializeResult , error ) {
751+ if params == nil {
752+ return nil , fmt .Errorf ("%w: \" params\" must be be provided" , jsonrpc2 .ErrInvalidParams )
753+ }
747754 ss .mu .Lock ()
748755 ss .initializeParams = params
749756 ss .mu .Unlock ()
0 commit comments