@@ -105,14 +105,16 @@ func (s *MCPService) StartServerWithEnvAndTools(name, command string, env map[st
105105 log .Printf ("Warning: failed to load tools for server %s: %v" , name , err )
106106 }
107107
108- if ! s .NoPrompts {
108+ if ! s .NoPrompts && ( ! server . HasCapabilities || server . SupportsPrompts ) {
109109 if err := s .loadPrompts (server ); err != nil {
110110 log .Printf ("Warning: failed to load prompts for server %s: %v" , name , err )
111111 }
112112 }
113113
114- if err := s .loadResources (server ); err != nil {
115- log .Printf ("Warning: failed to load resources for server %s: %v" , name , err )
114+ if ! server .HasCapabilities || server .SupportsResources {
115+ if err := s .loadResources (server ); err != nil {
116+ log .Printf ("Warning: failed to load resources for server %s: %v" , name , err )
117+ }
116118 }
117119
118120 if isSSE {
@@ -187,14 +189,16 @@ func (s *MCPService) StartServerWithEnvAndTools(name, command string, env map[st
187189 log .Printf ("Warning: failed to load tools for server %s: %v" , name , err )
188190 }
189191
190- if ! s .NoPrompts {
192+ if ! s .NoPrompts && ( ! server . HasCapabilities || server . SupportsPrompts ) {
191193 if err := s .loadPrompts (server ); err != nil {
192194 log .Printf ("Warning: failed to load prompts for server %s: %v" , name , err )
193195 }
194196 }
195197
196- if err := s .loadResources (server ); err != nil {
197- log .Printf ("Warning: failed to load resources for server %s: %v" , name , err )
198+ if ! server .HasCapabilities || server .SupportsResources {
199+ if err := s .loadResources (server ); err != nil {
200+ log .Printf ("Warning: failed to load resources for server %s: %v" , name , err )
201+ }
198202 }
199203
200204 log .Printf ("Started MCP server: %s" , name )
@@ -230,6 +234,16 @@ func (s *MCPService) InitializeServer(server *MCPServer) error {
230234 return fmt .Errorf ("initialization failed: %v" , response .Error )
231235 }
232236
237+ if resultMap , ok := response .Result .(map [string ]interface {}); ok {
238+ if caps , ok := resultMap ["capabilities" ].(map [string ]interface {}); ok {
239+ server .Mutex .Lock ()
240+ server .HasCapabilities = true
241+ _ , server .SupportsPrompts = caps ["prompts" ]
242+ _ , server .SupportsResources = caps ["resources" ]
243+ server .Mutex .Unlock ()
244+ }
245+ }
246+
233247 initNotification := JSONRPCRequest {
234248 JSONRPC : "2.0" ,
235249 Method : "notifications/initialized" ,
0 commit comments