on main help sign in
fix(mcp): always call `ListTools` to discover available tools (#1447)
cd3bd53Lennart Lopin
internal/agent/tools/mcp/tools.go+3−3
@@ -74,9 +74,9 @@ func RefreshTools(ctx context.Context, name string) {
74}
74}
75
75
76func getTools(ctx context.Context, session *mcp.ClientSession) ([]*Tool, error) {
76func getTools(ctx context.Context, session *mcp.ClientSession) ([]*Tool, error) {
77+ // Always call ListTools to get the actual available tools.
77− if session.InitializeResult().Capabilities.Tools == nil {
78+ // The InitializeResult Capabilities.Tools field may be an empty object {},
78− return nil, nil
79+ // which is valid per MCP spec, but we still need to call ListTools to discover tools.
79− }
80 result, err := session.ListTools(ctx, &mcp.ListToolsParams{})
80 result, err := session.ListTools(ctx, &mcp.ListToolsParams{})
81 if err != nil {
81 if err != nil {
82 return nil, err
82 return nil, err