mongodb-mcp-server 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.github/pull_request_template.md +5 -0
  2. package/.github/workflows/code_health.yaml +3 -3
  3. package/.github/workflows/docker.yaml +1 -1
  4. package/.smithery/smithery.yaml +10 -0
  5. package/README.md +15 -1
  6. package/dist/config.js +1 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/errors.js +1 -0
  9. package/dist/errors.js.map +1 -1
  10. package/dist/helpers/indexCheck.js +63 -0
  11. package/dist/helpers/indexCheck.js.map +1 -0
  12. package/dist/logger.js +0 -1
  13. package/dist/logger.js.map +1 -1
  14. package/dist/server.js +1 -1
  15. package/dist/server.js.map +1 -1
  16. package/dist/telemetry/telemetry.js +78 -115
  17. package/dist/telemetry/telemetry.js.map +1 -1
  18. package/dist/tools/mongodb/delete/deleteMany.js +18 -0
  19. package/dist/tools/mongodb/delete/deleteMany.js.map +1 -1
  20. package/dist/tools/mongodb/metadata/explain.js +1 -1
  21. package/dist/tools/mongodb/metadata/explain.js.map +1 -1
  22. package/dist/tools/mongodb/mongodbTool.js +10 -0
  23. package/dist/tools/mongodb/mongodbTool.js.map +1 -1
  24. package/dist/tools/mongodb/read/aggregate.js +9 -0
  25. package/dist/tools/mongodb/read/aggregate.js.map +1 -1
  26. package/dist/tools/mongodb/read/count.js +13 -0
  27. package/dist/tools/mongodb/read/count.js.map +1 -1
  28. package/dist/tools/mongodb/read/find.js +7 -0
  29. package/dist/tools/mongodb/read/find.js.map +1 -1
  30. package/dist/tools/mongodb/update/updateMany.js +20 -0
  31. package/dist/tools/mongodb/update/updateMany.js.map +1 -1
  32. package/dist/tools/tool.js +4 -4
  33. package/dist/tools/tool.js.map +1 -1
  34. package/package.json +2 -2
  35. package/src/config.ts +2 -0
  36. package/src/errors.ts +1 -0
  37. package/src/helpers/indexCheck.ts +83 -0
  38. package/src/logger.ts +0 -1
  39. package/src/server.ts +1 -1
  40. package/src/telemetry/telemetry.ts +98 -150
  41. package/src/telemetry/types.ts +0 -1
  42. package/src/tools/mongodb/delete/deleteMany.ts +20 -0
  43. package/src/tools/mongodb/metadata/explain.ts +1 -1
  44. package/src/tools/mongodb/mongodbTool.ts +10 -0
  45. package/src/tools/mongodb/read/aggregate.ts +11 -0
  46. package/src/tools/mongodb/read/count.ts +15 -0
  47. package/src/tools/mongodb/read/find.ts +9 -0
  48. package/src/tools/mongodb/update/updateMany.ts +22 -0
  49. package/src/tools/tool.ts +5 -5
  50. package/tests/integration/indexCheck.test.ts +463 -0
  51. package/tests/integration/server.test.ts +5 -4
  52. package/tests/integration/telemetry.test.ts +28 -0
  53. package/tests/integration/tools/mongodb/mongodbHelpers.ts +1 -0
  54. package/tests/unit/indexCheck.test.ts +149 -0
  55. package/tests/unit/telemetry.test.ts +58 -106
@@ -0,0 +1,5 @@
1
+ ## Proposed changes
2
+
3
+ ## Checklist
4
+
5
+ - [ ] I have signed the [MongoDB CLA](https://www.mongodb.com/legal/contributor-agreement)
@@ -11,7 +11,7 @@ permissions: {}
11
11
  jobs:
12
12
  run-tests:
13
13
  name: Run MongoDB tests
14
- if: github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository
14
+ if: github.event_name == 'push' || (github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository)
15
15
  strategy:
16
16
  matrix:
17
17
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  run-atlas-tests:
40
40
  name: Run Atlas tests
41
- if: github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository
41
+ if: github.event_name == 'push' || (github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository)
42
42
  runs-on: ubuntu-latest
43
43
  steps:
44
44
  - uses: GitHubSecurityLab/actions-permissions/monitor@v1
@@ -64,7 +64,7 @@ jobs:
64
64
 
65
65
  coverage:
66
66
  name: Report Coverage
67
- if: always() && github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository
67
+ if: always() && (github.event_name == 'push' || (github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository))
68
68
  runs-on: ubuntu-latest
69
69
  needs: [run-tests, run-atlas-tests]
70
70
  steps:
@@ -16,7 +16,7 @@ jobs:
16
16
  - name: Check out code
17
17
  uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
18
18
  - name: Set up Docker Buildx
19
- uses: docker/setup-buildx-action@18ce135bb5112fa8ce4ed6c17ab05699d7f3a5e0
19
+ uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435
20
20
  - name: Login to Docker Hub
21
21
  uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
22
22
  with:
@@ -24,11 +24,17 @@ startCommand:
24
24
  title: Read-only
25
25
  description: When set to true, only allows read and metadata operation types, disabling create/update/delete operations.
26
26
  default: false
27
+ indexCheck:
28
+ type: boolean
29
+ title: Index Check
30
+ description: When set to true, enforces that query operations must use an index, rejecting queries that would perform a collection scan.
31
+ default: false
27
32
  exampleConfig:
28
33
  atlasClientId: YOUR_ATLAS_CLIENT_ID
29
34
  atlasClientSecret: YOUR_ATLAS_CLIENT_SECRET
30
35
  connectionString: mongodb+srv://USERNAME:PASSWORD@YOUR_CLUSTER.mongodb.net
31
36
  readOnly: true
37
+ indexCheck: false
32
38
 
33
39
  commandFunction:
34
40
  # A function that produces the CLI command to start the MCP on stdio.
@@ -54,6 +60,10 @@ startCommand:
54
60
  args.push('--connectionString');
55
61
  args.push(config.connectionString);
56
62
  }
63
+
64
+ if (config.indexCheck) {
65
+ args.push('--indexCheck');
66
+ }
57
67
  }
58
68
 
59
69
  return {
package/README.md CHANGED
@@ -267,6 +267,7 @@ The MongoDB MCP Server can be configured using multiple methods, with the follow
267
267
  | `logPath` | Folder to store logs. |
268
268
  | `disabledTools` | An array of tool names, operation types, and/or categories of tools that will be disabled. |
269
269
  | `readOnly` | When set to true, only allows read and metadata operation types, disabling create/update/delete operations. |
270
+ | `indexCheck` | When set to true, enforces that query operations must use an index, rejecting queries that perform a collection scan. |
270
271
  | `telemetry` | When set to disabled, disables telemetry collection. |
271
272
 
272
273
  #### Log Path
@@ -312,6 +313,19 @@ You can enable read-only mode using:
312
313
 
313
314
  When read-only mode is active, you'll see a message in the server logs indicating which tools were prevented from registering due to this restriction.
314
315
 
316
+ #### Index Check Mode
317
+
318
+ The `indexCheck` configuration option allows you to enforce that query operations must use an index. When enabled, queries that perform a collection scan will be rejected to ensure better performance.
319
+
320
+ This is useful for scenarios where you want to ensure that database queries are optimized.
321
+
322
+ You can enable index check mode using:
323
+
324
+ - **Environment variable**: `export MDB_MCP_INDEX_CHECK=true`
325
+ - **Command-line argument**: `--indexCheck`
326
+
327
+ When index check mode is active, you'll see an error message if a query is rejected due to not using an index.
328
+
315
329
  #### Telemetry
316
330
 
317
331
  The `telemetry` configuration option allows you to disable telemetry collection. When enabled, the MCP server will collect usage data and send it to MongoDB.
@@ -430,7 +444,7 @@ export MDB_MCP_LOG_PATH="/path/to/logs"
430
444
  Pass configuration options as command-line arguments when starting the server:
431
445
 
432
446
  ```shell
433
- npx -y mongodb-mcp-server --apiClientId="your-atlas-service-accounts-client-id" --apiClientSecret="your-atlas-service-accounts-client-secret" --connectionString="mongodb+srv://username:password@cluster.mongodb.net/myDatabase" --logPath=/path/to/logs
447
+ npx -y mongodb-mcp-server --apiClientId="your-atlas-service-accounts-client-id" --apiClientSecret="your-atlas-service-accounts-client-secret" --connectionString="mongodb+srv://username:password@cluster.mongodb.net/myDatabase" --logPath=/path/to/logs --readOnly --indexCheck
434
448
  ```
435
449
 
436
450
  #### MCP configuration file examples
package/dist/config.js CHANGED
@@ -13,6 +13,7 @@ const defaults = {
13
13
  disabledTools: [],
14
14
  telemetry: "enabled",
15
15
  readOnly: false,
16
+ indexCheck: false,
16
17
  };
17
18
  export const config = {
18
19
  ...defaults,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/errors.js CHANGED
@@ -2,6 +2,7 @@ export var ErrorCodes;
2
2
  (function (ErrorCodes) {
3
3
  ErrorCodes[ErrorCodes["NotConnectedToMongoDB"] = 1000000] = "NotConnectedToMongoDB";
4
4
  ErrorCodes[ErrorCodes["MisconfiguredConnectionString"] = 1000001] = "MisconfiguredConnectionString";
5
+ ErrorCodes[ErrorCodes["ForbiddenCollscan"] = 1000002] = "ForbiddenCollscan";
5
6
  })(ErrorCodes || (ErrorCodes = {}));
6
7
  export class MongoDBError extends Error {
7
8
  constructor(code, message) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,mFAAiC,CAAA;IACjC,mGAAyC,CAAA;AAC7C,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnC,YACW,IAAgB,EACvB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAY;IAI3B,CAAC;CACJ"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,mFAAiC,CAAA;IACjC,mGAAyC,CAAA;IACzC,2EAA6B,CAAA;AACjC,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnC,YACW,IAAgB,EACvB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAY;IAI3B,CAAC;CACJ"}
@@ -0,0 +1,63 @@
1
+ import { ErrorCodes, MongoDBError } from "../errors.js";
2
+ /**
3
+ * Check if the query plan uses an index
4
+ * @param explainResult The result of the explain query
5
+ * @returns true if an index is used, false if it's a full collection scan
6
+ */
7
+ export function usesIndex(explainResult) {
8
+ const queryPlanner = explainResult?.queryPlanner;
9
+ const winningPlan = queryPlanner?.winningPlan;
10
+ const stage = winningPlan?.stage;
11
+ const inputStage = winningPlan?.inputStage;
12
+ // Check for index scan stages (including MongoDB 8.0+ stages)
13
+ const indexScanStages = [
14
+ "IXSCAN",
15
+ "COUNT_SCAN",
16
+ "EXPRESS_IXSCAN",
17
+ "EXPRESS_CLUSTERED_IXSCAN",
18
+ "EXPRESS_UPDATE",
19
+ "EXPRESS_DELETE",
20
+ "IDHACK",
21
+ ];
22
+ if (stage && indexScanStages.includes(stage)) {
23
+ return true;
24
+ }
25
+ if (inputStage && inputStage.stage && indexScanStages.includes(inputStage.stage)) {
26
+ return true;
27
+ }
28
+ // Recursively check deeper stages
29
+ if (inputStage && inputStage.inputStage) {
30
+ return usesIndex({ queryPlanner: { winningPlan: inputStage } });
31
+ }
32
+ if (stage === "COLLSCAN") {
33
+ return false;
34
+ }
35
+ // Default to false (conservative approach)
36
+ return false;
37
+ }
38
+ /**
39
+ * Generate an error message for index check failure
40
+ */
41
+ export function getIndexCheckErrorMessage(database, collection, operation) {
42
+ return `Index check failed: The ${operation} operation on "${database}.${collection}" performs a collection scan (COLLSCAN) instead of using an index. Consider adding an index for better performance. Use 'explain' tool for query plan analysis or 'collection-indexes' to view existing indexes. To disable this check, set MDB_MCP_INDEX_CHECK to false.`;
43
+ }
44
+ /**
45
+ * Generic function to perform index usage check
46
+ */
47
+ export async function checkIndexUsage(provider, database, collection, operation, explainCallback) {
48
+ try {
49
+ const explainResult = await explainCallback();
50
+ if (!usesIndex(explainResult)) {
51
+ throw new MongoDBError(ErrorCodes.ForbiddenCollscan, getIndexCheckErrorMessage(database, collection, operation));
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (error instanceof MongoDBError && error.code === ErrorCodes.ForbiddenCollscan) {
56
+ throw error;
57
+ }
58
+ // If explain itself fails, log but do not prevent query execution
59
+ // This avoids blocking normal queries in special cases (e.g., permission issues)
60
+ console.warn(`Index check failed to execute explain for ${operation} on ${database}.${collection}:`, error);
61
+ }
62
+ }
63
+ //# sourceMappingURL=indexCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexCheck.js","sourceRoot":"","sources":["../../src/helpers/indexCheck.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,aAAuB;IAC7C,MAAM,YAAY,GAAG,aAAa,EAAE,YAAoC,CAAC;IACzE,MAAM,WAAW,GAAG,YAAY,EAAE,WAAmC,CAAC;IACtE,MAAM,KAAK,GAAG,WAAW,EAAE,KAA2B,CAAC;IACvD,MAAM,UAAU,GAAG,WAAW,EAAE,UAAkC,CAAC;IAEnE,8DAA8D;IAC9D,MAAM,eAAe,GAAG;QACpB,QAAQ;QACR,YAAY;QACZ,gBAAgB;QAChB,0BAA0B;QAC1B,gBAAgB;QAChB,gBAAgB;QAChB,QAAQ;KACX,CAAC;IAEF,IAAI,KAAK,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAe,CAAC,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAkC;IAClC,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,2CAA2C;IAC3C,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,UAAkB,EAAE,SAAiB;IAC7F,OAAO,2BAA2B,SAAS,kBAAkB,QAAQ,IAAI,UAAU,2QAA2Q,CAAC;AACnW,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,QAAmC,EACnC,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,eAAwC;IAExC,IAAI,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,YAAY,CAClB,UAAU,CAAC,iBAAiB,EAC5B,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAC7D,CAAC;QACN,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;YAC/E,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,kEAAkE;QAClE,iFAAiF;QACjF,OAAO,CAAC,IAAI,CAAC,6CAA6C,SAAS,OAAO,QAAQ,IAAI,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;IAChH,CAAC;AACL,CAAC"}
package/dist/logger.js CHANGED
@@ -18,7 +18,6 @@ export const LogId = {
18
18
  telemetryMetadataError: mongoLogId(1002005),
19
19
  telemetryDeviceIdFailure: mongoLogId(1002006),
20
20
  telemetryDeviceIdTimeout: mongoLogId(1002007),
21
- telemetryContainerEnvFailure: mongoLogId(1002008),
22
21
  toolExecute: mongoLogId(1003001),
23
22
  toolExecuteFailure: mongoLogId(1003002),
24
23
  toolDisabled: mongoLogId(1003003),
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAc,eAAe,EAAkB,MAAM,oBAAoB,CAAC;AAC7F,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAMpC,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,kBAAkB,EAAE,UAAU,CAAC,OAAS,CAAC;IACzC,iBAAiB,EAAE,UAAU,CAAC,OAAS,CAAC;IACxC,oBAAoB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC3C,YAAY,EAAE,UAAU,CAAC,OAAS,CAAC;IACnC,kBAAkB,EAAE,UAAU,CAAC,OAAS,CAAC;IAEzC,qBAAqB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC5C,8BAA8B,EAAE,UAAU,CAAC,OAAS,CAAC;IACrD,mBAAmB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC1C,mBAAmB,EAAE,UAAU,CAAC,OAAS,CAAC;IAE1C,iBAAiB,EAAE,UAAU,CAAC,OAAS,CAAC;IACxC,oBAAoB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC3C,kBAAkB,EAAE,UAAU,CAAC,OAAS,CAAC;IACzC,oBAAoB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC3C,sBAAsB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC7C,wBAAwB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC/C,wBAAwB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC/C,4BAA4B,EAAE,UAAU,CAAC,OAAS,CAAC;IAEnD,WAAW,EAAE,UAAU,CAAC,OAAS,CAAC;IAClC,kBAAkB,EAAE,UAAU,CAAC,OAAS,CAAC;IACzC,YAAY,EAAE,UAAU,CAAC,OAAS,CAAC;IAEnC,qBAAqB,EAAE,UAAU,CAAC,OAAS,CAAC;IAC5C,wBAAwB,EAAE,UAAU,CAAC,OAAS,CAAC;IAE/C,iBAAiB,EAAE,UAAU,CAAC,OAAS,CAAC;CAClC,CAAC;AAEX,MAAe,UAAU;IAGrB,IAAI,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QACjD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QAClD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QAClD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QACnD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QACpD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QACrD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QAClD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;QACtD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,MAAM,aAAc,SAAQ,UAAU;IAClC,GAAG,CAAC,KAAe,EAAE,EAAc,EAAE,OAAe,EAAE,OAAe;QACjE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,OAAO,MAAM,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IACrF,CAAC;CACJ;AAED,MAAM,UAAW,SAAQ,UAAU;IAC/B,YAA4B,SAAyB;QACjD,KAAK,EAAE,CAAC;QADgB,cAAS,GAAT,SAAS,CAAgB;IAErD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAe;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;YAChC,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,EAAE;YACjB,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAEnC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;QAElD,OAAO,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,KAAe,EAAE,EAAc,EAAE,OAAe,EAAE,OAAe;QACjE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAEO,oBAAoB,CAAC,KAAe;QACxC,QAAQ,KAAK,EAAE,CAAC;YACZ,KAAK,MAAM;gBACP,OAAO,MAAM,CAAC;YAClB,KAAK,SAAS;gBACV,OAAO,MAAM,CAAC;YAClB,KAAK,OAAO;gBACR,OAAO,OAAO,CAAC;YACnB,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACR,OAAO,OAAO,CAAC;YACnB,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC;YACb,KAAK,WAAW;gBACZ,OAAO,OAAO,CAAC;YACnB;gBACI,OAAO,MAAM,CAAC;QACtB,CAAC;IACL,CAAC;CACJ;AAED,MAAM,SAAU,SAAQ,UAAU;IAC9B,YAAoB,MAAiB;QACjC,KAAK,EAAE,CAAC;QADQ,WAAM,GAAN,MAAM,CAAW;IAErC,CAAC;IAED,GAAG,CAAC,KAAe,EAAE,CAAa,EAAE,OAAe,EAAE,OAAe;QAChE,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;YACvC,KAAK;YACL,IAAI,EAAE,IAAI,OAAO,MAAM,OAAO,EAAE;SACnC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,eAAgB,SAAQ,UAAU;IAGpC,YAAY,GAAG,OAAqB;QAChC,KAAK,EAAE,CAAC;QAER,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,2BAA2B;YAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;YACrC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,GAAG,OAAqB;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,KAAe,EAAE,EAAc,EAAE,OAAe,EAAE,OAAe;QACjE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;CACJ;AAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,eAAe,MAAM,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAe;IACrE,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -82,7 +82,7 @@ export class Server {
82
82
  event.properties.reason = error.message;
83
83
  }
84
84
  }
85
- this.telemetry.emitEvents([event]);
85
+ this.telemetry.emitEvents([event]).catch(() => { });
86
86
  }
87
87
  registerTools() {
88
88
  for (const tool of [...AtlasTools, ...MongoDbTools]) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -3,106 +3,80 @@ import { MACHINE_METADATA } from "./constants.js";
3
3
  import { EventCache } from "./eventCache.js";
4
4
  import nodeMachineId from "node-machine-id";
5
5
  import { getDeviceId } from "@mongodb-js/device-id";
6
- import fs from "fs/promises";
7
- async function fileExists(filePath) {
8
- try {
9
- await fs.access(filePath, fs.constants.F_OK);
10
- return true; // File exists
11
- }
12
- catch (e) {
13
- if (e instanceof Error &&
14
- e.code === "ENOENT") {
15
- return false; // File does not exist
16
- }
17
- throw e; // Re-throw unexpected errors
18
- }
19
- }
20
- async function isContainerized() {
21
- if (process.env.container) {
22
- return true;
23
- }
24
- const exists = await Promise.all(["/.dockerenv", "/run/.containerenv", "/var/run/.containerenv"].map(fileExists));
25
- return exists.includes(true);
26
- }
6
+ export const DEVICE_ID_TIMEOUT = 3000;
27
7
  export class Telemetry {
28
- constructor(session, userConfig, { eventCache, getRawMachineId, getContainerEnv, }) {
8
+ constructor(session, userConfig, commonProperties, { eventCache, getRawMachineId }) {
29
9
  this.session = session;
30
10
  this.userConfig = userConfig;
11
+ this.commonProperties = commonProperties;
12
+ this.isBufferingEvents = true;
31
13
  this.deviceIdAbortController = new AbortController();
32
- this.flushing = false;
33
14
  this.eventCache = eventCache;
34
15
  this.getRawMachineId = getRawMachineId;
35
- this.getContainerEnv = getContainerEnv;
36
16
  }
37
- static create(session, userConfig, { eventCache = EventCache.getInstance(), getRawMachineId = () => nodeMachineId.machineId(true), getContainerEnv = isContainerized, } = {}) {
38
- const instance = new Telemetry(session, userConfig, {
39
- eventCache,
40
- getRawMachineId,
41
- getContainerEnv,
42
- });
17
+ static create(session, userConfig, { commonProperties = { ...MACHINE_METADATA }, eventCache = EventCache.getInstance(), getRawMachineId = () => nodeMachineId.machineId(true), } = {}) {
18
+ const instance = new Telemetry(session, userConfig, commonProperties, { eventCache, getRawMachineId });
19
+ void instance.start();
43
20
  return instance;
44
21
  }
22
+ async start() {
23
+ if (!this.isTelemetryEnabled()) {
24
+ return;
25
+ }
26
+ this.deviceIdPromise = getDeviceId({
27
+ getMachineId: () => this.getRawMachineId(),
28
+ onError: (reason, error) => {
29
+ switch (reason) {
30
+ case "resolutionError":
31
+ logger.debug(LogId.telemetryDeviceIdFailure, "telemetry", String(error));
32
+ break;
33
+ case "timeout":
34
+ logger.debug(LogId.telemetryDeviceIdTimeout, "telemetry", "Device ID retrieval timed out");
35
+ break;
36
+ case "abort":
37
+ // No need to log in the case of aborts
38
+ break;
39
+ }
40
+ },
41
+ abortSignal: this.deviceIdAbortController.signal,
42
+ });
43
+ this.commonProperties.device_id = await this.deviceIdPromise;
44
+ this.isBufferingEvents = false;
45
+ }
45
46
  async close() {
46
47
  this.deviceIdAbortController.abort();
47
- await this.flush();
48
+ this.isBufferingEvents = false;
49
+ await this.emitEvents(this.eventCache.getEvents());
48
50
  }
49
51
  /**
50
52
  * Emits events through the telemetry pipeline
51
53
  * @param events - The events to emit
52
54
  */
53
- emitEvents(events) {
54
- void this.flush(events);
55
+ async emitEvents(events) {
56
+ try {
57
+ if (!this.isTelemetryEnabled()) {
58
+ logger.info(LogId.telemetryEmitFailure, "telemetry", `Telemetry is disabled.`);
59
+ return;
60
+ }
61
+ await this.emit(events);
62
+ }
63
+ catch {
64
+ logger.debug(LogId.telemetryEmitFailure, "telemetry", `Error emitting telemetry events.`);
65
+ }
55
66
  }
56
67
  /**
57
68
  * Gets the common properties for events
58
69
  * @returns Object containing common properties for all events
59
70
  */
60
- async getCommonProperties() {
61
- if (!this.cachedCommonProperties) {
62
- let deviceId;
63
- let containerEnv;
64
- try {
65
- await Promise.all([
66
- getDeviceId({
67
- getMachineId: () => this.getRawMachineId(),
68
- onError: (reason, error) => {
69
- switch (reason) {
70
- case "resolutionError":
71
- logger.debug(LogId.telemetryDeviceIdFailure, "telemetry", String(error));
72
- break;
73
- case "timeout":
74
- logger.debug(LogId.telemetryDeviceIdTimeout, "telemetry", "Device ID retrieval timed out");
75
- break;
76
- case "abort":
77
- // No need to log in the case of aborts
78
- break;
79
- }
80
- },
81
- abortSignal: this.deviceIdAbortController.signal,
82
- }).then((id) => {
83
- deviceId = id;
84
- }),
85
- this.getContainerEnv().then((env) => {
86
- containerEnv = env;
87
- }),
88
- ]);
89
- }
90
- catch (error) {
91
- const err = error instanceof Error ? error : new Error(String(error));
92
- logger.debug(LogId.telemetryDeviceIdFailure, "telemetry", err.message);
93
- }
94
- this.cachedCommonProperties = {
95
- ...MACHINE_METADATA,
96
- mcp_client_version: this.session.agentRunner?.version,
97
- mcp_client_name: this.session.agentRunner?.name,
98
- session_id: this.session.sessionId,
99
- config_atlas_auth: this.session.apiClient.hasCredentials() ? "true" : "false",
100
- config_connection_string: this.userConfig.connectionString ? "true" : "false",
101
- is_container_env: containerEnv ? "true" : "false",
102
- device_id: deviceId,
103
- };
104
- }
105
- return this.cachedCommonProperties;
71
+ getCommonProperties() {
72
+ return {
73
+ ...this.commonProperties,
74
+ mcp_client_version: this.session.agentRunner?.version,
75
+ mcp_client_name: this.session.agentRunner?.name,
76
+ session_id: this.session.sessionId,
77
+ config_atlas_auth: this.session.apiClient.hasCredentials() ? "true" : "false",
78
+ config_connection_string: this.userConfig.connectionString ? "true" : "false",
79
+ };
106
80
  }
107
81
  /**
108
82
  * Checks if telemetry is currently enabled
@@ -120,54 +94,43 @@ export class Telemetry {
120
94
  return !doNotTrack;
121
95
  }
122
96
  /**
123
- * Attempts to flush events through authenticated and unauthenticated clients
97
+ * Attempts to emit events through authenticated and unauthenticated clients
124
98
  * Falls back to caching if both attempts fail
125
99
  */
126
- async flush(events) {
127
- if (!this.isTelemetryEnabled()) {
128
- logger.info(LogId.telemetryEmitFailure, "telemetry", `Telemetry is disabled.`);
100
+ async emit(events) {
101
+ if (this.isBufferingEvents) {
102
+ this.eventCache.appendEvents(events);
129
103
  return;
130
104
  }
131
- if (this.flushing) {
132
- this.eventCache.appendEvents(events ?? []);
133
- process.nextTick(async () => {
134
- // try again if in the middle of a flush
135
- await this.flush();
136
- });
137
- return;
138
- }
139
- this.flushing = true;
140
- try {
141
- const cachedEvents = this.eventCache.getEvents();
142
- const allEvents = [...cachedEvents, ...(events ?? [])];
143
- if (allEvents.length <= 0) {
144
- this.flushing = false;
145
- return;
146
- }
147
- logger.debug(LogId.telemetryEmitStart, "telemetry", `Attempting to send ${allEvents.length} events (${cachedEvents.length} cached)`);
148
- await this.sendEvents(this.session.apiClient, allEvents);
105
+ const cachedEvents = this.eventCache.getEvents();
106
+ const allEvents = [...cachedEvents, ...events];
107
+ logger.debug(LogId.telemetryEmitStart, "telemetry", `Attempting to send ${allEvents.length} events (${cachedEvents.length} cached)`);
108
+ const result = await this.sendEvents(this.session.apiClient, allEvents);
109
+ if (result.success) {
149
110
  this.eventCache.clearEvents();
150
111
  logger.debug(LogId.telemetryEmitSuccess, "telemetry", `Sent ${allEvents.length} events successfully: ${JSON.stringify(allEvents, null, 2)}`);
112
+ return;
151
113
  }
152
- catch (error) {
153
- logger.debug(LogId.telemetryEmitFailure, "telemetry", `Error sending event to client: ${error instanceof Error ? error.message : String(error)}`);
154
- this.eventCache.appendEvents(events ?? []);
155
- process.nextTick(async () => {
156
- // try again
157
- await this.flush();
158
- });
159
- }
160
- this.flushing = false;
114
+ logger.debug(LogId.telemetryEmitFailure, "telemetry", `Error sending event to client: ${result.error instanceof Error ? result.error.message : String(result.error)}`);
115
+ this.eventCache.appendEvents(events);
161
116
  }
162
117
  /**
163
118
  * Attempts to send events through the provided API client
164
119
  */
165
120
  async sendEvents(client, events) {
166
- const commonProperties = await this.getCommonProperties();
167
- await client.sendEvents(events.map((event) => ({
168
- ...event,
169
- properties: { ...commonProperties, ...event.properties },
170
- })));
121
+ try {
122
+ await client.sendEvents(events.map((event) => ({
123
+ ...event,
124
+ properties: { ...this.getCommonProperties(), ...event.properties },
125
+ })));
126
+ return { success: true };
127
+ }
128
+ catch (error) {
129
+ return {
130
+ success: false,
131
+ error: error instanceof Error ? error : new Error(String(error)),
132
+ };
133
+ }
171
134
  }
172
135
  }
173
136
  //# sourceMappingURL=telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { DbOperationArgs, MongoDBToolBase } from "../mongodbTool.js";
3
+ import { checkIndexUsage } from "../../../helpers/indexCheck.js";
3
4
  export class DeleteManyTool extends MongoDBToolBase {
4
5
  constructor() {
5
6
  super(...arguments);
@@ -16,6 +17,23 @@ export class DeleteManyTool extends MongoDBToolBase {
16
17
  }
17
18
  async execute({ database, collection, filter, }) {
18
19
  const provider = await this.ensureConnected();
20
+ // Check if delete operation uses an index if enabled
21
+ if (this.config.indexCheck) {
22
+ await checkIndexUsage(provider, database, collection, "deleteMany", async () => {
23
+ return provider.runCommandWithCheck(database, {
24
+ explain: {
25
+ delete: collection,
26
+ deletes: [
27
+ {
28
+ q: filter || {},
29
+ limit: 0, // 0 means delete all matching documents
30
+ },
31
+ ],
32
+ },
33
+ verbosity: "queryPlanner",
34
+ });
35
+ });
36
+ }
19
37
  const result = await provider.deleteMany(database, collection, filter);
20
38
  return {
21
39
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGrE,MAAM,OAAO,cAAe,SAAQ,eAAe;IAAnD;;QACc,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,uEAAuE,CAAC;QACtF,cAAS,GAAG;YAClB,GAAG,eAAe;YAClB,MAAM,EAAE,CAAC;iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACL,6HAA6H,CAChI;SACR,CAAC;QACQ,kBAAa,GAAkB,QAAQ,CAAC;IAmBtD,CAAC;IAjBa,KAAK,CAAC,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,GACwB;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEvE,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,aAAa,MAAM,CAAC,YAAY,mCAAmC,UAAU,GAAG;oBACtF,IAAI,EAAE,MAAM;iBACf;aACJ;SACJ,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,OAAO,cAAe,SAAQ,eAAe;IAAnD;;QACc,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,uEAAuE,CAAC;QACtF,cAAS,GAAG;YAClB,GAAG,eAAe;YAClB,MAAM,EAAE,CAAC;iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACL,6HAA6H,CAChI;SACR,CAAC;QACQ,kBAAa,GAAkB,QAAQ,CAAC;IAsCtD,CAAC;IApCa,KAAK,CAAC,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,GACwB;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE9C,qDAAqD;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;gBAC3E,OAAO,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE;oBAC1C,OAAO,EAAE;wBACL,MAAM,EAAE,UAAU;wBAClB,OAAO,EAAE;4BACL;gCACI,CAAC,EAAE,MAAM,IAAI,EAAE;gCACf,KAAK,EAAE,CAAC,EAAE,wCAAwC;6BACrD;yBACJ;qBACJ;oBACD,SAAS,EAAE,cAAc;iBAC5B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEvE,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,aAAa,MAAM,CAAC,YAAY,mCAAmC,UAAU,GAAG;oBACtF,IAAI,EAAE,MAAM;iBACf;aACJ;SACJ,CAAC;IACN,CAAC;CACJ"}
@@ -56,7 +56,7 @@ export class ExplainTool extends MongoDBToolBase {
56
56
  }
57
57
  case "count": {
58
58
  const { query } = method.arguments;
59
- result = await provider.mongoClient.db(database).command({
59
+ result = await provider.runCommandWithCheck(database, {
60
60
  explain: {
61
61
  count: collection,
62
62
  query,