Skip to content

Commit 56d0326

Browse files
committed
Fixes to load 'codex mcp-server' into wmcp
1 parent e2f2f79 commit 56d0326

2 files changed

Lines changed: 23 additions & 6 deletions

File tree

src/wmcp/lib/servers.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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",

src/wmcp/lib/types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ type MCPServer struct {
219219
SessionID string
220220
SSEURL string
221221
SSEConnected bool
222+
HasCapabilities bool
223+
SupportsPrompts bool
224+
SupportsResources bool
222225
Mutex sync.RWMutex
223226
stderrDone chan struct{}
224227
stderrActive bool

0 commit comments

Comments
 (0)