feat(mcp): export initialized result in client session (#320)

Export ServerCapabilities and related subtypes and update protocol,
server, and tests to use exported types. Add InitializeResult method on
ClientSession for accessing the initialize result from sessions.

Fixes: https://github.com/modelcontextprotocol/go-sdk/issues/166

Co-authored-by: Shashank Pachava <spachava753@gmail.com>
This commit is contained in:
Matt L 2025-08-18 14:49:02 -04:00 • committed by GitHub
commit 75f9999590
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -242,27 +242,27 @@ func (s *Server) RemoveResourceTemplates(uriTemplates ...string) {
func() bool { return s.resourceTemplates.remove(uriTemplates...) })
}
func (s *Server) capabilities() *serverCapabilities {
func (s *Server) capabilities() *ServerCapabilities {
s.mu.Lock()
defer s.mu.Unlock()
caps := &serverCapabilities{
Logging: &loggingCapabilities{},
caps := &ServerCapabilities{
Logging: &LoggingCapabilities{},
}
if s.opts.HasTools || s.tools.len() > 0 {
caps.Tools = &toolCapabilities{ListChanged: true}
caps.Tools = &ToolCapabilities{ListChanged: true}
}
if s.opts.HasPrompts || s.prompts.len() > 0 {
caps.Prompts = &promptCapabilities{ListChanged: true}
caps.Prompts = &PromptCapabilities{ListChanged: true}
}
if s.opts.HasResources || s.resources.len() > 0 || s.resourceTemplates.len() > 0 {
caps.Resources = &resourceCapabilities{ListChanged: true}
caps.Resources = &ResourceCapabilities{ListChanged: true}
if s.opts.SubscribeHandler != nil {
caps.Resources.Subscribe = true
}
}
if s.opts.CompletionHandler != nil {
caps.Completions = &completionCapabilities{}
caps.Completions = &CompletionCapabilities{}
}
return caps
}