mcp/server: advertise completions only if installed (#213)

Previously, completions would always be advertised as a capability even
if the CompletionHandler was not installed by the server. This CL fixes
that.
This commit is contained in:
Sam Thanawalla 2025-08-04 10:12:01 -04:00 • committed by GitHub
commit faaf77dc05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -238,9 +238,7 @@ func (s *Server) capabilities() *serverCapabilities {
defer s.mu.Unlock()
caps := &serverCapabilities{
// TODO(samthanawalla): check for completionHandler before advertising capability.
Completions: &completionCapabilities{},
Logging: &loggingCapabilities{},
Logging: &loggingCapabilities{},
}
if s.opts.HasTools || s.tools.len() > 0 {
caps.Tools = &toolCapabilities{ListChanged: true}
@ -254,6 +252,9 @@ func (s *Server) capabilities() *serverCapabilities {
caps.Resources.Subscribe = true
}
}
if s.opts.CompletionHandler != nil {
caps.Completions = &completionCapabilities{}
}
return caps
}