@@ -16,6 +16,12 @@ describeWithMongoDB("count tool", (integration) => {
16
16
type : "object" ,
17
17
required : false ,
18
18
} ,
19
+ {
20
+ name : "filter" ,
21
+ description : "Alternative name for query parameter. The query filter to count documents." ,
22
+ type : "object" ,
23
+ required : false ,
24
+ } ,
19
25
...databaseCollectionParameters ,
20
26
] ) ;
21
27
@@ -79,6 +85,43 @@ describeWithMongoDB("count tool", (integration) => {
79
85
expect ( content ) . toEqual ( `Found ${ testCase . expectedCount } documents in the collection "foo"` ) ;
80
86
} ) ;
81
87
}
88
+
89
+ it ( "correctly filters documents when using 'filter' parameter" , async ( ) => {
90
+ await integration . connectMcpClient ( ) ;
91
+
92
+ // Using 'filter' parameter - should work correctly after the fix
93
+ const response = await integration . mcpClient ( ) . callTool ( {
94
+ name : "count" ,
95
+ arguments : {
96
+ database : integration . randomDbName ( ) ,
97
+ collection : "foo" ,
98
+ filter : { age : { $lt : 15 } } ,
99
+ } ,
100
+ } ) ;
101
+
102
+ const content = getResponseContent ( response . content ) ;
103
+ expect ( content ) . toEqual ( 'Found 2 documents in the collection "foo"' ) ;
104
+ } ) ;
105
+
106
+ it ( "prioritizes filter over query when both are provided" , async ( ) => {
107
+ await integration . connectMcpClient ( ) ;
108
+
109
+ // Using both 'filter' and 'query' parameters
110
+ const response = await integration . mcpClient ( ) . callTool ( {
111
+ name : "count" ,
112
+ arguments : {
113
+ database : integration . randomDbName ( ) ,
114
+ collection : "foo" ,
115
+ filter : { age : { $lt : 15 } } ,
116
+ query : { age : { $gt : 10 } } ,
117
+ } ,
118
+ } ) ;
119
+
120
+ const content = getResponseContent ( response . content ) ;
121
+ // Filter takes precedence over query
122
+ // Filter is { age: { $lt: 15 } } which matches 2 documents
123
+ expect ( content ) . toEqual ( 'Found 2 documents in the collection "foo"' ) ;
124
+ } ) ;
82
125
} ) ;
83
126
84
127
validateAutoConnectBehavior ( integration , "count" , ( ) => {
0 commit comments