mongodb-mcp-server 2.0.1-alpha.4 → 2.1.0
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 +11 -1
- package/dist/cjs/common/errors.d.ts +2 -1
- package/dist/cjs/common/errors.d.ts.map +1 -1
- package/dist/cjs/common/errors.js +1 -0
- package/dist/cjs/common/errors.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/mqlGuards.d.ts +28 -0
- package/dist/cjs/helpers/mqlGuards.d.ts.map +1 -1
- package/dist/cjs/helpers/mqlGuards.js +75 -1
- package/dist/cjs/helpers/mqlGuards.js.map +1 -1
- package/dist/cjs/helpers/writeStageConfirmation.d.ts +12 -0
- package/dist/cjs/helpers/writeStageConfirmation.d.ts.map +1 -0
- package/dist/cjs/helpers/writeStageConfirmation.js +30 -0
- package/dist/cjs/helpers/writeStageConfirmation.js.map +1 -0
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts +7 -1
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.js +15 -0
- package/dist/cjs/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.js +5 -2
- package/dist/cjs/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregateDB.d.ts +1 -1
- package/dist/cjs/tools/mongodb/read/aggregateDB.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregateDB.js +5 -2
- package/dist/cjs/tools/mongodb/read/aggregateDB.js.map +1 -1
- package/dist/cjs/tools/tool.d.ts +22 -11
- package/dist/cjs/tools/tool.d.ts.map +1 -1
- package/dist/cjs/tools/tool.js +50 -55
- package/dist/cjs/tools/tool.js.map +1 -1
- package/dist/esm/common/errors.d.ts +2 -1
- package/dist/esm/common/errors.d.ts.map +1 -1
- package/dist/esm/common/errors.js +1 -0
- package/dist/esm/common/errors.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/mqlGuards.d.ts +28 -0
- package/dist/esm/helpers/mqlGuards.d.ts.map +1 -1
- package/dist/esm/helpers/mqlGuards.js +74 -1
- package/dist/esm/helpers/mqlGuards.js.map +1 -1
- package/dist/esm/helpers/writeStageConfirmation.d.ts +12 -0
- package/dist/esm/helpers/writeStageConfirmation.d.ts.map +1 -0
- package/dist/esm/helpers/writeStageConfirmation.js +27 -0
- package/dist/esm/helpers/writeStageConfirmation.js.map +1 -0
- package/dist/esm/tools/mongodb/mongodbTool.d.ts +7 -1
- package/dist/esm/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.js +15 -0
- package/dist/esm/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.d.ts +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.js +6 -3
- package/dist/esm/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregateDB.d.ts +1 -1
- package/dist/esm/tools/mongodb/read/aggregateDB.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregateDB.js +6 -3
- package/dist/esm/tools/mongodb/read/aggregateDB.js.map +1 -1
- package/dist/esm/tools/tool.d.ts +22 -11
- package/dist/esm/tools/tool.d.ts.map +1 -1
- package/dist/esm/tools/tool.js +50 -55
- package/dist/esm/tools/tool.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -325,6 +325,12 @@ Create or edit your OpenCode config file (`~/.config/opencode/opencode.json` or
|
|
|
325
325
|
|
|
326
326
|
For more information about configuring OpenCode as an MCP client, including the expected syntax and options, see the [OpenCode MCP servers documentation](https://opencode.ai/docs/mcp-servers/).
|
|
327
327
|
|
|
328
|
+
#### Option 8: Connect to the Remote MCP Server
|
|
329
|
+
|
|
330
|
+
To connect to the hosted MongoDB Atlas Remote MCP server, use the [`mongodb-atlas-mcp-remote`](packages/mongodb-atlas-mcp-remote/README.md) package.
|
|
331
|
+
|
|
332
|
+
See the [package README](packages/mongodb-atlas-mcp-remote/README.md) for setup and client-specific configuration examples.
|
|
333
|
+
|
|
328
334
|
## 🛠️ Supported Tools
|
|
329
335
|
|
|
330
336
|
### Tool List
|
|
@@ -528,7 +534,11 @@ If your client supports [elicitation](https://modelcontextprotocol.io/specificat
|
|
|
528
534
|
|
|
529
535
|
When a tool is marked as requiring confirmation, the server will send an elicitation request to the client. The client with elicitation support will then prompt the user for confirmation and send the response back to the server. If the client does not support elicitation, the tool will execute without confirmation.
|
|
530
536
|
|
|
531
|
-
You can set the `confirmationRequiredTools` configuration option to specify the names of tools which require confirmation. By default, the following tools have this setting enabled: `drop-database`, `drop-collection`, `delete-many`, `atlas-create-db-user`, `atlas-create-access-list`.
|
|
537
|
+
You can set the `confirmationRequiredTools` configuration option to specify the names of tools which require confirmation. By default, the following tools have this setting enabled: `drop-database`, `drop-collection`, `delete-many`, `drop-index`, `atlas-create-db-user`, `atlas-create-access-list`, `atlas-streams-manage`, `atlas-streams-teardown`.
|
|
538
|
+
|
|
539
|
+
In addition, the `aggregate` and `aggregate-db` tools always request confirmation before running a pipeline that contains a `$out` or `$merge` stage, regardless of whether they appear in `confirmationRequiredTools`. Those stages write to a collection — `$out` replaces its contents entirely — so this confirmation names the affected collection and what will happen to it. Pipelines without a write stage are not confirmed.
|
|
540
|
+
|
|
541
|
+
Adding either tool to `confirmationRequiredTools` is broader: every call is then confirmed up front with the standard tool-level message, and a write stage does not raise a second prompt.
|
|
532
542
|
|
|
533
543
|
#### Read-Only Mode
|
|
534
544
|
|
|
@@ -8,7 +8,8 @@ export declare enum ErrorCodes {
|
|
|
8
8
|
AtlasVectorSearchInvalidQuery = 1000007,
|
|
9
9
|
InvalidPipeline = 1000008,
|
|
10
10
|
ForbiddenServerSideJS = 1000009,
|
|
11
|
-
UnknownConnectionId = 1000010
|
|
11
|
+
UnknownConnectionId = 1000010,
|
|
12
|
+
ConfirmationDeclined = 1000011
|
|
12
13
|
}
|
|
13
14
|
export declare class MongoDBError<ErrorCode extends ErrorCodes = ErrorCodes> extends Error {
|
|
14
15
|
code: ErrorCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IAClB,qBAAqB,UAAY;IACjC,6BAA6B,UAAY;IACzC,iBAAiB,UAAY;IAC7B,uBAAuB,UAAY;IACnC,uBAAuB,UAAY;IACnC,8BAA8B,UAAY;IAC1C,6BAA6B,UAAY;IACzC,eAAe,UAAY;IAC3B,qBAAqB,UAAY;IACjC,mBAAmB,UAAY;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IAClB,qBAAqB,UAAY;IACjC,6BAA6B,UAAY;IACzC,iBAAiB,UAAY;IAC7B,uBAAuB,UAAY;IACnC,uBAAuB,UAAY;IACnC,8BAA8B,UAAY;IAC1C,6BAA6B,UAAY;IACzC,eAAe,UAAY;IAC3B,qBAAqB,UAAY;IACjC,mBAAmB,UAAY;IAC/B,oBAAoB,UAAY;CACnC;AAED,qBAAa,YAAY,CAAC,SAAS,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,KAAK;IAEnE,IAAI,EAAE,SAAS;gBAAf,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM;CAItB"}
|
|
@@ -13,6 +13,7 @@ var ErrorCodes;
|
|
|
13
13
|
ErrorCodes[ErrorCodes["InvalidPipeline"] = 1000008] = "InvalidPipeline";
|
|
14
14
|
ErrorCodes[ErrorCodes["ForbiddenServerSideJS"] = 1000009] = "ForbiddenServerSideJS";
|
|
15
15
|
ErrorCodes[ErrorCodes["UnknownConnectionId"] = 1000010] = "UnknownConnectionId";
|
|
16
|
+
ErrorCodes[ErrorCodes["ConfirmationDeclined"] = 1000011] = "ConfirmationDeclined";
|
|
16
17
|
})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));
|
|
17
18
|
class MongoDBError extends Error {
|
|
18
19
|
constructor(code, message) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAYX;AAZD,WAAY,UAAU;IAClB,mFAAiC,CAAA;IACjC,mGAAyC,CAAA;IACzC,2EAA6B,CAAA;IAC7B,uFAAmC,CAAA;IACnC,uFAAmC,CAAA;IACnC,qGAA0C,CAAA;IAC1C,mGAAyC,CAAA;IACzC,uEAA2B,CAAA;IAC3B,mFAAiC,CAAA;IACjC,+EAA+B,CAAA;IAC/B,iFAAgC,CAAA;AACpC,CAAC,EAZW,UAAU,0BAAV,UAAU,QAYrB;AAED,MAAa,YAAwD,SAAQ,KAAK;IAC9E,YACW,IAAe,EACtB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAW;IAI1B,CAAC;CACJ;AAPD,oCAOC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.packageInfo = void 0;
|
|
4
4
|
// This file was generated by scripts/updatePackageVersion.ts - Do not edit it manually.
|
|
5
5
|
exports.packageInfo = {
|
|
6
|
-
version: "2.
|
|
6
|
+
version: "2.1.0",
|
|
7
7
|
mcpServerName: "MongoDB MCP Server",
|
|
8
8
|
engines: {
|
|
9
9
|
node: "^20.19.0 || ^22.13.0 || >= 24.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageInfo.js","sourceRoot":"","sources":["../../../src/common/packageInfo.ts"],"names":[],"mappings":";;;AAAA,wFAAwF;AAC3E,QAAA,WAAW,GAIpB;IACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"packageInfo.js","sourceRoot":"","sources":["../../../src/common/packageInfo.ts"],"names":[],"mappings":";;;AAAA,wFAAwF;AAC3E,QAAA,WAAW,GAIpB;IACA,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,oBAAoB;IACnC,OAAO,EAAE;QACL,IAAI,EAAE,mCAAmC;KAC5C;CACJ,CAAC"}
|
|
@@ -9,4 +9,32 @@ export declare function assertNoServerSideJS(value: unknown): void;
|
|
|
9
9
|
* i.e. it is a `$out` or `$merge` stage.
|
|
10
10
|
*/
|
|
11
11
|
export declare function isWriteStage(stage: Record<string, unknown>): boolean;
|
|
12
|
+
/** The collection a write stage targets, along with how it will write to it. */
|
|
13
|
+
export type WriteStageTarget = {
|
|
14
|
+
namespace: string | undefined;
|
|
15
|
+
} & ({
|
|
16
|
+
operator: "$out";
|
|
17
|
+
} | {
|
|
18
|
+
operator: "$merge";
|
|
19
|
+
/** The `whenMatched` mode, when the stage names one of the documented modes. */
|
|
20
|
+
whenMatched?: string;
|
|
21
|
+
/** The `whenNotMatched` mode, when the stage names one of the documented modes. */
|
|
22
|
+
whenNotMatched?: string;
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Describes the collections that the write stages of a pipeline target, so that
|
|
26
|
+
* the user can be told what a `$out` or `$merge` is about to affect before it
|
|
27
|
+
* runs.
|
|
28
|
+
*
|
|
29
|
+
* Only top-level stages are inspected, matching {@link isWriteStage}: `$out` and
|
|
30
|
+
* `$merge` are not permitted inside sub-pipelines. MongoDB also requires them to
|
|
31
|
+
* be the last stage, so in practice at most one target is returned; the array
|
|
32
|
+
* shape means a malformed pipeline is still described in full rather than
|
|
33
|
+
* partially.
|
|
34
|
+
*
|
|
35
|
+
* @param pipeline - The aggregation pipeline to inspect.
|
|
36
|
+
* @param defaultDatabase - The database the aggregation runs against, used to
|
|
37
|
+
* qualify stages that name only a collection.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getWriteStageTargets(pipeline: Record<string, unknown>[], defaultDatabase: string): WriteStageTarget[];
|
|
12
40
|
//# sourceMappingURL=mqlGuards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqlGuards.d.ts","sourceRoot":"","sources":["../../../src/helpers/mqlGuards.ts"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAUzD;
|
|
1
|
+
{"version":3,"file":"mqlGuards.d.ts","sourceRoot":"","sources":["../../../src/helpers/mqlGuards.ts"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAUzD;AAkBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEpE;AAED,gFAAgF;AAChF,MAAM,MAAM,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,CAC7D;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IACI,QAAQ,EAAE,QAAQ,CAAC;IACnB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,CACN,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA4BrH"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assertNoServerSideJS = assertNoServerSideJS;
|
|
4
4
|
exports.isWriteStage = isWriteStage;
|
|
5
|
+
exports.getWriteStageTargets = getWriteStageTargets;
|
|
5
6
|
const errors_js_1 = require("../common/errors.js");
|
|
6
7
|
/**
|
|
7
8
|
* Operators that execute server-side JavaScript. These can be used to run
|
|
@@ -43,11 +44,84 @@ function assertNoServerSideJS(value) {
|
|
|
43
44
|
throw new errors_js_1.MongoDBError(errors_js_1.ErrorCodes.ForbiddenServerSideJS, `The use of server-side JavaScript operators (such as ${SERVER_SIDE_JS_OPERATORS.join(", ")}) is disabled. The "${operator}" operator is not allowed. To enable it, set the "disableServerSideJs" configuration option to false.`);
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* The write operator of an aggregation stage, or `undefined` when the stage
|
|
49
|
+
* does not write to a collection.
|
|
50
|
+
*/
|
|
51
|
+
function writeStageOperator(stage) {
|
|
52
|
+
if ("$out" in stage) {
|
|
53
|
+
return "$out";
|
|
54
|
+
}
|
|
55
|
+
if ("$merge" in stage) {
|
|
56
|
+
return "$merge";
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
46
60
|
/**
|
|
47
61
|
* Returns true when the given aggregation stage writes data to a collection,
|
|
48
62
|
* i.e. it is a `$out` or `$merge` stage.
|
|
49
63
|
*/
|
|
50
64
|
function isWriteStage(stage) {
|
|
51
|
-
return
|
|
65
|
+
return writeStageOperator(stage) !== undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Describes the collections that the write stages of a pipeline target, so that
|
|
69
|
+
* the user can be told what a `$out` or `$merge` is about to affect before it
|
|
70
|
+
* runs.
|
|
71
|
+
*
|
|
72
|
+
* Only top-level stages are inspected, matching {@link isWriteStage}: `$out` and
|
|
73
|
+
* `$merge` are not permitted inside sub-pipelines. MongoDB also requires them to
|
|
74
|
+
* be the last stage, so in practice at most one target is returned; the array
|
|
75
|
+
* shape means a malformed pipeline is still described in full rather than
|
|
76
|
+
* partially.
|
|
77
|
+
*
|
|
78
|
+
* @param pipeline - The aggregation pipeline to inspect.
|
|
79
|
+
* @param defaultDatabase - The database the aggregation runs against, used to
|
|
80
|
+
* qualify stages that name only a collection.
|
|
81
|
+
*/
|
|
82
|
+
function getWriteStageTargets(pipeline, defaultDatabase) {
|
|
83
|
+
const targets = [];
|
|
84
|
+
for (const stage of pipeline) {
|
|
85
|
+
switch (writeStageOperator(stage)) {
|
|
86
|
+
case "$out":
|
|
87
|
+
targets.push({ operator: "$out", namespace: resolveNamespace(stage.$out, defaultDatabase) });
|
|
88
|
+
break;
|
|
89
|
+
case "$merge": {
|
|
90
|
+
// The stage is either the target itself (`$merge: "coll"`) or a
|
|
91
|
+
// document describing it. `whenMatched` also accepts a custom
|
|
92
|
+
// update pipeline, which has no concise description, so only the
|
|
93
|
+
// documented string modes are reported.
|
|
94
|
+
const spec = isRecord(stage.$merge) ? stage.$merge : undefined;
|
|
95
|
+
targets.push({
|
|
96
|
+
operator: "$merge",
|
|
97
|
+
namespace: resolveNamespace(spec ? spec.into : stage.$merge, defaultDatabase),
|
|
98
|
+
...(typeof spec?.whenMatched === "string" ? { whenMatched: spec.whenMatched } : {}),
|
|
99
|
+
...(typeof spec?.whenNotMatched === "string" ? { whenNotMatched: spec.whenNotMatched } : {}),
|
|
100
|
+
});
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case undefined:
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return targets;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Resolves the target of a `$out` stage or the `into` of a `$merge` stage to a
|
|
111
|
+
* fully qualified namespace. Returns `undefined` for any other shape, such as
|
|
112
|
+
* the `{ s3: ... }` target supported by Atlas Data Federation.
|
|
113
|
+
*/
|
|
114
|
+
function resolveNamespace(target, defaultDatabase) {
|
|
115
|
+
if (typeof target === "string") {
|
|
116
|
+
return `${defaultDatabase}.${target}`;
|
|
117
|
+
}
|
|
118
|
+
if (isRecord(target) && typeof target.coll === "string") {
|
|
119
|
+
const database = typeof target.db === "string" ? target.db : defaultDatabase;
|
|
120
|
+
return `${database}.${target.coll}`;
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
function isRecord(value) {
|
|
125
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
52
126
|
}
|
|
53
127
|
//# sourceMappingURL=mqlGuards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqlGuards.js","sourceRoot":"","sources":["../../../src/helpers/mqlGuards.ts"],"names":[],"mappings":";;AA2CA,oDAUC;
|
|
1
|
+
{"version":3,"file":"mqlGuards.js","sourceRoot":"","sources":["../../../src/helpers/mqlGuards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WriteStageTarget } from "./mqlGuards.js";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the message shown to the user before an aggregation containing a
|
|
4
|
+
* `$out` or `$merge` stage runs. The two operators differ in blast radius --
|
|
5
|
+
* `$out` replaces a collection wholesale while `$merge` modifies an existing
|
|
6
|
+
* one -- so each is described in its own terms, naming the affected namespace
|
|
7
|
+
* whenever it could be resolved.
|
|
8
|
+
*
|
|
9
|
+
* @param targets - The write stage targets, as returned by `getWriteStageTargets`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildWriteStageConfirmationMessage(targets: WriteStageTarget[]): string;
|
|
12
|
+
//# sourceMappingURL=writeStageConfirmation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeStageConfirmation.d.ts","sourceRoot":"","sources":["../../../src/helpers/writeStageConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAEtF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildWriteStageConfirmationMessage = buildWriteStageConfirmationMessage;
|
|
4
|
+
/**
|
|
5
|
+
* Builds the message shown to the user before an aggregation containing a
|
|
6
|
+
* `$out` or `$merge` stage runs. The two operators differ in blast radius --
|
|
7
|
+
* `$out` replaces a collection wholesale while `$merge` modifies an existing
|
|
8
|
+
* one -- so each is described in its own terms, naming the affected namespace
|
|
9
|
+
* whenever it could be resolved.
|
|
10
|
+
*
|
|
11
|
+
* @param targets - The write stage targets, as returned by `getWriteStageTargets`.
|
|
12
|
+
*/
|
|
13
|
+
function buildWriteStageConfirmationMessage(targets) {
|
|
14
|
+
return `This aggregation contains ${targets.map(describeTarget).join(" and ")}. Proceed?`;
|
|
15
|
+
}
|
|
16
|
+
function describeTarget(target) {
|
|
17
|
+
const collection = target.namespace ? `\`${target.namespace}\`` : "its target collection";
|
|
18
|
+
switch (target.operator) {
|
|
19
|
+
case "$out":
|
|
20
|
+
return `a \`$out\` stage that will replace the entire contents of ${collection} with the pipeline output, permanently discarding any documents already there`;
|
|
21
|
+
case "$merge": {
|
|
22
|
+
const modes = [
|
|
23
|
+
target.whenMatched !== undefined ? `whenMatched: ${target.whenMatched}` : undefined,
|
|
24
|
+
target.whenNotMatched !== undefined ? `whenNotMatched: ${target.whenNotMatched}` : undefined,
|
|
25
|
+
].filter((mode) => mode !== undefined);
|
|
26
|
+
return `a \`$merge\` stage that will write the pipeline output into ${collection}, modifying data already in that collection${modes.length > 0 ? ` (${modes.join(", ")})` : ""}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=writeStageConfirmation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeStageConfirmation.js","sourceRoot":"","sources":["../../../src/helpers/writeStageConfirmation.ts"],"names":[],"mappings":";;AAWA,gFAEC;AAXD;;;;;;;;GAQG;AACH,SAAgB,kCAAkC,CAAC,OAA2B;IAC1E,OAAO,6BAA6B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9F,CAAC;AAED,SAAS,cAAc,CAAC,MAAwB;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAE1F,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,MAAM;YACP,OAAO,6DAA6D,UAAU,+EAA+E,CAAC;QAClK,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG;gBACV,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;gBACnF,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS;aAC/F,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAEvC,OAAO,+DAA+D,UAAU,8CAA8C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACrL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import type { ToolArgs, ToolCategory } from "../tool.js";
|
|
2
|
+
import type { ToolArgs, ToolCategory, ToolExecutionContext } from "../tool.js";
|
|
3
3
|
import { ToolBase } from "../tool.js";
|
|
4
4
|
import type { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver";
|
|
5
5
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
6
6
|
import type { ConnectionEntry } from "../../common/connectionRegistry.js";
|
|
7
7
|
import type { Server } from "../../server.js";
|
|
8
8
|
import type { ConnectionMetadata } from "../../telemetry/types.js";
|
|
9
|
+
import { type WriteStageTarget } from "../../helpers/mqlGuards.js";
|
|
9
10
|
export declare const DBOperationArgs: {
|
|
10
11
|
database: z.ZodString;
|
|
11
12
|
};
|
|
@@ -57,6 +58,11 @@ export declare abstract class MongoDBToolBase extends ToolBase {
|
|
|
57
58
|
* and projection for a find), since each is validated independently.
|
|
58
59
|
*/
|
|
59
60
|
protected assertMqlIsAllowed(...values: (Record<string, unknown> | Record<string, unknown>[] | undefined)[]): void;
|
|
61
|
+
/**
|
|
62
|
+
* Asks the user to confirm the write stages of an aggregation pipeline,
|
|
63
|
+
* throwing when they decline so that the pipeline never runs.
|
|
64
|
+
*/
|
|
65
|
+
protected confirmWriteStages(targets: WriteStageTarget[], context: ToolExecutionContext): Promise<void>;
|
|
60
66
|
private assertSingleMqlValueIsAllowed;
|
|
61
67
|
/**
|
|
62
68
|
* The connectionId description varies by whether a connection string is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodbTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAiB,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mongodbTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAiB,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIvG,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AASF,eAAO,MAAM,gBAAgB;;CAE5B,CAAC;AAQF,8BAAsB,eAAgB,SAAQ,QAAQ;IAClD,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAa;IAE1C,SAAS,KAAK,qBAAqB,IAAI,OAAO,CAI7C;IAED;;;;OAIG;cACa,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI3F,iGAAiG;cACjF,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;cAItF,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;cAKzD,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1E;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAOjG;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI;IAMlH;;;OAGG;cACa,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7G,OAAO,CAAC,6BAA6B;IAgCrC;;;OAGG;cACgB,gBAAgB,IAAI,MAAM;IAOtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;cAaxB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAoD3G;;;;;;;;OAQG;cACa,wBAAwB,CACpC,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAErC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,cAAc,CAAA;KAAE,GACvC,OAAO,CAAC,kBAAkB,CAAC;CAOjC"}
|
|
@@ -5,6 +5,7 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const tool_js_1 = require("../tool.js");
|
|
6
6
|
const errors_js_1 = require("../../common/errors.js");
|
|
7
7
|
const mqlGuards_js_1 = require("../../helpers/mqlGuards.js");
|
|
8
|
+
const writeStageConfirmation_js_1 = require("../../helpers/writeStageConfirmation.js");
|
|
8
9
|
const constants_js_1 = require("../../helpers/constants.js");
|
|
9
10
|
exports.DBOperationArgs = {
|
|
10
11
|
database: zod_1.z.string().describe("Database name"),
|
|
@@ -87,6 +88,19 @@ class MongoDBToolBase extends tool_js_1.ToolBase {
|
|
|
87
88
|
this.assertSingleMqlValueIsAllowed(value);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Asks the user to confirm the write stages of an aggregation pipeline,
|
|
93
|
+
* throwing when they decline so that the pipeline never runs.
|
|
94
|
+
*/
|
|
95
|
+
async confirmWriteStages(targets, context) {
|
|
96
|
+
if (this.requiresConfirmation()) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (await this.requestConfirmation((0, writeStageConfirmation_js_1.buildWriteStageConfirmationMessage)(targets), context)) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
throw new errors_js_1.MongoDBError(errors_js_1.ErrorCodes.ConfirmationDeclined, "User did not confirm the write stages of the aggregation pipeline so the aggregation was not performed.");
|
|
103
|
+
}
|
|
90
104
|
assertSingleMqlValueIsAllowed(value) {
|
|
91
105
|
if (this.config.disableServerSideJs) {
|
|
92
106
|
(0, mqlGuards_js_1.assertNoServerSideJS)(value);
|
|
@@ -152,6 +166,7 @@ class MongoDBToolBase extends tool_js_1.ToolBase {
|
|
|
152
166
|
}
|
|
153
167
|
return super.handleError(error, args);
|
|
154
168
|
}
|
|
169
|
+
case errors_js_1.ErrorCodes.ConfirmationDeclined:
|
|
155
170
|
case errors_js_1.ErrorCodes.ForbiddenCollscan:
|
|
156
171
|
return {
|
|
157
172
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodbTool.js","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,wCAAsC;AAGtC,sDAAkE;AAIlE,
|
|
1
|
+
{"version":3,"file":"mongodbTool.js","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export declare class AggregateTool extends MongoDBToolBase {
|
|
|
77
77
|
"tool.responseBytesLimit": "tool.responseBytesLimit";
|
|
78
78
|
}>>;
|
|
79
79
|
};
|
|
80
|
-
protected execute({ connectionId, database, collection, pipeline, responseBytesLimit }: ToolArgs<typeof this.argsShape>,
|
|
80
|
+
protected execute({ connectionId, database, collection, pipeline, responseBytesLimit }: ToolArgs<typeof this.argsShape>, context: ToolExecutionContext): Promise<ToolResult<typeof this.outputSchema>>;
|
|
81
81
|
private safeCloseCursor;
|
|
82
82
|
private assertOnlyUsesPermittedStages;
|
|
83
83
|
private countAggregationResultDocuments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAuC,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAuB/F,eAAO,MAAM,mCAAmC,kvKAiG/C,CAAC;AAWF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEzB,CAAC;AAEF,qBAAa,aAAc,SAAQ,eAAe;IAC9C,MAAM,CAAC,QAAQ,SAAe;IACvB,WAAW,SAAqD;IAChE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAWd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;IAE7B,YAAY;;;;;;;;MAAyB;cAErC,OAAO,CACnB,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACrG,
|
|
1
|
+
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAuC,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAuB/F,eAAO,MAAM,mCAAmC,kvKAiG/C,CAAC;AAWF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEzB,CAAC;AAEF,qBAAa,aAAc,SAAQ,eAAe;IAC9C,MAAM,CAAC,QAAQ,SAAe;IACvB,WAAW,SAAqD;IAChE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAWd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;IAE7B,YAAY;;;;;;;;MAAyB;cAErC,OAAO,CACnB,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACrG,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;YAyJlC,eAAe;IAY7B,OAAO,CAAC,6BAA6B;YAkBvB,+BAA+B;YAuC/B,uBAAuB;IA+CrC,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,aAAa;CAGxB"}
|
|
@@ -139,7 +139,8 @@ class AggregateTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
139
139
|
};
|
|
140
140
|
this.outputSchema = AggregateOutputSchema;
|
|
141
141
|
}
|
|
142
|
-
async execute({ connectionId, database, collection, pipeline, responseBytesLimit },
|
|
142
|
+
async execute({ connectionId, database, collection, pipeline, responseBytesLimit }, context) {
|
|
143
|
+
const { signal } = context;
|
|
143
144
|
let aggregationCursor = undefined;
|
|
144
145
|
try {
|
|
145
146
|
const provider = await this.resolveConnection(connectionId);
|
|
@@ -199,7 +200,9 @@ class AggregateTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
199
200
|
let documents;
|
|
200
201
|
let count;
|
|
201
202
|
let appliedLimits = [];
|
|
202
|
-
|
|
203
|
+
const writeStageTargets = (0, mqlGuards_js_1.getWriteStageTargets)(pipeline, database);
|
|
204
|
+
if (writeStageTargets.length > 0) {
|
|
205
|
+
await this.confirmWriteStages(writeStageTargets, context);
|
|
203
206
|
// This is a write pipeline, so special-case it and don't attempt to apply limits or caps
|
|
204
207
|
aggregationCursor = provider.aggregate(database, collection, pipeline, {
|
|
205
208
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGxB,sDAAyF;AAEzF,2CAAoD;AACpD,kEAAiE;AAEjE,yDAAqE;AACrE,kGAAiG;AACjG,wFAAkF;AAClF,gEAMuC;AACvC,+DAAyD;AACzD,4DAA4E;AAC5E,8HAGsE;AACtE,
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export declare class AggregateDBTool extends MongoDBToolBase {
|
|
|
23
23
|
"tool.responseBytesLimit": "tool.responseBytesLimit";
|
|
24
24
|
}>>;
|
|
25
25
|
};
|
|
26
|
-
protected execute({ connectionId, database, pipeline, responseBytesLimit }: ToolArgs<typeof this.argsShape>,
|
|
26
|
+
protected execute({ connectionId, database, pipeline, responseBytesLimit }: ToolArgs<typeof this.argsShape>, context: ToolExecutionContext): Promise<ToolResult<typeof this.outputSchema>>;
|
|
27
27
|
private safeCloseCursor;
|
|
28
28
|
private assertOnlyUsesPermittedStages;
|
|
29
29
|
private countAggregationResultDocuments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateDB.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAqC,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA2B/F,eAAO,MAAM,aAAa;;CAOzB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,eAAe;IAChD,MAAM,CAAC,QAAQ,SAAkB;IAC1B,WAAW,SAAmD;IAC9D,SAAS;;;;;MAWd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;IAE7B,YAAY;;;;;;;;MAA2B;cAEvC,OAAO,CACnB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACzF,
|
|
1
|
+
{"version":3,"file":"aggregateDB.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAqC,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA2B/F,eAAO,MAAM,aAAa;;CAOzB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,eAAe;IAChD,MAAM,CAAC,QAAQ,SAAkB;IAC1B,WAAW,SAAmD;IAC9D,SAAS;;;;;MAWd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;IAE7B,YAAY;;;;;;;;MAA2B;cAEvC,OAAO,CACnB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACzF,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;YAuFlC,eAAe;IAY7B,OAAO,CAAC,6BAA6B;YAYvB,+BAA+B;IAqC7C,OAAO,CAAC,eAAe;CA0B1B"}
|
|
@@ -42,7 +42,8 @@ class AggregateDBTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
42
42
|
};
|
|
43
43
|
this.outputSchema = AggregateDBOutputSchema;
|
|
44
44
|
}
|
|
45
|
-
async execute({ connectionId, database, pipeline, responseBytesLimit },
|
|
45
|
+
async execute({ connectionId, database, pipeline, responseBytesLimit }, context) {
|
|
46
|
+
const { signal } = context;
|
|
46
47
|
let aggregationCursor = undefined;
|
|
47
48
|
try {
|
|
48
49
|
const provider = await this.resolveConnection(connectionId);
|
|
@@ -51,7 +52,9 @@ class AggregateDBTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
51
52
|
let documents;
|
|
52
53
|
let aggResultsCount;
|
|
53
54
|
let appliedLimits = [];
|
|
54
|
-
|
|
55
|
+
const writeStageTargets = (0, mqlGuards_js_1.getWriteStageTargets)(pipeline, database);
|
|
56
|
+
if (writeStageTargets.length > 0) {
|
|
57
|
+
await this.confirmWriteStages(writeStageTargets, context);
|
|
55
58
|
// This is a write pipeline, so special-case it and don't attempt to apply limits or caps
|
|
56
59
|
aggregationCursor = provider.aggregateDb(database, pipeline, {
|
|
57
60
|
...this.getOperationOptions(signal),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateDB.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGxB,sDAAuF;AAEvF,2CAAoD;AAEpD,yDAAqE;AACrE,kGAAiG;AACjG,wFAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"aggregateDB.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/tools/tool.d.ts
CHANGED
|
@@ -27,7 +27,16 @@ type ServerRequestHandlerExtra = RequestHandlerExtra<ServerRequest, ServerNotifi
|
|
|
27
27
|
* is called manually; `requestInfo` is additionally only available when
|
|
28
28
|
* running atop StreamableHttpTransport.
|
|
29
29
|
*/
|
|
30
|
-
export type ToolExecutionContext = Pick<ServerRequestHandlerExtra, "signal"> & Partial<Pick<ServerRequestHandlerExtra, "_meta" | "requestId" | "requestInfo" | "sendNotification"
|
|
30
|
+
export type ToolExecutionContext = Pick<ServerRequestHandlerExtra, "signal"> & Partial<Pick<ServerRequestHandlerExtra, "_meta" | "requestId" | "requestInfo" | "sendNotification">> & {
|
|
31
|
+
/**
|
|
32
|
+
* Total time spent waiting for the user to answer elicitation requests
|
|
33
|
+
* raised while handling this call. Accumulated by
|
|
34
|
+
* `ToolBase.requestConfirmation` and subtracted from the tool execution
|
|
35
|
+
* duration metric, so that the user's think-time is not reported as
|
|
36
|
+
* time the tool spent working.
|
|
37
|
+
*/
|
|
38
|
+
elicitationDurationMs?: number;
|
|
39
|
+
};
|
|
31
40
|
export type ToolResult<OutputSchema extends ZodRawShape | undefined = undefined> = OutputSchema extends ZodRawShape ? StructuredToolResult<OutputSchema> : {
|
|
32
41
|
content: CallToolResult["content"];
|
|
33
42
|
isError?: boolean;
|
|
@@ -435,20 +444,22 @@ export declare abstract class ToolBase<TUserConfig extends UserConfig = UserConf
|
|
|
435
444
|
/** Checks if the tool requires elicitation */
|
|
436
445
|
requiresConfirmation(): boolean;
|
|
437
446
|
/**
|
|
438
|
-
*
|
|
439
|
-
*
|
|
447
|
+
* Asks the user to confirm an operation, resolving to `true` when they
|
|
448
|
+
* accept and `false` when they decline.
|
|
440
449
|
*
|
|
441
|
-
* This
|
|
442
|
-
*
|
|
443
|
-
*
|
|
450
|
+
* This is automatically called by `invoke` for confirmationRequired tools.
|
|
451
|
+
* Other tools can call it at any point of their execution, which matters when
|
|
452
|
+
* the decision depends on the arguments or needs to happen after some preliminary work.
|
|
444
453
|
*
|
|
445
|
-
*
|
|
454
|
+
* Resolves to `true` without prompting when the client does not support
|
|
455
|
+
* elicitation, matching how confirmation-required tools behave there.
|
|
456
|
+
*
|
|
457
|
+
* @param message - The message to display to the user.
|
|
446
458
|
* @param context - The tool execution context, used to relate the
|
|
447
|
-
* confirmation request to the in-flight tool call
|
|
448
|
-
*
|
|
449
|
-
* required, `false` otherwise
|
|
459
|
+
* confirmation request to the in-flight tool call and to record how long the
|
|
460
|
+
* user took to answer.
|
|
450
461
|
*/
|
|
451
|
-
|
|
462
|
+
protected requestConfirmation(message: string, context: ToolExecutionContext): Promise<boolean>;
|
|
452
463
|
/**
|
|
453
464
|
* Resolves the request id that elicitation requests should be related to.
|
|
454
465
|
*
|