mongodb-mcp-server 1.0.0 → 1.0.2-prerelease.1
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.
- package/README.md +25 -23
- package/dist/cjs/common/config.d.ts +2 -1
- package/dist/cjs/common/config.d.ts.map +1 -1
- package/dist/cjs/common/config.js +5 -5
- package/dist/cjs/common/config.js.map +1 -1
- package/dist/cjs/common/connectionManager.d.ts +1 -10
- package/dist/cjs/common/connectionManager.d.ts.map +1 -1
- package/dist/cjs/common/connectionManager.js +17 -20
- package/dist/cjs/common/connectionManager.js.map +1 -1
- package/dist/cjs/common/logger.d.ts +2 -5
- package/dist/cjs/common/logger.d.ts.map +1 -1
- package/dist/cjs/common/logger.js +3 -10
- package/dist/cjs/common/logger.js.map +1 -1
- package/dist/cjs/common/packageInfo.js +1 -1
- package/dist/cjs/common/packageInfo.js.map +1 -1
- package/dist/cjs/helpers/collectCursorUntilMaxBytes.d.ts +24 -0
- package/dist/cjs/helpers/collectCursorUntilMaxBytes.d.ts.map +1 -0
- package/dist/cjs/helpers/collectCursorUntilMaxBytes.js +75 -0
- package/dist/cjs/helpers/collectCursorUntilMaxBytes.js.map +1 -0
- package/dist/cjs/helpers/constants.d.ts +24 -0
- package/dist/cjs/helpers/constants.d.ts.map +1 -0
- package/dist/cjs/helpers/constants.js +27 -0
- package/dist/cjs/helpers/constants.js.map +1 -0
- package/dist/cjs/helpers/isObjectEmpty.d.ts +6 -0
- package/dist/cjs/helpers/isObjectEmpty.d.ts.map +1 -0
- package/dist/cjs/helpers/isObjectEmpty.js +15 -0
- package/dist/cjs/helpers/isObjectEmpty.js.map +1 -0
- package/dist/cjs/helpers/operationWithFallback.d.ts +4 -0
- package/dist/cjs/helpers/operationWithFallback.d.ts.map +1 -0
- package/dist/cjs/helpers/operationWithFallback.js +12 -0
- package/dist/cjs/helpers/operationWithFallback.js.map +1 -0
- package/dist/cjs/server.d.ts +2 -6
- package/dist/cjs/server.d.ts.map +1 -1
- package/dist/cjs/server.js +36 -12
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/tools/args.d.ts +1 -0
- package/dist/cjs/tools/args.d.ts.map +1 -1
- package/dist/cjs/tools/args.js +11 -0
- package/dist/cjs/tools/args.js.map +1 -1
- package/dist/cjs/tools/mongodb/connect/connect.d.ts +1 -1
- package/dist/cjs/tools/mongodb/connect/connect.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/connect/connect.js +21 -11
- package/dist/cjs/tools/mongodb/connect/connect.js.map +1 -1
- package/dist/cjs/tools/mongodb/create/insertMany.d.ts +1 -1
- package/dist/cjs/tools/mongodb/create/insertMany.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/create/insertMany.js +2 -1
- package/dist/cjs/tools/mongodb/create/insertMany.js.map +1 -1
- package/dist/cjs/tools/mongodb/delete/deleteMany.d.ts +3 -4
- package/dist/cjs/tools/mongodb/delete/deleteMany.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/delete/deleteMany.js +2 -4
- package/dist/cjs/tools/mongodb/delete/deleteMany.js.map +1 -1
- package/dist/cjs/tools/mongodb/metadata/collectionSchema.d.ts +8 -5
- package/dist/cjs/tools/mongodb/metadata/collectionSchema.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/metadata/collectionSchema.js +34 -6
- package/dist/cjs/tools/mongodb/metadata/collectionSchema.js.map +1 -1
- package/dist/cjs/tools/mongodb/metadata/explain.d.ts +51 -17
- package/dist/cjs/tools/mongodb/metadata/explain.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/metadata/explain.js +10 -9
- package/dist/cjs/tools/mongodb/metadata/explain.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts +9 -4
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.js +99 -14
- package/dist/cjs/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/count.d.ts +4 -5
- package/dist/cjs/tools/mongodb/read/count.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/count.js +2 -4
- package/dist/cjs/tools/mongodb/read/count.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/export.d.ts +36 -10
- package/dist/cjs/tools/mongodb/read/export.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/find.d.ts +9 -4
- package/dist/cjs/tools/mongodb/read/find.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/find.js +95 -11
- package/dist/cjs/tools/mongodb/read/find.js.map +1 -1
- package/dist/cjs/tools/mongodb/update/updateMany.d.ts +2 -2
- package/dist/cjs/tools/mongodb/update/updateMany.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/update/updateMany.js +3 -7
- package/dist/cjs/tools/mongodb/update/updateMany.js.map +1 -1
- package/dist/cjs/tools/tool.d.ts +1 -0
- package/dist/cjs/tools/tool.d.ts.map +1 -1
- package/dist/cjs/tools/tool.js.map +1 -1
- package/dist/cjs/transports/stdio.d.ts +0 -9
- package/dist/cjs/transports/stdio.d.ts.map +1 -1
- package/dist/cjs/transports/stdio.js +2 -40
- package/dist/cjs/transports/stdio.js.map +1 -1
- package/dist/esm/common/config.d.ts +2 -1
- package/dist/esm/common/config.d.ts.map +1 -1
- package/dist/esm/common/config.js +4 -4
- package/dist/esm/common/config.js.map +1 -1
- package/dist/esm/common/connectionManager.d.ts +1 -10
- package/dist/esm/common/connectionManager.d.ts.map +1 -1
- package/dist/esm/common/connectionManager.js +17 -20
- package/dist/esm/common/connectionManager.js.map +1 -1
- package/dist/esm/common/logger.d.ts +2 -5
- package/dist/esm/common/logger.d.ts.map +1 -1
- package/dist/esm/common/logger.js +2 -8
- package/dist/esm/common/logger.js.map +1 -1
- package/dist/esm/common/packageInfo.js +1 -1
- package/dist/esm/common/packageInfo.js.map +1 -1
- package/dist/esm/helpers/collectCursorUntilMaxBytes.d.ts +24 -0
- package/dist/esm/helpers/collectCursorUntilMaxBytes.d.ts.map +1 -0
- package/dist/esm/helpers/collectCursorUntilMaxBytes.js +71 -0
- package/dist/esm/helpers/collectCursorUntilMaxBytes.js.map +1 -0
- package/dist/esm/helpers/constants.d.ts +24 -0
- package/dist/esm/helpers/constants.d.ts.map +1 -0
- package/dist/esm/helpers/constants.js +24 -0
- package/dist/esm/helpers/constants.js.map +1 -0
- package/dist/esm/helpers/isObjectEmpty.d.ts +6 -0
- package/dist/esm/helpers/isObjectEmpty.d.ts.map +1 -0
- package/dist/esm/helpers/isObjectEmpty.js +12 -0
- package/dist/esm/helpers/isObjectEmpty.js.map +1 -0
- package/dist/esm/helpers/operationWithFallback.d.ts +4 -0
- package/dist/esm/helpers/operationWithFallback.d.ts.map +1 -0
- package/dist/esm/helpers/operationWithFallback.js +9 -0
- package/dist/esm/helpers/operationWithFallback.js.map +1 -0
- package/dist/esm/server.d.ts +2 -6
- package/dist/esm/server.d.ts.map +1 -1
- package/dist/esm/server.js +36 -12
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/tools/args.d.ts +1 -0
- package/dist/esm/tools/args.d.ts.map +1 -1
- package/dist/esm/tools/args.js +10 -0
- package/dist/esm/tools/args.js.map +1 -1
- package/dist/esm/tools/mongodb/connect/connect.d.ts +1 -1
- package/dist/esm/tools/mongodb/connect/connect.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/connect/connect.js +21 -11
- package/dist/esm/tools/mongodb/connect/connect.js.map +1 -1
- package/dist/esm/tools/mongodb/create/insertMany.d.ts +1 -1
- package/dist/esm/tools/mongodb/create/insertMany.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/create/insertMany.js +2 -1
- package/dist/esm/tools/mongodb/create/insertMany.js.map +1 -1
- package/dist/esm/tools/mongodb/delete/deleteMany.d.ts +3 -4
- package/dist/esm/tools/mongodb/delete/deleteMany.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/delete/deleteMany.js +2 -4
- package/dist/esm/tools/mongodb/delete/deleteMany.js.map +1 -1
- package/dist/esm/tools/mongodb/metadata/collectionSchema.d.ts +8 -5
- package/dist/esm/tools/mongodb/metadata/collectionSchema.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/metadata/collectionSchema.js +31 -6
- package/dist/esm/tools/mongodb/metadata/collectionSchema.js.map +1 -1
- package/dist/esm/tools/mongodb/metadata/explain.d.ts +51 -17
- package/dist/esm/tools/mongodb/metadata/explain.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/metadata/explain.js +10 -9
- package/dist/esm/tools/mongodb/metadata/explain.js.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.d.ts +9 -4
- package/dist/esm/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.js +99 -14
- package/dist/esm/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/esm/tools/mongodb/read/count.d.ts +4 -5
- package/dist/esm/tools/mongodb/read/count.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/count.js +2 -4
- package/dist/esm/tools/mongodb/read/count.js.map +1 -1
- package/dist/esm/tools/mongodb/read/export.d.ts +36 -10
- package/dist/esm/tools/mongodb/read/export.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/find.d.ts +9 -4
- package/dist/esm/tools/mongodb/read/find.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/find.js +95 -11
- package/dist/esm/tools/mongodb/read/find.js.map +1 -1
- package/dist/esm/tools/mongodb/update/updateMany.d.ts +2 -2
- package/dist/esm/tools/mongodb/update/updateMany.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/update/updateMany.js +3 -7
- package/dist/esm/tools/mongodb/update/updateMany.js.map +1 -1
- package/dist/esm/tools/tool.d.ts +1 -0
- package/dist/esm/tools/tool.d.ts.map +1 -1
- package/dist/esm/tools/tool.js.map +1 -1
- package/dist/esm/transports/stdio.d.ts +0 -9
- package/dist/esm/transports/stdio.d.ts.map +1 -1
- package/dist/esm/transports/stdio.js +1 -37
- package/dist/esm/transports/stdio.js.map +1 -1
- package/package.json +14 -15
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getResponseBytesLimit = getResponseBytesLimit;
|
|
4
|
+
exports.collectCursorUntilMaxBytesLimit = collectCursorUntilMaxBytesLimit;
|
|
5
|
+
const bson_1 = require("bson");
|
|
6
|
+
function getResponseBytesLimit(toolResponseBytesLimit, configuredMaxBytesPerQuery) {
|
|
7
|
+
const configuredLimit = parseInt(String(configuredMaxBytesPerQuery), 10);
|
|
8
|
+
// Setting configured maxBytesPerQuery to negative, zero or nullish is
|
|
9
|
+
// equivalent to disabling the max limit applied on documents
|
|
10
|
+
const configuredLimitIsNotApplicable = Number.isNaN(configuredLimit) || configuredLimit <= 0;
|
|
11
|
+
// It's possible to have tool parameter responseBytesLimit as null or
|
|
12
|
+
// negative values in which case we consider that no limit is to be
|
|
13
|
+
// applied from tool call perspective unless we have a maxBytesPerQuery
|
|
14
|
+
// configured.
|
|
15
|
+
const toolResponseLimitIsNotApplicable = typeof toolResponseBytesLimit !== "number" || toolResponseBytesLimit <= 0;
|
|
16
|
+
if (configuredLimitIsNotApplicable) {
|
|
17
|
+
return {
|
|
18
|
+
cappedBy: toolResponseLimitIsNotApplicable ? undefined : "tool.responseBytesLimit",
|
|
19
|
+
limit: toolResponseLimitIsNotApplicable ? 0 : toolResponseBytesLimit,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
if (toolResponseLimitIsNotApplicable) {
|
|
23
|
+
return { cappedBy: "config.maxBytesPerQuery", limit: configuredLimit };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
cappedBy: configuredLimit < toolResponseBytesLimit ? "config.maxBytesPerQuery" : "tool.responseBytesLimit",
|
|
27
|
+
limit: Math.min(toolResponseBytesLimit, configuredLimit),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* This function attempts to put a guard rail against accidental memory overflow
|
|
32
|
+
* on the MCP server.
|
|
33
|
+
*
|
|
34
|
+
* The cursor is iterated until we can predict that fetching next doc won't
|
|
35
|
+
* exceed the derived limit on number of bytes for the tool call. The derived
|
|
36
|
+
* limit takes into account the limit provided from the Tool's interface and the
|
|
37
|
+
* configured maxBytesPerQuery for the server.
|
|
38
|
+
*/
|
|
39
|
+
async function collectCursorUntilMaxBytesLimit({ cursor, toolResponseBytesLimit, configuredMaxBytesPerQuery, abortSignal, }) {
|
|
40
|
+
const { limit: maxBytesPerQuery, cappedBy } = getResponseBytesLimit(toolResponseBytesLimit, configuredMaxBytesPerQuery);
|
|
41
|
+
// It's possible to have no limit on the cursor response by setting both the
|
|
42
|
+
// config.maxBytesPerQuery and tool.responseBytesLimit to nullish or
|
|
43
|
+
// negative values.
|
|
44
|
+
if (maxBytesPerQuery <= 0) {
|
|
45
|
+
return {
|
|
46
|
+
cappedBy,
|
|
47
|
+
documents: await cursor.toArray(),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
let wasCapped = false;
|
|
51
|
+
let totalBytes = 0;
|
|
52
|
+
const bufferedDocuments = [];
|
|
53
|
+
while (true) {
|
|
54
|
+
if (abortSignal?.aborted) {
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
// If the cursor is empty then there is nothing for us to do anymore.
|
|
58
|
+
const nextDocument = await cursor.tryNext();
|
|
59
|
+
if (!nextDocument) {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
const nextDocumentSize = (0, bson_1.calculateObjectSize)(nextDocument);
|
|
63
|
+
if (totalBytes + nextDocumentSize >= maxBytesPerQuery) {
|
|
64
|
+
wasCapped = true;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
totalBytes += nextDocumentSize;
|
|
68
|
+
bufferedDocuments.push(nextDocument);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
cappedBy: wasCapped ? cappedBy : undefined,
|
|
72
|
+
documents: bufferedDocuments,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=collectCursorUntilMaxBytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectCursorUntilMaxBytes.js","sourceRoot":"","sources":["../../../src/helpers/collectCursorUntilMaxBytes.ts"],"names":[],"mappings":";;AAGA,sDAkCC;AAWD,0EAsDC;AAtGD,+BAA2C;AAG3C,SAAgB,qBAAqB,CACjC,sBAAiD,EACjD,0BAAmC;IAKnC,MAAM,eAAe,GAAW,QAAQ,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjF,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,8BAA8B,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC;IAE7F,qEAAqE;IACrE,mEAAmE;IACnE,uEAAuE;IACvE,cAAc;IACd,MAAM,gCAAgC,GAAG,OAAO,sBAAsB,KAAK,QAAQ,IAAI,sBAAsB,IAAI,CAAC,CAAC;IAEnH,IAAI,8BAA8B,EAAE,CAAC;QACjC,OAAO;YACH,QAAQ,EAAE,gCAAgC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB;YAClF,KAAK,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;SACvE,CAAC;IACN,CAAC;IAED,IAAI,gCAAgC,EAAE,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC3E,CAAC;IAED,OAAO;QACH,QAAQ,EAAE,eAAe,GAAG,sBAAsB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB;QAC1G,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,eAAe,CAAC;KAC3D,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,+BAA+B,CAAc,EAC/D,MAAM,EACN,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,GAMd;IACG,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAC/D,sBAAsB,EACtB,0BAA0B,CAC7B,CAAC;IAEF,4EAA4E;IAC5E,oEAAoE;IACpE,mBAAmB;IACnB,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO;YACH,QAAQ;YACR,SAAS,EAAE,MAAM,MAAM,CAAC,OAAO,EAAE;SACpC,CAAC;IACN,CAAC;IAED,IAAI,SAAS,GAAY,KAAK,CAAC;IAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,iBAAiB,GAAQ,EAAE,CAAC;IAClC,OAAO,IAAI,EAAE,CAAC;QACV,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACvB,MAAM;QACV,CAAC;QAED,qEAAqE;QACrE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM;QACV,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAA,0BAAmB,EAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,UAAU,GAAG,gBAAgB,IAAI,gBAAgB,EAAE,CAAC;YACpD,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACV,CAAC;QAED,UAAU,IAAI,gBAAgB,CAAC;QAC/B,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACH,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC1C,SAAS,EAAE,iBAAiB;KAC/B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A cap for the maxTimeMS used for FindCursor.countDocuments.
|
|
3
|
+
*
|
|
4
|
+
* The number is relatively smaller because we expect the count documents query
|
|
5
|
+
* to be finished sooner if not by the time the batch of documents is retrieved
|
|
6
|
+
* so that count documents query don't hold the final response back.
|
|
7
|
+
*/
|
|
8
|
+
export declare const QUERY_COUNT_MAX_TIME_MS_CAP: number;
|
|
9
|
+
/**
|
|
10
|
+
* A cap for the maxTimeMS used for counting resulting documents of an
|
|
11
|
+
* aggregation.
|
|
12
|
+
*/
|
|
13
|
+
export declare const AGG_COUNT_MAX_TIME_MS_CAP: number;
|
|
14
|
+
export declare const ONE_MB: number;
|
|
15
|
+
/**
|
|
16
|
+
* A map of applied limit on cursors to a text that is supposed to be sent as
|
|
17
|
+
* response to LLM
|
|
18
|
+
*/
|
|
19
|
+
export declare const CURSOR_LIMITS_TO_LLM_TEXT: {
|
|
20
|
+
readonly "config.maxDocumentsPerQuery": "server's configured - maxDocumentsPerQuery";
|
|
21
|
+
readonly "config.maxBytesPerQuery": "server's configured - maxBytesPerQuery";
|
|
22
|
+
readonly "tool.responseBytesLimit": "tool's parameter - responseBytesLimit";
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAe,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAe,CAAC;AAExD,eAAO,MAAM,MAAM,EAAE,MAAwB,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CURSOR_LIMITS_TO_LLM_TEXT = exports.ONE_MB = exports.AGG_COUNT_MAX_TIME_MS_CAP = exports.QUERY_COUNT_MAX_TIME_MS_CAP = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A cap for the maxTimeMS used for FindCursor.countDocuments.
|
|
6
|
+
*
|
|
7
|
+
* The number is relatively smaller because we expect the count documents query
|
|
8
|
+
* to be finished sooner if not by the time the batch of documents is retrieved
|
|
9
|
+
* so that count documents query don't hold the final response back.
|
|
10
|
+
*/
|
|
11
|
+
exports.QUERY_COUNT_MAX_TIME_MS_CAP = 10000;
|
|
12
|
+
/**
|
|
13
|
+
* A cap for the maxTimeMS used for counting resulting documents of an
|
|
14
|
+
* aggregation.
|
|
15
|
+
*/
|
|
16
|
+
exports.AGG_COUNT_MAX_TIME_MS_CAP = 60000;
|
|
17
|
+
exports.ONE_MB = 1 * 1024 * 1024;
|
|
18
|
+
/**
|
|
19
|
+
* A map of applied limit on cursors to a text that is supposed to be sent as
|
|
20
|
+
* response to LLM
|
|
21
|
+
*/
|
|
22
|
+
exports.CURSOR_LIMITS_TO_LLM_TEXT = {
|
|
23
|
+
"config.maxDocumentsPerQuery": "server's configured - maxDocumentsPerQuery",
|
|
24
|
+
"config.maxBytesPerQuery": "server's configured - maxBytesPerQuery",
|
|
25
|
+
"tool.responseBytesLimit": "tool's parameter - responseBytesLimit",
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACU,QAAA,2BAA2B,GAAW,KAAM,CAAC;AAE1D;;;GAGG;AACU,QAAA,yBAAyB,GAAW,KAAM,CAAC;AAE3C,QAAA,MAAM,GAAW,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C;;;GAGG;AACU,QAAA,yBAAyB,GAAG;IACrC,6BAA6B,EAAE,4CAA4C;IAC3E,yBAAyB,EAAE,wCAAwC;IACnE,yBAAyB,EAAE,uCAAuC;CAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isObjectEmpty.d.ts","sourceRoot":"","sources":["../../../src/helpers/isObjectEmpty.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,WAAW,CAYpF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isObjectEmpty = isObjectEmpty;
|
|
4
|
+
function isObjectEmpty(value) {
|
|
5
|
+
if (!value) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
for (const prop in value) {
|
|
9
|
+
if (Object.prototype.hasOwnProperty.call(value, prop)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=isObjectEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isObjectEmpty.js","sourceRoot":"","sources":["../../../src/helpers/isObjectEmpty.ts"],"names":[],"mappings":";;AAEA,sCAYC;AAZD,SAAgB,aAAa,CAAC,KAAgC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
type OperationCallback<OperationResult> = () => Promise<OperationResult>;
|
|
2
|
+
export declare function operationWithFallback<OperationResult, FallbackValue>(performOperation: OperationCallback<OperationResult>, fallback: FallbackValue): Promise<OperationResult | FallbackValue>;
|
|
3
|
+
export {};
|
|
4
|
+
//# sourceMappingURL=operationWithFallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationWithFallback.d.ts","sourceRoot":"","sources":["../../../src/helpers/operationWithFallback.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,CAAC,eAAe,IAAI,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;AAEzE,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,aAAa,EACtE,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CAAC,EACpD,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,CAM1C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.operationWithFallback = operationWithFallback;
|
|
4
|
+
async function operationWithFallback(performOperation, fallback) {
|
|
5
|
+
try {
|
|
6
|
+
return await performOperation();
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return fallback;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=operationWithFallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationWithFallback.js","sourceRoot":"","sources":["../../../src/helpers/operationWithFallback.ts"],"names":[],"mappings":";;AAEA,sDASC;AATM,KAAK,UAAU,qBAAqB,CACvC,gBAAoD,EACpD,QAAuB;IAEvB,IAAI,CAAC;QACD,OAAO,MAAM,gBAAgB,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,QAAQ,CAAC;IACpB,CAAC;AACL,CAAC"}
|
package/dist/cjs/server.d.ts
CHANGED
|
@@ -32,15 +32,11 @@ export declare class Server {
|
|
|
32
32
|
close(): Promise<void>;
|
|
33
33
|
sendResourceListChanged(): void;
|
|
34
34
|
sendResourceUpdated(uri: string): void;
|
|
35
|
-
|
|
36
|
-
* Emits a server event
|
|
37
|
-
* @param command - The server command (e.g., "start", "stop", "register", "deregister")
|
|
38
|
-
* @param additionalProperties - Additional properties specific to the event
|
|
39
|
-
*/
|
|
40
|
-
private emitServerEvent;
|
|
35
|
+
private emitServerTelemetryEvent;
|
|
41
36
|
private registerTools;
|
|
42
37
|
private registerResources;
|
|
43
38
|
private validateConfig;
|
|
39
|
+
private getInstructions;
|
|
44
40
|
private connectToConfigConnectionString;
|
|
45
41
|
}
|
|
46
42
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/cjs/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAI/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,sBAAsB,EAAE,sBAAsB,CAAC;CAClD;AAED,qBAAa,MAAM;IACf,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,WAAW,EAAE,WAAW,CAAC;IACzC,SAAgB,KAAK,EAAE,QAAQ,EAAE,CAAM;IACvC,SAAgB,sBAAsB,EAAE,sBAAsB,CAAC;IAE/D,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAW,WAAW,IAAI,QAAQ,CAEjC;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,EAAE,aAAa;IAUvG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAI/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,sBAAsB,EAAE,sBAAsB,CAAC;CAClD;AAED,qBAAa,MAAM;IACf,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,WAAW,EAAE,WAAW,CAAC;IACzC,SAAgB,KAAK,EAAE,QAAQ,EAAE,CAAM;IACvC,SAAgB,sBAAsB,EAAE,sBAAsB,CAAC;IAE/D,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAW,WAAW,IAAI,QAAQ,CAEjC;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,EAAE,aAAa;IAUvG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA4F5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,uBAAuB,IAAI,IAAI;IAI/B,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY7C,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,iBAAiB;YAOX,cAAc;IAwC5B,OAAO,CAAC,eAAe;YAkBT,+BAA+B;CAqBhD"}
|
package/dist/cjs/server.js
CHANGED
|
@@ -29,11 +29,15 @@ class Server {
|
|
|
29
29
|
this.connectionErrorHandler = connectionErrorHandler;
|
|
30
30
|
}
|
|
31
31
|
async connect(transport) {
|
|
32
|
-
|
|
32
|
+
await this.validateConfig();
|
|
33
|
+
// Register resources after the server is initialized so they can listen to events like
|
|
33
34
|
// connection events.
|
|
34
35
|
this.registerResources();
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
this.mcpServer.server.registerCapabilities({
|
|
37
|
+
logging: {},
|
|
38
|
+
resources: { listChanged: true, subscribe: true },
|
|
39
|
+
instructions: this.getInstructions(),
|
|
40
|
+
});
|
|
37
41
|
// TODO: Eventually we might want to make tools reactive too instead of relying on custom logic.
|
|
38
42
|
this.registerTools();
|
|
39
43
|
// This is a workaround for an issue we've seen with some models, where they'll see that everything in the `arguments`
|
|
@@ -84,15 +88,15 @@ class Server {
|
|
|
84
88
|
context: "server",
|
|
85
89
|
message: `Server with version ${packageInfo_js_1.packageInfo.version} started with transport ${transport.constructor.name} and agent runner ${JSON.stringify(this.session.mcpClient)}`,
|
|
86
90
|
});
|
|
87
|
-
this.
|
|
91
|
+
this.emitServerTelemetryEvent("start", Date.now() - this.startTime);
|
|
88
92
|
};
|
|
89
93
|
this.mcpServer.server.onclose = () => {
|
|
90
94
|
const closeTime = Date.now();
|
|
91
|
-
this.
|
|
95
|
+
this.emitServerTelemetryEvent("stop", Date.now() - closeTime);
|
|
92
96
|
};
|
|
93
97
|
this.mcpServer.server.onerror = (error) => {
|
|
94
98
|
const closeTime = Date.now();
|
|
95
|
-
this.
|
|
99
|
+
this.emitServerTelemetryEvent("stop", Date.now() - closeTime, error);
|
|
96
100
|
};
|
|
97
101
|
await this.mcpServer.connect(transport);
|
|
98
102
|
}
|
|
@@ -105,16 +109,16 @@ class Server {
|
|
|
105
109
|
this.mcpServer.sendResourceListChanged();
|
|
106
110
|
}
|
|
107
111
|
sendResourceUpdated(uri) {
|
|
112
|
+
this.session.logger.info({
|
|
113
|
+
id: logger_js_1.LogId.resourceUpdateFailure,
|
|
114
|
+
context: "resources",
|
|
115
|
+
message: `Resource updated: ${uri}`,
|
|
116
|
+
});
|
|
108
117
|
if (this.subscriptions.has(uri)) {
|
|
109
118
|
void this.mcpServer.server.sendResourceUpdated({ uri });
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
|
-
|
|
113
|
-
* Emits a server event
|
|
114
|
-
* @param command - The server command (e.g., "start", "stop", "register", "deregister")
|
|
115
|
-
* @param additionalProperties - Additional properties specific to the event
|
|
116
|
-
*/
|
|
117
|
-
emitServerEvent(command, commandDuration, error) {
|
|
121
|
+
emitServerTelemetryEvent(command, commandDuration, error) {
|
|
118
122
|
const event = {
|
|
119
123
|
timestamp: new Date().toISOString(),
|
|
120
124
|
source: "mdbmcp",
|
|
@@ -175,6 +179,11 @@ class Server {
|
|
|
175
179
|
// Validate API client credentials
|
|
176
180
|
if (this.userConfig.apiClientId && this.userConfig.apiClientSecret) {
|
|
177
181
|
try {
|
|
182
|
+
if (!this.userConfig.apiBaseUrl.startsWith("https://")) {
|
|
183
|
+
const message = "Failed to validate MongoDB Atlas the credentials from config: apiBaseUrl must start with https://";
|
|
184
|
+
console.error(message);
|
|
185
|
+
throw new Error(message);
|
|
186
|
+
}
|
|
178
187
|
await this.session.apiClient.validateAccessToken();
|
|
179
188
|
}
|
|
180
189
|
catch (error) {
|
|
@@ -186,6 +195,21 @@ class Server {
|
|
|
186
195
|
}
|
|
187
196
|
}
|
|
188
197
|
}
|
|
198
|
+
getInstructions() {
|
|
199
|
+
let instructions = `
|
|
200
|
+
This is the MongoDB MCP server.
|
|
201
|
+
`;
|
|
202
|
+
if (this.userConfig.connectionString) {
|
|
203
|
+
instructions += `
|
|
204
|
+
This MCP server was configured with a MongoDB connection string, and you can assume that you are connected to a MongoDB cluster.
|
|
205
|
+
`;
|
|
206
|
+
}
|
|
207
|
+
if (this.userConfig.apiClientId && this.userConfig.apiClientSecret) {
|
|
208
|
+
instructions += `
|
|
209
|
+
This MCP server was configured with MongoDB Atlas API credentials.`;
|
|
210
|
+
}
|
|
211
|
+
return instructions;
|
|
212
|
+
}
|
|
189
213
|
async connectToConfigConnectionString() {
|
|
190
214
|
if (this.userConfig.connectionString) {
|
|
191
215
|
try {
|
package/dist/cjs/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;;;;AAGA,qDAAoD;AACpD,uDAAwD;AACxD,2DAAqD;AAErD,kDAAsD;AAMtD,iEAK4C;AAC5C,oDAA4B;AAE5B,yEAA0E;AAC1E,4DAAsD;AAatD,MAAa,MAAM;IAWf,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAKD,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAiB;QAZ7F,UAAK,GAAe,EAAE,CAAC;QAG/B,iBAAY,GAAa,OAAO,CAAC;QAOxB,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAG/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAoB;QAC9B,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/tools/args.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/tools/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/tools/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;AAIxC,eAAO,MAAM,gBAAgB,gEAAgE,CAAC;AAG9F,eAAO,MAAM,iCAAiC,+EACkC,CAAC;AAGjF,eAAO,MAAM,+BAA+B,uEAAuE,CAAC;AAGpH,eAAO,MAAM,qCAAqC,wEACuB,CAAC;AAG1E,eAAO,MAAM,qCAAqC,qJACoG,CAAC;AACvJ,eAAO,MAAM,UAAU;kBACP,SAAS;0BAEC,MAAM,KAAG,CAAC,CAAC,SAAS;CAM7C,CAAC;AAEF,eAAO,MAAM,SAAS;qBACH,CAAC,CAAC,SAAS;0BAEN,CAAC,CAAC,SAAS;uBAEd,CAAC,CAAC,SAAS;uBAOX,CAAC,CAAC,SAAS;oBAOd,CAAC,CAAC,SAAS;qBAOV,CAAC,CAAC,SAAS;qBAEX,CAAC,CAAC,SAAS;kBAEd,CAAC,CAAC,SAAS;oBAOT,CAAC,CAAC,SAAS;CAE5B,CAAC;AAUF,wBAAgB,MAAM,IAAI,CAAC,CAAC,YAAY,CAEvC"}
|
package/dist/cjs/tools/args.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AtlasArgs = exports.CommonArgs = exports.ALLOWED_PROJECT_NAME_CHARACTERS_ERROR = exports.ALLOWED_CLUSTER_NAME_CHARACTERS_ERROR = exports.ALLOWED_REGION_CHARACTERS_ERROR = exports.ALLOWED_USERNAME_CHARACTERS_ERROR = exports.NO_UNICODE_ERROR = void 0;
|
|
4
|
+
exports.zEJSON = zEJSON;
|
|
4
5
|
const zod_1 = require("zod");
|
|
6
|
+
const bson_1 = require("bson");
|
|
5
7
|
const NO_UNICODE_REGEX = /^[\x20-\x7E]*$/;
|
|
6
8
|
exports.NO_UNICODE_ERROR = "String cannot contain special characters or Unicode symbols";
|
|
7
9
|
const ALLOWED_USERNAME_CHARACTERS_REGEX = /^[a-zA-Z0-9._-]+$/;
|
|
@@ -47,4 +49,13 @@ exports.AtlasArgs = {
|
|
|
47
49
|
.regex(ALLOWED_REGION_CHARACTERS_REGEX, exports.ALLOWED_REGION_CHARACTERS_ERROR),
|
|
48
50
|
password: () => zod_1.z.string().min(1, "Password is required").max(100, "Password must be 100 characters or less"),
|
|
49
51
|
};
|
|
52
|
+
function toEJSON(value) {
|
|
53
|
+
if (!value) {
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
return bson_1.EJSON.deserialize(value, { relaxed: false });
|
|
57
|
+
}
|
|
58
|
+
function zEJSON() {
|
|
59
|
+
return zod_1.z.object({}).passthrough().transform(toEJSON);
|
|
60
|
+
}
|
|
50
61
|
//# sourceMappingURL=args.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/tools/args.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/tools/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import type { Server } from "../../../server.js";
|
|
|
6
6
|
declare const connectedName: "switch-connection";
|
|
7
7
|
declare const disconnectedName: "connect";
|
|
8
8
|
declare const connectedDescription = "Switch to a different MongoDB connection. If the user has configured a connection string or has previously called the connect tool, a connection is already established and there's no need to call this tool unless the user has explicitly requested to switch to a new instance.";
|
|
9
|
-
declare const disconnectedDescription = "Connect to a MongoDB instance";
|
|
9
|
+
declare const disconnectedDescription = "Connect to a MongoDB instance. The config resource captures if the server is already connected to a MongoDB cluster. If the user has configured a connection string or has previously called the connect tool, a connection is already established and there's no need to call this tool unless the user has explicitly requested to switch to a new MongoDB cluster.";
|
|
10
10
|
export declare class ConnectTool extends MongoDBToolBase {
|
|
11
11
|
name: typeof connectedName | typeof disconnectedName;
|
|
12
12
|
protected description: typeof connectedDescription | typeof disconnectedDescription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/connect/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/connect/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAoBjD,QAAA,MAAM,aAAa,EAAG,mBAA4B,CAAC;AACnD,QAAA,MAAM,gBAAgB,EAAG,SAAkB,CAAC;AAE5C,QAAA,MAAM,oBAAoB,wRAC+P,CAAC;AAC1R,QAAA,MAAM,uBAAuB,0WAC8U,CAAC;AAE5W,qBAAa,WAAY,SAAQ,eAAe;IACrC,IAAI,EAAE,OAAO,aAAa,GAAG,OAAO,gBAAgB,CAAoB;IAC/E,SAAS,CAAC,WAAW,EAAE,OAAO,oBAAoB,GAAG,OAAO,uBAAuB,CAA2B;IAI9G,SAAS,CAAC,SAAS;;MAEjB;IAEK,aAAa,EAAE,aAAa,CAAa;gBAEpC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,qBAAqB;cAW9D,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAsBhG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASxC,OAAO,CAAC,cAAc;CA2BzB"}
|
|
@@ -7,6 +7,7 @@ exports.ConnectTool = void 0;
|
|
|
7
7
|
const zod_1 = require("zod");
|
|
8
8
|
const mongodbTool_js_1 = require("../mongodbTool.js");
|
|
9
9
|
const assert_1 = __importDefault(require("assert"));
|
|
10
|
+
const logger_js_1 = require("../../../common/logger.js");
|
|
10
11
|
const disconnectedSchema = zod_1.z
|
|
11
12
|
.object({
|
|
12
13
|
connectionString: zod_1.z.string().describe("MongoDB connection string (in the mongodb:// or mongodb+srv:// format)"),
|
|
@@ -23,7 +24,7 @@ const connectedSchema = zod_1.z
|
|
|
23
24
|
const connectedName = "switch-connection";
|
|
24
25
|
const disconnectedName = "connect";
|
|
25
26
|
const connectedDescription = "Switch to a different MongoDB connection. If the user has configured a connection string or has previously called the connect tool, a connection is already established and there's no need to call this tool unless the user has explicitly requested to switch to a new instance.";
|
|
26
|
-
const disconnectedDescription = "Connect to a MongoDB instance";
|
|
27
|
+
const disconnectedDescription = "Connect to a MongoDB instance. The config resource captures if the server is already connected to a MongoDB cluster. If the user has configured a connection string or has previously called the connect tool, a connection is already established and there's no need to call this tool unless the user has explicitly requested to switch to a new MongoDB cluster.";
|
|
27
28
|
class ConnectTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
28
29
|
constructor({ session, config, telemetry, elicitation }) {
|
|
29
30
|
super({ session, config, telemetry, elicitation });
|
|
@@ -66,20 +67,29 @@ class ConnectTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
66
67
|
return false;
|
|
67
68
|
}
|
|
68
69
|
updateMetadata() {
|
|
70
|
+
let name;
|
|
71
|
+
let description;
|
|
72
|
+
let inputSchema;
|
|
69
73
|
if (this.session.isConnectedToMongoDB) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
inputSchema: connectedSchema,
|
|
74
|
-
});
|
|
74
|
+
name = connectedName;
|
|
75
|
+
description = connectedDescription;
|
|
76
|
+
inputSchema = connectedSchema;
|
|
75
77
|
}
|
|
76
78
|
else {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
inputSchema: disconnectedSchema,
|
|
81
|
-
});
|
|
79
|
+
name = disconnectedName;
|
|
80
|
+
description = disconnectedDescription;
|
|
81
|
+
inputSchema = disconnectedSchema;
|
|
82
82
|
}
|
|
83
|
+
this.session.logger.info({
|
|
84
|
+
id: logger_js_1.LogId.updateToolMetadata,
|
|
85
|
+
context: "tool",
|
|
86
|
+
message: `Updating tool metadata to ${name}`,
|
|
87
|
+
});
|
|
88
|
+
this.update?.({
|
|
89
|
+
name,
|
|
90
|
+
description,
|
|
91
|
+
inputSchema,
|
|
92
|
+
});
|
|
83
93
|
}
|
|
84
94
|
}
|
|
85
95
|
exports.ConnectTool = ConnectTool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/connect/connect.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAwB;AAExB,sDAAoD;AAEpD,oDAA4B;
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/connect/connect.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAwB;AAExB,sDAAoD;AAEpD,oDAA4B;AAE5B,yDAAkD;AAElD,MAAM,kBAAkB,GAAG,OAAC;KACvB,MAAM,CAAC;IACJ,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;CAClH,CAAC;KACD,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AAEpD,MAAM,eAAe,GAAG,OAAC;KACpB,MAAM,CAAC;IACJ,gBAAgB,EAAE,OAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qFAAqF,CAAC;CACvG,CAAC;KACD,QAAQ,CACL,mJAAmJ,CACtJ,CAAC;AAEN,MAAM,aAAa,GAAG,mBAA4B,CAAC;AACnD,MAAM,gBAAgB,GAAG,SAAkB,CAAC;AAE5C,MAAM,oBAAoB,GACtB,qRAAqR,CAAC;AAC1R,MAAM,uBAAuB,GACzB,uWAAuW,CAAC;AAE5W,MAAa,WAAY,SAAQ,gCAAe;IAY5C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAyB;QAC1E,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAZhD,SAAI,GAAmD,gBAAgB,CAAC;QACrE,gBAAW,GAAiE,uBAAuB,CAAC;QAE9G,0GAA0G;QAC1G,iCAAiC;QACvB,cAAS,GAAG;YAClB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1C,CAAC;QAEK,kBAAa,GAAkB,SAAS,CAAC;QAI5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAmC;QACzE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,gBAAgB;gBACjB,IAAA,gBAAM,EAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;gBAC1D,MAAM;YACV,KAAK,aAAa;gBACd,gBAAgB,KAAhB,gBAAgB,GAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAC;gBAClD,IAAA,gBAAM,EACF,gBAAgB,EAChB,6HAA6H,CAChI,CAAC;gBACF,MAAM;QACd,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;SAC1E,CAAC;IACN,CAAC;IAEM,QAAQ,CAAC,MAAc;QAC1B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,cAAc;QAClB,IAAI,IAAY,CAAC;QACjB,IAAI,WAAmB,CAAC;QACxB,IAAI,WAAuC,CAAC;QAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACpC,IAAI,GAAG,aAAa,CAAC;YACrB,WAAW,GAAG,oBAAoB,CAAC;YACnC,WAAW,GAAG,eAAe,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,gBAAgB,CAAC;YACxB,WAAW,GAAG,uBAAuB,CAAC;YACtC,WAAW,GAAG,kBAAkB,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YACrB,EAAE,EAAE,iBAAK,CAAC,kBAAkB;YAC5B,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,6BAA6B,IAAI,EAAE;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,IAAI;YACJ,WAAW;YACX,WAAW;SACd,CAAC,CAAC;IACP,CAAC;CACJ;AAjFD,kCAiFC"}
|
|
@@ -6,7 +6,7 @@ export declare class InsertManyTool extends MongoDBToolBase {
|
|
|
6
6
|
name: string;
|
|
7
7
|
protected description: string;
|
|
8
8
|
protected argsShape: {
|
|
9
|
-
documents: z.ZodArray<z.
|
|
9
|
+
documents: z.ZodArray<z.AnyZodObject, "many">;
|
|
10
10
|
database: z.ZodString;
|
|
11
11
|
collection: z.ZodString;
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertMany.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/insertMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"insertMany.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/insertMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG7D,qBAAa,cAAe,SAAQ,eAAe;IACxC,IAAI,SAAiB;IAC5B,SAAS,CAAC,WAAW,SAA4D;IACjF,SAAS,CAAC,SAAS;;;;MAOjB;IACK,aAAa,EAAE,aAAa,CAAY;cAE/B,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,SAAS,GACZ,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAiB/D"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InsertManyTool = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const mongodbTool_js_1 = require("../mongodbTool.js");
|
|
6
|
+
const args_js_1 = require("../../args.js");
|
|
6
7
|
class InsertManyTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
7
8
|
constructor() {
|
|
8
9
|
super(...arguments);
|
|
@@ -11,7 +12,7 @@ class InsertManyTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
11
12
|
this.argsShape = {
|
|
12
13
|
...mongodbTool_js_1.DbOperationArgs,
|
|
13
14
|
documents: zod_1.z
|
|
14
|
-
.array(
|
|
15
|
+
.array((0, args_js_1.zEJSON)().describe("An individual MongoDB document"))
|
|
15
16
|
.describe("The array of documents to insert, matching the syntax of the document argument of db.collection.insertMany()"),
|
|
16
17
|
};
|
|
17
18
|
this.operationType = "create";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/insertMany.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAqE;
|
|
1
|
+
{"version":3,"file":"insertMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/insertMany.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAqE;AAErE,2CAAuC;AAEvC,MAAa,cAAe,SAAQ,gCAAe;IAAnD;;QACW,SAAI,GAAG,aAAa,CAAC;QAClB,gBAAW,GAAG,wDAAwD,CAAC;QACvE,cAAS,GAAG;YAClB,GAAG,gCAAe;YAClB,SAAS,EAAE,OAAC;iBACP,KAAK,CAAC,IAAA,gBAAM,GAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;iBAC1D,QAAQ,CACL,8GAA8G,CACjH;SACR,CAAC;QACK,kBAAa,GAAkB,QAAQ,CAAC;IAuBnD,CAAC;IArBa,KAAK,CAAC,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,SAAS,GACqB;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAE1E,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,cAAc,MAAM,CAAC,aAAa,mCAAmC,UAAU,GAAG;oBACxF,IAAI,EAAE,MAAM;iBACf;gBACD;oBACI,IAAI,EAAE,iBAAiB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACrE,IAAI,EAAE,MAAM;iBACf;aACJ;SACJ,CAAC;IACN,CAAC;CACJ;AAlCD,wCAkCC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
1
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
2
|
import { MongoDBToolBase } from "../mongodbTool.js";
|
|
4
3
|
import type { ToolArgs, OperationType } from "../../tool.js";
|
|
@@ -6,9 +5,9 @@ export declare class DeleteManyTool extends MongoDBToolBase {
|
|
|
6
5
|
name: string;
|
|
7
6
|
protected description: string;
|
|
8
7
|
protected argsShape: {
|
|
9
|
-
filter:
|
|
10
|
-
database:
|
|
11
|
-
collection:
|
|
8
|
+
filter: import("zod").ZodOptional<import("zod").AnyZodObject>;
|
|
9
|
+
database: import("zod").ZodString;
|
|
10
|
+
collection: import("zod").ZodString;
|
|
12
11
|
};
|
|
13
12
|
operationType: OperationType;
|
|
14
13
|
protected execute({ database, collection, filter, }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK7D,qBAAa,cAAe,SAAQ,eAAe;IACxC,IAAI,SAAiB;IAC5B,SAAS,CAAC,WAAW,SAA2E;IAChG,SAAS,CAAC,SAAS;;;;MAOjB;IACK,aAAa,EAAE,aAAa,CAAY;cAE/B,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,GACT,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAiC5D,SAAS,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM;CAY9G"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DeleteManyTool = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
4
|
const mongodbTool_js_1 = require("../mongodbTool.js");
|
|
6
5
|
const indexCheck_js_1 = require("../../../helpers/indexCheck.js");
|
|
7
6
|
const bson_1 = require("bson");
|
|
7
|
+
const args_js_1 = require("../../args.js");
|
|
8
8
|
class DeleteManyTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments);
|
|
@@ -12,9 +12,7 @@ class DeleteManyTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
12
12
|
this.description = "Removes all documents that match the filter from a MongoDB collection";
|
|
13
13
|
this.argsShape = {
|
|
14
14
|
...mongodbTool_js_1.DbOperationArgs,
|
|
15
|
-
filter:
|
|
16
|
-
.object({})
|
|
17
|
-
.passthrough()
|
|
15
|
+
filter: (0, args_js_1.zEJSON)()
|
|
18
16
|
.optional()
|
|
19
17
|
.describe("The query filter, specifying the deletion criteria. Matches the syntax of the filter argument of db.collection.deleteMany()"),
|
|
20
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":";;;AACA,sDAAqE;AAErE,kEAAiE;AACjE,+BAA6B;AAC7B,2CAAuC;AAEvC,MAAa,cAAe,SAAQ,gCAAe;IAAnD;;QACW,SAAI,GAAG,aAAa,CAAC;QAClB,gBAAW,GAAG,uEAAuE,CAAC;QACtF,cAAS,GAAG;YAClB,GAAG,gCAAe;YAClB,MAAM,EAAE,IAAA,gBAAM,GAAE;iBACX,QAAQ,EAAE;iBACV,QAAQ,CACL,6HAA6H,CAChI;SACR,CAAC;QACK,kBAAa,GAAkB,QAAQ,CAAC;IAmDnD,CAAC;IAjDa,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,IAAA,+BAAe,EAAC,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;IAES,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAmC;QAC9F,MAAM,iBAAiB,GACnB,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YACpC,CAAC,CAAC,WAAW,GAAG,eAAe,YAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS;YACxE,CAAC,CAAC,qCAAqC,CAAC;QAChD,OAAO,CACH,gDAAgD,UAAU,0BAA0B,QAAQ,kBAAkB;YAC9G,iBAAiB;YACjB,+EAA+E;YAC/E,iDAAiD,CACpD,CAAC;IACN,CAAC;CACJ;AA9DD,wCA8DC"}
|