返回 DeepSeek-Reasonix
mcp_availability.go
根目录 / internal / agent / mcp_availability.go
1 package agent
2
3 import (
4 "errors"
5 "fmt"
6 "strings"
7 )
8
9 func (r *MCPCapabilityRuntime) serverRegistered(server string) bool {
10 if r == nil {
11 return false
12 }
13 r.mu.RLock()
14 _, ok := r.servers[strings.TrimSpace(server)]
15 r.mu.RUnlock()
16 return ok
17 }
18
19 func mcpServerUnregisteredMessage(server string) string {
20 return fmt.Sprintf("MCP server %q is not registered in this session", server)
21 }
22
23 func mcpServerDisabledMessage(server string) string {
24 return fmt.Sprintf("MCP server %q is disabled in this session", server)
25 }
26
27 func mcpServerUnregisteredError(server string) error {
28 return errors.New(mcpServerUnregisteredMessage(server))
29 }
30
31 func mcpServerDisabledError(server string) error {
32 return errors.New(mcpServerDisabledMessage(server))
33 }
34
35 func (t *UseCapabilityTool) serverRegistered(server string) bool {
36 if t.runtime != nil {
37 return t.runtime.serverRegistered(server)
38 }
39 // Standalone proxies have no authoritative runtime inventory to miss from.
40 return true
41 }
42
43 // serverUnavailableReason distinguishes a disabled server from one this
44 // session never registered so the refusal points to the correct remedy.
45 func (t *UseCapabilityTool) serverUnavailableReason(server string) string {
46 if !t.serverRegistered(server) {
47 return mcpServerUnregisteredMessage(server)
48 }
49 return mcpServerDisabledMessage(server)
50 }
51
51 lines GO