diff --git a/docs/en/resources/tools/mongodb/mongodb-find-one.md b/docs/en/resources/tools/mongodb/mongodb-find-one.md index 67e0cca1ce..395262d91a 100644 --- a/docs/en/resources/tools/mongodb/mongodb-find-one.md +++ b/docs/en/resources/tools/mongodb/mongodb-find-one.md @@ -64,5 +64,3 @@ tools: | filterParams | list | false | A list of parameter objects that define the variables used in the `filterPayload`. | | projectPayload | string | false | An optional MongoDB projection document to specify which fields to include (1) or exclude (0) in the result. | | projectParams | list | false | A list of parameter objects for the `projectPayload`. | -| sortPayload | string | false | An optional MongoDB sort document. Useful for selecting which document to return if the filter matches multiple (e.g., get the most recent). | -| sortParams | list | false | A list of parameter objects for the `sortPayload`. | diff --git a/internal/tools/mongodb/mongodbfindone/mongodbfindone.go b/internal/tools/mongodb/mongodbfindone/mongodbfindone.go index 35260a4a14..3d49e65377 100644 --- a/internal/tools/mongodb/mongodbfindone/mongodbfindone.go +++ b/internal/tools/mongodb/mongodbfindone/mongodbfindone.go @@ -58,8 +58,6 @@ type Config struct { FilterParams parameters.Parameters `yaml:"filterParams"` ProjectPayload string `yaml:"projectPayload"` ProjectParams parameters.Parameters `yaml:"projectParams"` - SortPayload string `yaml:"sortPayload"` - SortParams parameters.Parameters `yaml:"sortParams"` } // validate interface @@ -83,7 +81,7 @@ func (cfg Config) Initialize(srcs map[string]sources.Source) (tools.Tool, error) } // Create a slice for all parameters - allParameters := slices.Concat(cfg.FilterParams, cfg.ProjectParams, cfg.SortParams) + allParameters := slices.Concat(cfg.FilterParams, cfg.ProjectParams) // Verify no duplicate parameter names err := parameters.CheckDuplicateParameters(allParameters) @@ -123,34 +121,6 @@ type Tool struct { mcpManifest tools.McpManifest } -func getOptions(sortParameters parameters.Parameters, projectPayload string, paramsMap map[string]any) (*options.FindOneOptions, error) { - opts := options.FindOne() - - sort := bson.M{} - for _, p := range sortParameters { - sort[p.GetName()] = paramsMap[p.GetName()] - } - opts = opts.SetSort(sort) - - if len(projectPayload) == 0 { - return opts, nil - } - - result, err := parameters.PopulateTemplateWithJSON("MongoDBFindOneProjectString", projectPayload, paramsMap) - if err != nil { - return nil, fmt.Errorf("error populating project payload: %s", err) - } - - var projection any - err = bson.UnmarshalExtJSON([]byte(result), false, &projection) - if err != nil { - return nil, fmt.Errorf("error unmarshalling projection: %s", err) - } - opts = opts.SetProjection(projection) - - return opts, nil -} - func (t Tool) Invoke(ctx context.Context, resourceMgr tools.SourceProvider, params parameters.ParamValues, accessToken tools.AccessToken) (any, error) { paramsMap := params.AsMap() @@ -160,9 +130,18 @@ func (t Tool) Invoke(ctx context.Context, resourceMgr tools.SourceProvider, para return nil, fmt.Errorf("error populating filter: %s", err) } - opts, err := getOptions(t.SortParams, t.ProjectPayload, paramsMap) - if err != nil { - return nil, fmt.Errorf("error populating options: %s", err) + opts := options.FindOne() + if len(t.ProjectPayload) > 0 { + result, err := parameters.PopulateTemplateWithJSON("MongoDBFindOneProjectString", t.ProjectPayload, paramsMap) + if err != nil { + return nil, fmt.Errorf("error populating project payload: %s", err) + } + var projection any + err = bson.UnmarshalExtJSON([]byte(result), false, &projection) + if err != nil { + return nil, fmt.Errorf("error unmarshalling projection: %s", err) + } + opts = opts.SetProjection(projection) } var filter = bson.D{} diff --git a/internal/tools/mongodb/mongodbfindone/mongodbfindone_test.go b/internal/tools/mongodb/mongodbfindone/mongodbfindone_test.go index 2eccffd835..a8d5b9bfc0 100644 --- a/internal/tools/mongodb/mongodbfindone/mongodbfindone_test.go +++ b/internal/tools/mongodb/mongodbfindone/mongodbfindone_test.go @@ -56,9 +56,6 @@ func TestParseFromYamlMongoQuery(t *testing.T) { projectPayload: | { name: 1, age: 1 } projectParams: [] - sortPayload: | - { timestamp: -1 } - sortParams: [] `, want: server.ToolConfigs{ "example_tool": mongodbfindone.Config{ @@ -81,8 +78,6 @@ func TestParseFromYamlMongoQuery(t *testing.T) { }, ProjectPayload: "{ name: 1, age: 1 }\n", ProjectParams: parameters.Parameters{}, - SortPayload: "{ timestamp: -1 }\n", - SortParams: parameters.Parameters{}, }, }, },