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
package/dist/esm/server.js
CHANGED
|
@@ -23,11 +23,15 @@ export class Server {
|
|
|
23
23
|
this.connectionErrorHandler = connectionErrorHandler;
|
|
24
24
|
}
|
|
25
25
|
async connect(transport) {
|
|
26
|
-
|
|
26
|
+
await this.validateConfig();
|
|
27
|
+
// Register resources after the server is initialized so they can listen to events like
|
|
27
28
|
// connection events.
|
|
28
29
|
this.registerResources();
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
this.mcpServer.server.registerCapabilities({
|
|
31
|
+
logging: {},
|
|
32
|
+
resources: { listChanged: true, subscribe: true },
|
|
33
|
+
instructions: this.getInstructions(),
|
|
34
|
+
});
|
|
31
35
|
// TODO: Eventually we might want to make tools reactive too instead of relying on custom logic.
|
|
32
36
|
this.registerTools();
|
|
33
37
|
// This is a workaround for an issue we've seen with some models, where they'll see that everything in the `arguments`
|
|
@@ -78,15 +82,15 @@ export class Server {
|
|
|
78
82
|
context: "server",
|
|
79
83
|
message: `Server with version ${packageInfo.version} started with transport ${transport.constructor.name} and agent runner ${JSON.stringify(this.session.mcpClient)}`,
|
|
80
84
|
});
|
|
81
|
-
this.
|
|
85
|
+
this.emitServerTelemetryEvent("start", Date.now() - this.startTime);
|
|
82
86
|
};
|
|
83
87
|
this.mcpServer.server.onclose = () => {
|
|
84
88
|
const closeTime = Date.now();
|
|
85
|
-
this.
|
|
89
|
+
this.emitServerTelemetryEvent("stop", Date.now() - closeTime);
|
|
86
90
|
};
|
|
87
91
|
this.mcpServer.server.onerror = (error) => {
|
|
88
92
|
const closeTime = Date.now();
|
|
89
|
-
this.
|
|
93
|
+
this.emitServerTelemetryEvent("stop", Date.now() - closeTime, error);
|
|
90
94
|
};
|
|
91
95
|
await this.mcpServer.connect(transport);
|
|
92
96
|
}
|
|
@@ -99,16 +103,16 @@ export class Server {
|
|
|
99
103
|
this.mcpServer.sendResourceListChanged();
|
|
100
104
|
}
|
|
101
105
|
sendResourceUpdated(uri) {
|
|
106
|
+
this.session.logger.info({
|
|
107
|
+
id: LogId.resourceUpdateFailure,
|
|
108
|
+
context: "resources",
|
|
109
|
+
message: `Resource updated: ${uri}`,
|
|
110
|
+
});
|
|
102
111
|
if (this.subscriptions.has(uri)) {
|
|
103
112
|
void this.mcpServer.server.sendResourceUpdated({ uri });
|
|
104
113
|
}
|
|
105
114
|
}
|
|
106
|
-
|
|
107
|
-
* Emits a server event
|
|
108
|
-
* @param command - The server command (e.g., "start", "stop", "register", "deregister")
|
|
109
|
-
* @param additionalProperties - Additional properties specific to the event
|
|
110
|
-
*/
|
|
111
|
-
emitServerEvent(command, commandDuration, error) {
|
|
115
|
+
emitServerTelemetryEvent(command, commandDuration, error) {
|
|
112
116
|
const event = {
|
|
113
117
|
timestamp: new Date().toISOString(),
|
|
114
118
|
source: "mdbmcp",
|
|
@@ -169,6 +173,11 @@ export class Server {
|
|
|
169
173
|
// Validate API client credentials
|
|
170
174
|
if (this.userConfig.apiClientId && this.userConfig.apiClientSecret) {
|
|
171
175
|
try {
|
|
176
|
+
if (!this.userConfig.apiBaseUrl.startsWith("https://")) {
|
|
177
|
+
const message = "Failed to validate MongoDB Atlas the credentials from config: apiBaseUrl must start with https://";
|
|
178
|
+
console.error(message);
|
|
179
|
+
throw new Error(message);
|
|
180
|
+
}
|
|
172
181
|
await this.session.apiClient.validateAccessToken();
|
|
173
182
|
}
|
|
174
183
|
catch (error) {
|
|
@@ -180,6 +189,21 @@ export class Server {
|
|
|
180
189
|
}
|
|
181
190
|
}
|
|
182
191
|
}
|
|
192
|
+
getInstructions() {
|
|
193
|
+
let instructions = `
|
|
194
|
+
This is the MongoDB MCP server.
|
|
195
|
+
`;
|
|
196
|
+
if (this.userConfig.connectionString) {
|
|
197
|
+
instructions += `
|
|
198
|
+
This MCP server was configured with a MongoDB connection string, and you can assume that you are connected to a MongoDB cluster.
|
|
199
|
+
`;
|
|
200
|
+
}
|
|
201
|
+
if (this.userConfig.apiClientId && this.userConfig.apiClientSecret) {
|
|
202
|
+
instructions += `
|
|
203
|
+
This MCP server was configured with MongoDB Atlas API credentials.`;
|
|
204
|
+
}
|
|
205
|
+
return instructions;
|
|
206
|
+
}
|
|
183
207
|
async connectToConfigConnectionString() {
|
|
184
208
|
if (this.userConfig.connectionString) {
|
|
185
209
|
try {
|
package/dist/esm/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMtD,OAAO,EACH,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,GAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAatD,MAAM,OAAO,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/esm/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/esm/tools/args.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { EJSON } from "bson";
|
|
2
3
|
const NO_UNICODE_REGEX = /^[\x20-\x7E]*$/;
|
|
3
4
|
export const NO_UNICODE_ERROR = "String cannot contain special characters or Unicode symbols";
|
|
4
5
|
const ALLOWED_USERNAME_CHARACTERS_REGEX = /^[a-zA-Z0-9._-]+$/;
|
|
@@ -44,4 +45,13 @@ export const AtlasArgs = {
|
|
|
44
45
|
.regex(ALLOWED_REGION_CHARACTERS_REGEX, ALLOWED_REGION_CHARACTERS_ERROR),
|
|
45
46
|
password: () => z.string().min(1, "Password is required").max(100, "Password must be 100 characters or less"),
|
|
46
47
|
};
|
|
48
|
+
function toEJSON(value) {
|
|
49
|
+
if (!value) {
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
return EJSON.deserialize(value, { relaxed: false });
|
|
53
|
+
}
|
|
54
|
+
export function zEJSON() {
|
|
55
|
+
return z.object({}).passthrough().transform(toEJSON);
|
|
56
|
+
}
|
|
47
57
|
//# sourceMappingURL=args.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/tools/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAkB,MAAM,KAAK,CAAC;
|
|
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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { MongoDBToolBase } from "../mongodbTool.js";
|
|
3
3
|
import assert from "assert";
|
|
4
|
+
import { LogId } from "../../../common/logger.js";
|
|
4
5
|
const disconnectedSchema = z
|
|
5
6
|
.object({
|
|
6
7
|
connectionString: z.string().describe("MongoDB connection string (in the mongodb:// or mongodb+srv:// format)"),
|
|
@@ -17,7 +18,7 @@ const connectedSchema = z
|
|
|
17
18
|
const connectedName = "switch-connection";
|
|
18
19
|
const disconnectedName = "connect";
|
|
19
20
|
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.";
|
|
20
|
-
const disconnectedDescription = "Connect to a MongoDB instance";
|
|
21
|
+
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.";
|
|
21
22
|
export class ConnectTool extends MongoDBToolBase {
|
|
22
23
|
constructor({ session, config, telemetry, elicitation }) {
|
|
23
24
|
super({ session, config, telemetry, elicitation });
|
|
@@ -60,20 +61,29 @@ export class ConnectTool extends MongoDBToolBase {
|
|
|
60
61
|
return false;
|
|
61
62
|
}
|
|
62
63
|
updateMetadata() {
|
|
64
|
+
let name;
|
|
65
|
+
let description;
|
|
66
|
+
let inputSchema;
|
|
63
67
|
if (this.session.isConnectedToMongoDB) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
inputSchema: connectedSchema,
|
|
68
|
-
});
|
|
68
|
+
name = connectedName;
|
|
69
|
+
description = connectedDescription;
|
|
70
|
+
inputSchema = connectedSchema;
|
|
69
71
|
}
|
|
70
72
|
else {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
inputSchema: disconnectedSchema,
|
|
75
|
-
});
|
|
73
|
+
name = disconnectedName;
|
|
74
|
+
description = disconnectedDescription;
|
|
75
|
+
inputSchema = disconnectedSchema;
|
|
76
76
|
}
|
|
77
|
+
this.session.logger.info({
|
|
78
|
+
id: LogId.updateToolMetadata,
|
|
79
|
+
context: "tool",
|
|
80
|
+
message: `Updating tool metadata to ${name}`,
|
|
81
|
+
});
|
|
82
|
+
this.update?.({
|
|
83
|
+
name,
|
|
84
|
+
description,
|
|
85
|
+
inputSchema,
|
|
86
|
+
});
|
|
77
87
|
}
|
|
78
88
|
}
|
|
79
89
|
//# sourceMappingURL=connect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/connect/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/connect/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,MAAM,kBAAkB,GAAG,CAAC;KACvB,MAAM,CAAC;IACJ,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;CAClH,CAAC;KACD,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AAEpD,MAAM,eAAe,GAAG,CAAC;KACpB,MAAM,CAAC;IACJ,gBAAgB,EAAE,CAAC;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,MAAM,OAAO,WAAY,SAAQ,eAAe;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,CAAC,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,MAAM,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;gBAC1D,MAAM;YACV,KAAK,aAAa;gBACd,gBAAgB,KAAhB,gBAAgB,GAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAC;gBAClD,MAAM,CACF,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,KAAK,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"}
|
|
@@ -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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { DbOperationArgs, MongoDBToolBase } from "../mongodbTool.js";
|
|
3
|
+
import { zEJSON } from "../../args.js";
|
|
3
4
|
export class InsertManyTool extends MongoDBToolBase {
|
|
4
5
|
constructor() {
|
|
5
6
|
super(...arguments);
|
|
@@ -8,7 +9,7 @@ export class InsertManyTool extends MongoDBToolBase {
|
|
|
8
9
|
this.argsShape = {
|
|
9
10
|
...DbOperationArgs,
|
|
10
11
|
documents: z
|
|
11
|
-
.array(
|
|
12
|
+
.array(zEJSON().describe("An individual MongoDB document"))
|
|
12
13
|
.describe("The array of documents to insert, matching the syntax of the document argument of db.collection.insertMany()"),
|
|
13
14
|
};
|
|
14
15
|
this.operationType = "create";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/insertMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"insertMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/insertMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,OAAO,cAAe,SAAQ,eAAe;IAAnD;;QACW,SAAI,GAAG,aAAa,CAAC;QAClB,gBAAW,GAAG,wDAAwD,CAAC;QACvE,cAAS,GAAG;YAClB,GAAG,eAAe;YAClB,SAAS,EAAE,CAAC;iBACP,KAAK,CAAC,MAAM,EAAE,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"}
|
|
@@ -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,7 +1,7 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
1
|
import { DbOperationArgs, MongoDBToolBase } from "../mongodbTool.js";
|
|
3
2
|
import { checkIndexUsage } from "../../../helpers/indexCheck.js";
|
|
4
3
|
import { EJSON } from "bson";
|
|
4
|
+
import { zEJSON } from "../../args.js";
|
|
5
5
|
export class DeleteManyTool extends MongoDBToolBase {
|
|
6
6
|
constructor() {
|
|
7
7
|
super(...arguments);
|
|
@@ -9,9 +9,7 @@ export class DeleteManyTool extends MongoDBToolBase {
|
|
|
9
9
|
this.description = "Removes all documents that match the filter from a MongoDB collection";
|
|
10
10
|
this.argsShape = {
|
|
11
11
|
...DbOperationArgs,
|
|
12
|
-
filter:
|
|
13
|
-
.object({})
|
|
14
|
-
.passthrough()
|
|
12
|
+
filter: zEJSON()
|
|
15
13
|
.optional()
|
|
16
14
|
.describe("The query filter, specifying the deletion criteria. Matches the syntax of the filter argument of db.collection.deleteMany()"),
|
|
17
15
|
};
|
|
@@ -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,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,OAAO,cAAe,SAAQ,eAAe;IAAnD;;QACW,SAAI,GAAG,aAAa,CAAC;QAClB,gBAAW,GAAG,uEAAuE,CAAC;QACtF,cAAS,GAAG;YAClB,GAAG,eAAe;YAClB,MAAM,EAAE,MAAM,EAAE;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,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;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,KAAK,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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
-
import {
|
|
3
|
-
import type { ToolArgs, OperationType } from "../../tool.js";
|
|
2
|
+
import { MongoDBToolBase } from "../mongodbTool.js";
|
|
3
|
+
import type { ToolArgs, OperationType, ToolExecutionContext } from "../../tool.js";
|
|
4
|
+
import z from "zod";
|
|
4
5
|
export declare class CollectionSchemaTool extends MongoDBToolBase {
|
|
5
6
|
name: string;
|
|
6
7
|
protected description: string;
|
|
7
8
|
protected argsShape: {
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
sampleSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
responseBytesLimit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
11
|
+
database: z.ZodString;
|
|
12
|
+
collection: z.ZodString;
|
|
10
13
|
};
|
|
11
14
|
operationType: OperationType;
|
|
12
|
-
protected execute({ database, collection }: ToolArgs<typeof
|
|
15
|
+
protected execute({ database, collection, sampleSize, responseBytesLimit }: ToolArgs<typeof this.argsShape>, { signal }: ToolExecutionContext): Promise<CallToolResult>;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=collectionSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectionSchema.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"collectionSchema.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionSchema.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,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,CAAC,MAAM,KAAK,CAAC;AAOpB,qBAAa,oBAAqB,SAAQ,eAAe;IAC9C,IAAI,SAAuB;IAClC,SAAS,CAAC,WAAW,SAA0C;IAC/D,SAAS,CAAC,SAAS;;;;;MAUjB;IAEK,aAAa,EAAE,aAAa,CAAc;cAEjC,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACzF,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;CAmC7B"}
|
|
@@ -1,20 +1,40 @@
|
|
|
1
1
|
import { DbOperationArgs, MongoDBToolBase } from "../mongodbTool.js";
|
|
2
2
|
import { formatUntrustedData } from "../../tool.js";
|
|
3
3
|
import { getSimplifiedSchema } from "mongodb-schema";
|
|
4
|
+
import z from "zod";
|
|
5
|
+
import { ONE_MB } from "../../../helpers/constants.js";
|
|
6
|
+
import { collectCursorUntilMaxBytesLimit } from "../../../helpers/collectCursorUntilMaxBytes.js";
|
|
7
|
+
import { isObjectEmpty } from "../../../helpers/isObjectEmpty.js";
|
|
8
|
+
const MAXIMUM_SAMPLE_SIZE_HARD_LIMIT = 50000;
|
|
4
9
|
export class CollectionSchemaTool extends MongoDBToolBase {
|
|
5
10
|
constructor() {
|
|
6
11
|
super(...arguments);
|
|
7
12
|
this.name = "collection-schema";
|
|
8
13
|
this.description = "Describe the schema for a collection";
|
|
9
|
-
this.argsShape =
|
|
14
|
+
this.argsShape = {
|
|
15
|
+
...DbOperationArgs,
|
|
16
|
+
sampleSize: z.number().optional().default(50).describe("Number of documents to sample for schema inference"),
|
|
17
|
+
responseBytesLimit: z
|
|
18
|
+
.number()
|
|
19
|
+
.optional()
|
|
20
|
+
.default(ONE_MB)
|
|
21
|
+
.describe(`The maximum number of bytes to return in the response. This value is capped by the server’s configured maxBytesPerQuery and cannot be exceeded.`),
|
|
22
|
+
};
|
|
10
23
|
this.operationType = "metadata";
|
|
11
24
|
}
|
|
12
|
-
async execute({ database, collection }) {
|
|
25
|
+
async execute({ database, collection, sampleSize, responseBytesLimit }, { signal }) {
|
|
13
26
|
const provider = await this.ensureConnected();
|
|
14
|
-
const
|
|
27
|
+
const cursor = provider.aggregate(database, collection, [
|
|
28
|
+
{ $sample: { size: Math.min(sampleSize, MAXIMUM_SAMPLE_SIZE_HARD_LIMIT) } },
|
|
29
|
+
]);
|
|
30
|
+
const { cappedBy, documents } = await collectCursorUntilMaxBytesLimit({
|
|
31
|
+
cursor,
|
|
32
|
+
configuredMaxBytesPerQuery: this.config.maxBytesPerQuery,
|
|
33
|
+
toolResponseBytesLimit: responseBytesLimit,
|
|
34
|
+
abortSignal: signal,
|
|
35
|
+
});
|
|
15
36
|
const schema = await getSimplifiedSchema(documents);
|
|
16
|
-
|
|
17
|
-
if (fieldsCount === 0) {
|
|
37
|
+
if (isObjectEmpty(schema)) {
|
|
18
38
|
return {
|
|
19
39
|
content: [
|
|
20
40
|
{
|
|
@@ -24,8 +44,13 @@ export class CollectionSchemaTool extends MongoDBToolBase {
|
|
|
24
44
|
],
|
|
25
45
|
};
|
|
26
46
|
}
|
|
47
|
+
const fieldsCount = Object.keys(schema).length;
|
|
48
|
+
const header = `Found ${fieldsCount} fields in the schema for "${database}.${collection}"`;
|
|
49
|
+
const cappedWarning = cappedBy !== undefined
|
|
50
|
+
? `\nThe schema was inferred from a subset of documents due to the response size limit. (${cappedBy})`
|
|
51
|
+
: "";
|
|
27
52
|
return {
|
|
28
|
-
content: formatUntrustedData(
|
|
53
|
+
content: formatUntrustedData(`${header}${cappedWarning}`, JSON.stringify(schema)),
|
|
29
54
|
};
|
|
30
55
|
}
|
|
31
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectionSchema.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"collectionSchema.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,8BAA8B,GAAG,KAAM,CAAC;AAE9C,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAAzD;;QACW,SAAI,GAAG,mBAAmB,CAAC;QACxB,gBAAW,GAAG,sCAAsC,CAAC;QACrD,cAAS,GAAG;YAClB,GAAG,eAAe;YAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAC5G,kBAAkB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CACL,iJAAiJ,CACpJ;SACR,CAAC;QAEK,kBAAa,GAAkB,UAAU,CAAC;IAwCrD,CAAC;IAtCa,KAAK,CAAC,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAmC,EACzF,EAAE,MAAM,EAAwB;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;YACpD,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,8BAA8B,CAAC,EAAE,EAAE;SAC9E,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,+BAA+B,CAAC;YAClE,MAAM;YACN,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YACxD,sBAAsB,EAAE,kBAAkB;YAC1C,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,oCAAoC,QAAQ,IAAI,UAAU,sDAAsD;wBACtH,IAAI,EAAE,MAAM;qBACf;iBACJ;aACJ,CAAC;QACN,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC/C,MAAM,MAAM,GAAG,SAAS,WAAW,8BAA8B,QAAQ,IAAI,UAAU,GAAG,CAAC;QAC3F,MAAM,aAAa,GACf,QAAQ,KAAK,SAAS;YAClB,CAAC,CAAC,yFAAyF,QAAQ,GAAG;YACtG,CAAC,CAAC,EAAE,CAAC;QAEb,OAAO;YACH,OAAO,EAAE,mBAAmB,CAAC,GAAG,MAAM,GAAG,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACpF,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -9,81 +9,115 @@ export declare class ExplainTool extends MongoDBToolBase {
|
|
|
9
9
|
method: z.ZodArray<z.ZodDiscriminatedUnion<"name", [z.ZodObject<{
|
|
10
10
|
name: z.ZodLiteral<"aggregate">;
|
|
11
11
|
arguments: z.ZodObject<{
|
|
12
|
-
pipeline: z.ZodArray<z.
|
|
12
|
+
pipeline: z.ZodArray<z.AnyZodObject, "many">;
|
|
13
|
+
responseBytesLimit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
13
14
|
}, "strip", z.ZodTypeAny, {
|
|
14
|
-
|
|
15
|
+
responseBytesLimit: number;
|
|
16
|
+
pipeline: {
|
|
17
|
+
[x: string]: any;
|
|
18
|
+
}[];
|
|
15
19
|
}, {
|
|
16
|
-
pipeline:
|
|
20
|
+
pipeline: {
|
|
21
|
+
[x: string]: any;
|
|
22
|
+
}[];
|
|
23
|
+
responseBytesLimit?: number | undefined;
|
|
17
24
|
}>;
|
|
18
25
|
}, "strip", z.ZodTypeAny, {
|
|
19
26
|
name: "aggregate";
|
|
20
27
|
arguments: {
|
|
21
|
-
|
|
28
|
+
responseBytesLimit: number;
|
|
29
|
+
pipeline: {
|
|
30
|
+
[x: string]: any;
|
|
31
|
+
}[];
|
|
22
32
|
};
|
|
23
33
|
}, {
|
|
24
34
|
name: "aggregate";
|
|
25
35
|
arguments: {
|
|
26
|
-
pipeline:
|
|
36
|
+
pipeline: {
|
|
37
|
+
[x: string]: any;
|
|
38
|
+
}[];
|
|
39
|
+
responseBytesLimit?: number | undefined;
|
|
27
40
|
};
|
|
28
41
|
}>, z.ZodObject<{
|
|
29
42
|
name: z.ZodLiteral<"find">;
|
|
30
43
|
arguments: z.ZodObject<{
|
|
31
|
-
filter: z.ZodOptional<z.
|
|
44
|
+
filter: z.ZodOptional<z.AnyZodObject>;
|
|
32
45
|
projection: z.ZodOptional<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>>;
|
|
33
46
|
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
34
47
|
sort: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodType<import("mongodb").SortDirection, z.ZodTypeDef, import("mongodb").SortDirection>, {}, {}>>;
|
|
48
|
+
responseBytesLimit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
35
49
|
}, "strip", z.ZodTypeAny, {
|
|
36
50
|
limit: number;
|
|
51
|
+
responseBytesLimit: number;
|
|
37
52
|
sort?: {} | undefined;
|
|
38
|
-
filter?:
|
|
53
|
+
filter?: {
|
|
54
|
+
[x: string]: any;
|
|
55
|
+
} | undefined;
|
|
39
56
|
projection?: z.objectOutputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
40
57
|
}, {
|
|
41
58
|
sort?: {} | undefined;
|
|
42
|
-
filter?:
|
|
59
|
+
filter?: {
|
|
60
|
+
[x: string]: any;
|
|
61
|
+
} | undefined;
|
|
43
62
|
limit?: number | undefined;
|
|
63
|
+
responseBytesLimit?: number | undefined;
|
|
44
64
|
projection?: z.objectInputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
45
65
|
}>;
|
|
46
66
|
}, "strip", z.ZodTypeAny, {
|
|
47
67
|
name: "find";
|
|
48
68
|
arguments: {
|
|
49
69
|
limit: number;
|
|
70
|
+
responseBytesLimit: number;
|
|
50
71
|
sort?: {} | undefined;
|
|
51
|
-
filter?:
|
|
72
|
+
filter?: {
|
|
73
|
+
[x: string]: any;
|
|
74
|
+
} | undefined;
|
|
52
75
|
projection?: z.objectOutputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
53
76
|
};
|
|
54
77
|
}, {
|
|
55
78
|
name: "find";
|
|
56
79
|
arguments: {
|
|
57
80
|
sort?: {} | undefined;
|
|
58
|
-
filter?:
|
|
81
|
+
filter?: {
|
|
82
|
+
[x: string]: any;
|
|
83
|
+
} | undefined;
|
|
59
84
|
limit?: number | undefined;
|
|
85
|
+
responseBytesLimit?: number | undefined;
|
|
60
86
|
projection?: z.objectInputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
61
87
|
};
|
|
62
88
|
}>, z.ZodObject<{
|
|
63
89
|
name: z.ZodLiteral<"count">;
|
|
64
90
|
arguments: z.ZodObject<{
|
|
65
|
-
query: z.ZodOptional<z.
|
|
91
|
+
query: z.ZodOptional<z.AnyZodObject>;
|
|
66
92
|
}, "strip", z.ZodTypeAny, {
|
|
67
|
-
query?:
|
|
93
|
+
query?: {
|
|
94
|
+
[x: string]: any;
|
|
95
|
+
} | undefined;
|
|
68
96
|
}, {
|
|
69
|
-
query?:
|
|
97
|
+
query?: {
|
|
98
|
+
[x: string]: any;
|
|
99
|
+
} | undefined;
|
|
70
100
|
}>;
|
|
71
101
|
}, "strip", z.ZodTypeAny, {
|
|
72
102
|
name: "count";
|
|
73
103
|
arguments: {
|
|
74
|
-
query?:
|
|
104
|
+
query?: {
|
|
105
|
+
[x: string]: any;
|
|
106
|
+
} | undefined;
|
|
75
107
|
};
|
|
76
108
|
}, {
|
|
77
109
|
name: "count";
|
|
78
110
|
arguments: {
|
|
79
|
-
query?:
|
|
111
|
+
query?: {
|
|
112
|
+
[x: string]: any;
|
|
113
|
+
} | undefined;
|
|
80
114
|
};
|
|
81
115
|
}>]>, "many">;
|
|
116
|
+
verbosity: z.ZodDefault<z.ZodOptional<z.ZodEnum<["queryPlanner", "queryPlannerExtended", "executionStats", "allPlansExecution"]>>>;
|
|
82
117
|
database: z.ZodString;
|
|
83
118
|
collection: z.ZodString;
|
|
84
119
|
};
|
|
85
120
|
operationType: OperationType;
|
|
86
|
-
|
|
87
|
-
protected execute({ database, collection, method: methods, }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
121
|
+
protected execute({ database, collection, method: methods, verbosity, }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
88
122
|
}
|
|
89
123
|
//# sourceMappingURL=explain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/explain.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;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/explain.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;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,qBAAa,WAAY,SAAQ,eAAe;IACrC,IAAI,SAAa;IACxB,SAAS,CAAC,WAAW,SACwG;IAE7H,SAAS,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BjB;IAEK,aAAa,EAAE,aAAa,CAAc;cAEjC,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,EAAE,OAAO,EACf,SAAS,GACZ,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAkD/D"}
|