mongodb-mcp-server 1.0.3-prerelease.1 → 1.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 +2 -1
- package/dist/cjs/common/atlas/apiClient.d.ts +15 -0
- package/dist/cjs/common/atlas/apiClient.d.ts.map +1 -1
- package/dist/cjs/common/atlas/apiClient.js +32 -0
- package/dist/cjs/common/atlas/apiClient.js.map +1 -1
- package/dist/cjs/common/atlas/cluster.d.ts +2 -0
- package/dist/cjs/common/atlas/cluster.d.ts.map +1 -1
- package/dist/cjs/common/atlas/cluster.js +24 -2
- package/dist/cjs/common/atlas/cluster.js.map +1 -1
- package/dist/cjs/common/atlas/performanceAdvisorUtils.d.ts +24 -0
- package/dist/cjs/common/atlas/performanceAdvisorUtils.d.ts.map +1 -0
- package/dist/cjs/common/atlas/performanceAdvisorUtils.js +116 -0
- package/dist/cjs/common/atlas/performanceAdvisorUtils.js.map +1 -0
- package/dist/cjs/common/config.d.ts +3 -0
- package/dist/cjs/common/config.d.ts.map +1 -1
- package/dist/cjs/common/config.js +5 -0
- package/dist/cjs/common/config.js.map +1 -1
- package/dist/cjs/common/connectionManager.d.ts +7 -2
- package/dist/cjs/common/connectionManager.d.ts.map +1 -1
- package/dist/cjs/common/connectionManager.js +28 -12
- package/dist/cjs/common/connectionManager.js.map +1 -1
- package/dist/cjs/common/logger.d.ts +4 -0
- package/dist/cjs/common/logger.d.ts.map +1 -1
- package/dist/cjs/common/logger.js +4 -0
- 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/common/session.d.ts +1 -0
- package/dist/cjs/common/session.d.ts.map +1 -1
- package/dist/cjs/common/session.js +7 -0
- package/dist/cjs/common/session.js.map +1 -1
- package/dist/cjs/resources/common/debug.d.ts +1 -1
- package/dist/cjs/resources/common/debug.d.ts.map +1 -1
- package/dist/cjs/resources/common/debug.js +5 -3
- package/dist/cjs/resources/common/debug.js.map +1 -1
- package/dist/cjs/resources/resource.d.ts +1 -1
- package/dist/cjs/resources/resource.d.ts.map +1 -1
- package/dist/cjs/resources/resource.js +2 -2
- package/dist/cjs/resources/resource.js.map +1 -1
- package/dist/cjs/server.d.ts +4 -2
- package/dist/cjs/server.d.ts.map +1 -1
- package/dist/cjs/server.js +4 -3
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/telemetry/telemetry.d.ts +2 -1
- package/dist/cjs/telemetry/telemetry.d.ts.map +1 -1
- package/dist/cjs/telemetry/telemetry.js +8 -3
- package/dist/cjs/telemetry/telemetry.js.map +1 -1
- package/dist/cjs/telemetry/types.d.ts +2 -2
- package/dist/cjs/telemetry/types.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/atlasTool.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/atlasTool.js +15 -1
- package/dist/cjs/tools/atlas/atlasTool.js.map +1 -1
- package/dist/cjs/tools/atlas/read/getPerformanceAdvisor.d.ts +18 -0
- package/dist/cjs/tools/atlas/read/getPerformanceAdvisor.d.ts.map +1 -0
- package/dist/cjs/tools/atlas/read/getPerformanceAdvisor.js +102 -0
- package/dist/cjs/tools/atlas/read/getPerformanceAdvisor.js.map +1 -0
- package/dist/cjs/tools/atlas/tools.d.ts +2 -1
- package/dist/cjs/tools/atlas/tools.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/tools.js +2 -0
- package/dist/cjs/tools/atlas/tools.js.map +1 -1
- package/dist/cjs/tools/mongodb/create/createIndex.d.ts +121 -3
- package/dist/cjs/tools/mongodb/create/createIndex.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/create/createIndex.js +102 -9
- package/dist/cjs/tools/mongodb/create/createIndex.js.map +1 -1
- package/dist/cjs/tools/mongodb/delete/dropIndex.d.ts +17 -0
- package/dist/cjs/tools/mongodb/delete/dropIndex.d.ts.map +1 -0
- package/dist/cjs/tools/mongodb/delete/dropIndex.js +42 -0
- package/dist/cjs/tools/mongodb/delete/dropIndex.js.map +1 -0
- package/dist/cjs/tools/mongodb/metadata/collectionIndexes.d.ts.map +1 -0
- package/dist/cjs/tools/mongodb/{read → metadata}/collectionIndexes.js +2 -1
- package/dist/cjs/tools/mongodb/metadata/collectionIndexes.js.map +1 -0
- package/dist/cjs/tools/mongodb/metadata/collectionStorageSize.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/metadata/collectionStorageSize.js +1 -0
- package/dist/cjs/tools/mongodb/metadata/collectionStorageSize.js.map +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/search/listSearchIndexes.d.ts +30 -0
- package/dist/cjs/tools/mongodb/search/listSearchIndexes.d.ts.map +1 -0
- package/dist/cjs/tools/mongodb/search/listSearchIndexes.js +65 -0
- package/dist/cjs/tools/mongodb/search/listSearchIndexes.js.map +1 -0
- package/dist/cjs/tools/mongodb/tools.d.ts +4 -2
- package/dist/cjs/tools/mongodb/tools.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/tools.js +5 -1
- package/dist/cjs/tools/mongodb/tools.js.map +1 -1
- package/dist/cjs/tools/mongodb/update/renameCollection.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/update/renameCollection.js +2 -0
- package/dist/cjs/tools/mongodb/update/renameCollection.js.map +1 -1
- package/dist/cjs/tools/tool.d.ts +36 -0
- package/dist/cjs/tools/tool.d.ts.map +1 -1
- package/dist/cjs/tools/tool.js +17 -0
- package/dist/cjs/tools/tool.js.map +1 -1
- package/dist/esm/common/atlas/apiClient.d.ts +15 -0
- package/dist/esm/common/atlas/apiClient.d.ts.map +1 -1
- package/dist/esm/common/atlas/apiClient.js +32 -0
- package/dist/esm/common/atlas/apiClient.js.map +1 -1
- package/dist/esm/common/atlas/cluster.d.ts +2 -0
- package/dist/esm/common/atlas/cluster.d.ts.map +1 -1
- package/dist/esm/common/atlas/cluster.js +23 -2
- package/dist/esm/common/atlas/cluster.js.map +1 -1
- package/dist/esm/common/atlas/performanceAdvisorUtils.d.ts +24 -0
- package/dist/esm/common/atlas/performanceAdvisorUtils.d.ts.map +1 -0
- package/dist/esm/common/atlas/performanceAdvisorUtils.js +109 -0
- package/dist/esm/common/atlas/performanceAdvisorUtils.js.map +1 -0
- package/dist/esm/common/config.d.ts +3 -0
- package/dist/esm/common/config.d.ts.map +1 -1
- package/dist/esm/common/config.js +5 -0
- package/dist/esm/common/config.js.map +1 -1
- package/dist/esm/common/connectionManager.d.ts +7 -2
- package/dist/esm/common/connectionManager.d.ts.map +1 -1
- package/dist/esm/common/connectionManager.js +26 -11
- package/dist/esm/common/connectionManager.js.map +1 -1
- package/dist/esm/common/logger.d.ts +4 -0
- package/dist/esm/common/logger.d.ts.map +1 -1
- package/dist/esm/common/logger.js +4 -0
- 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/common/session.d.ts +1 -0
- package/dist/esm/common/session.d.ts.map +1 -1
- package/dist/esm/common/session.js +7 -0
- package/dist/esm/common/session.js.map +1 -1
- package/dist/esm/resources/common/debug.d.ts +1 -1
- package/dist/esm/resources/common/debug.d.ts.map +1 -1
- package/dist/esm/resources/common/debug.js +5 -3
- package/dist/esm/resources/common/debug.js.map +1 -1
- package/dist/esm/resources/resource.d.ts +1 -1
- package/dist/esm/resources/resource.d.ts.map +1 -1
- package/dist/esm/resources/resource.js +2 -2
- package/dist/esm/resources/resource.js.map +1 -1
- package/dist/esm/server.d.ts +4 -2
- package/dist/esm/server.d.ts.map +1 -1
- package/dist/esm/server.js +4 -3
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/telemetry/telemetry.d.ts +2 -1
- package/dist/esm/telemetry/telemetry.d.ts.map +1 -1
- package/dist/esm/telemetry/telemetry.js +8 -3
- package/dist/esm/telemetry/telemetry.js.map +1 -1
- package/dist/esm/telemetry/types.d.ts +2 -2
- package/dist/esm/telemetry/types.d.ts.map +1 -1
- package/dist/esm/tools/atlas/atlasTool.d.ts.map +1 -1
- package/dist/esm/tools/atlas/atlasTool.js +15 -1
- package/dist/esm/tools/atlas/atlasTool.js.map +1 -1
- package/dist/esm/tools/atlas/read/getPerformanceAdvisor.d.ts +18 -0
- package/dist/esm/tools/atlas/read/getPerformanceAdvisor.d.ts.map +1 -0
- package/dist/esm/tools/atlas/read/getPerformanceAdvisor.js +98 -0
- package/dist/esm/tools/atlas/read/getPerformanceAdvisor.js.map +1 -0
- package/dist/esm/tools/atlas/tools.d.ts +2 -1
- package/dist/esm/tools/atlas/tools.d.ts.map +1 -1
- package/dist/esm/tools/atlas/tools.js +2 -0
- package/dist/esm/tools/atlas/tools.js.map +1 -1
- package/dist/esm/tools/mongodb/create/createIndex.d.ts +121 -3
- package/dist/esm/tools/mongodb/create/createIndex.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/create/createIndex.js +102 -9
- package/dist/esm/tools/mongodb/create/createIndex.js.map +1 -1
- package/dist/esm/tools/mongodb/delete/dropIndex.d.ts +17 -0
- package/dist/esm/tools/mongodb/delete/dropIndex.d.ts.map +1 -0
- package/dist/esm/tools/mongodb/delete/dropIndex.js +35 -0
- package/dist/esm/tools/mongodb/delete/dropIndex.js.map +1 -0
- package/dist/esm/tools/mongodb/metadata/collectionIndexes.d.ts.map +1 -0
- package/dist/esm/tools/mongodb/{read → metadata}/collectionIndexes.js +2 -1
- package/dist/esm/tools/mongodb/metadata/collectionIndexes.js.map +1 -0
- package/dist/esm/tools/mongodb/metadata/collectionStorageSize.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/metadata/collectionStorageSize.js +1 -0
- package/dist/esm/tools/mongodb/metadata/collectionStorageSize.js.map +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.d.ts +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/search/listSearchIndexes.d.ts +30 -0
- package/dist/esm/tools/mongodb/search/listSearchIndexes.d.ts.map +1 -0
- package/dist/esm/tools/mongodb/search/listSearchIndexes.js +61 -0
- package/dist/esm/tools/mongodb/search/listSearchIndexes.js.map +1 -0
- package/dist/esm/tools/mongodb/tools.d.ts +4 -2
- package/dist/esm/tools/mongodb/tools.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/tools.js +5 -1
- package/dist/esm/tools/mongodb/tools.js.map +1 -1
- package/dist/esm/tools/mongodb/update/renameCollection.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/update/renameCollection.js +2 -0
- package/dist/esm/tools/mongodb/update/renameCollection.js.map +1 -1
- package/dist/esm/tools/tool.d.ts +36 -0
- package/dist/esm/tools/tool.d.ts.map +1 -1
- package/dist/esm/tools/tool.js +17 -0
- package/dist/esm/tools/tool.js.map +1 -1
- package/package.json +2 -1
- package/dist/cjs/tools/mongodb/read/collectionIndexes.d.ts.map +0 -1
- package/dist/cjs/tools/mongodb/read/collectionIndexes.js.map +0 -1
- package/dist/esm/tools/mongodb/read/collectionIndexes.d.ts.map +0 -1
- package/dist/esm/tools/mongodb/read/collectionIndexes.js.map +0 -1
- /package/dist/cjs/tools/mongodb/{read → metadata}/collectionIndexes.d.ts +0 -0
- /package/dist/esm/tools/mongodb/{read → metadata}/collectionIndexes.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlasTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/atlas/atlasTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAKzE,8BAAsB,aAAc,SAAQ,QAAQ;IACzC,QAAQ,EAAE,YAAY,CAAW;IAExC,SAAS,CAAC,aAAa,IAAI,OAAO;IAOlC,SAAS,CAAC,WAAW,CACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GACtC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"atlasTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/atlas/atlasTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAKzE,8BAAsB,aAAc,SAAQ,QAAQ;IACzC,QAAQ,EAAE,YAAY,CAAW;IAExC,SAAS,CAAC,aAAa,IAAI,OAAO;IAOlC,SAAS,CAAC,WAAW,CACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GACtC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;IAwD3C;;;;;;OAMG;IACH,SAAS,CAAC,wBAAwB,CAC9B,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GACzD,qBAAqB;CAgC3B"}
|
|
@@ -34,6 +34,20 @@ For more information on setting up API keys, visit: https://www.mongodb.com/docs
|
|
|
34
34
|
isError: true,
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
+
if (statusCode === 402) {
|
|
38
|
+
return {
|
|
39
|
+
content: [
|
|
40
|
+
{
|
|
41
|
+
type: "text",
|
|
42
|
+
text: `Received a Payment Required API Error: ${error.message}
|
|
43
|
+
|
|
44
|
+
Payment setup is required to perform this action in MongoDB Atlas.
|
|
45
|
+
Please ensure that your payment method for your organization has been set up and is active.
|
|
46
|
+
For more information on setting up payment, visit: https://www.mongodb.com/docs/atlas/billing/`,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
37
51
|
if (statusCode === 403) {
|
|
38
52
|
return {
|
|
39
53
|
content: [
|
|
@@ -41,7 +55,7 @@ For more information on setting up API keys, visit: https://www.mongodb.com/docs
|
|
|
41
55
|
type: "text",
|
|
42
56
|
text: `Received a Forbidden API Error: ${error.message}
|
|
43
57
|
|
|
44
|
-
You don't have sufficient permissions to perform this action in MongoDB Atlas
|
|
58
|
+
You don't have sufficient permissions to perform this action in MongoDB Atlas.
|
|
45
59
|
Please ensure your API key has the necessary roles assigned.
|
|
46
60
|
For more information on Atlas API access roles, visit: https://www.mongodb.com/docs/atlas/api/service-accounts-overview/`,
|
|
47
61
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlasTool.js","sourceRoot":"","sources":["../../../../src/tools/atlas/atlasTool.ts"],"names":[],"mappings":";;;AACA,wCAAoG;AAEpG,sDAA+C;AAC/C,6BAAwB;AACxB,4EAAsE;AAEtE,MAAsB,aAAc,SAAQ,kBAAQ;IAApD;;QACW,aAAQ,GAAiB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"atlasTool.js","sourceRoot":"","sources":["../../../../src/tools/atlas/atlasTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AtlasToolBase } from "../atlasTool.js";
|
|
3
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
import type { OperationType, ToolArgs } from "../../tool.js";
|
|
5
|
+
export declare class GetPerformanceAdvisorTool extends AtlasToolBase {
|
|
6
|
+
name: string;
|
|
7
|
+
protected description: string;
|
|
8
|
+
operationType: OperationType;
|
|
9
|
+
protected argsShape: {
|
|
10
|
+
projectId: z.ZodString;
|
|
11
|
+
clusterName: z.ZodString;
|
|
12
|
+
operations: z.ZodDefault<z.ZodArray<z.ZodEnum<["suggestedIndexes", "dropIndexSuggestions", "slowQueryLogs", "schemaSuggestions"]>, "many">>;
|
|
13
|
+
since: z.ZodOptional<z.ZodString>;
|
|
14
|
+
namespaces: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
15
|
+
};
|
|
16
|
+
protected execute({ projectId, clusterName, operations, since, namespaces, }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=getPerformanceAdvisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPerformanceAdvisor.d.ts","sourceRoot":"","sources":["../../../../../src/tools/atlas/read/getPerformanceAdvisor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoB7D,qBAAa,yBAA0B,SAAQ,aAAa;IACjD,IAAI,SAAmC;IAC9C,SAAS,CAAC,WAAW,SAAiP;IAC/P,aAAa,EAAE,aAAa,CAAU;IAC7C,SAAS,CAAC,SAAS;;;;;;MAkBjB;cAEc,OAAO,CAAC,EACpB,SAAS,EACT,WAAW,EACX,UAAU,EACV,KAAK,EACL,UAAU,GACb,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CA6E/D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetPerformanceAdvisorTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const atlasTool_js_1 = require("../atlasTool.js");
|
|
6
|
+
const tool_js_1 = require("../../tool.js");
|
|
7
|
+
const performanceAdvisorUtils_js_1 = require("../../../common/atlas/performanceAdvisorUtils.js");
|
|
8
|
+
const args_js_1 = require("../../args.js");
|
|
9
|
+
const PerformanceAdvisorOperationType = zod_1.z.enum([
|
|
10
|
+
"suggestedIndexes",
|
|
11
|
+
"dropIndexSuggestions",
|
|
12
|
+
"slowQueryLogs",
|
|
13
|
+
"schemaSuggestions",
|
|
14
|
+
]);
|
|
15
|
+
class GetPerformanceAdvisorTool extends atlasTool_js_1.AtlasToolBase {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.name = "atlas-get-performance-advisor";
|
|
19
|
+
this.description = `Get MongoDB Atlas performance advisor recommendations, which includes the operations: suggested indexes, drop index suggestions, schema suggestions, and a sample of the most recent (max ${performanceAdvisorUtils_js_1.DEFAULT_SLOW_QUERY_LOGS_LIMIT}) slow query logs`;
|
|
20
|
+
this.operationType = "read";
|
|
21
|
+
this.argsShape = {
|
|
22
|
+
projectId: args_js_1.AtlasArgs.projectId().describe("Atlas project ID to get performance advisor recommendations"),
|
|
23
|
+
clusterName: args_js_1.AtlasArgs.clusterName().describe("Atlas cluster name to get performance advisor recommendations"),
|
|
24
|
+
operations: zod_1.z
|
|
25
|
+
.array(PerformanceAdvisorOperationType)
|
|
26
|
+
.default(PerformanceAdvisorOperationType.options)
|
|
27
|
+
.describe("Operations to get performance advisor recommendations"),
|
|
28
|
+
since: zod_1.z
|
|
29
|
+
.string()
|
|
30
|
+
.datetime()
|
|
31
|
+
.describe("Date to get slow query logs since. Must be a string in ISO 8601 format. Only relevant for the slowQueryLogs operation.")
|
|
32
|
+
.optional(),
|
|
33
|
+
namespaces: zod_1.z
|
|
34
|
+
.array(zod_1.z.string())
|
|
35
|
+
.describe("Namespaces to get slow query logs. Only relevant for the slowQueryLogs operation.")
|
|
36
|
+
.optional(),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
async execute({ projectId, clusterName, operations, since, namespaces, }) {
|
|
40
|
+
try {
|
|
41
|
+
const [suggestedIndexesResult, dropIndexSuggestionsResult, slowQueryLogsResult, schemaSuggestionsResult] = await Promise.allSettled([
|
|
42
|
+
operations.includes("suggestedIndexes")
|
|
43
|
+
? (0, performanceAdvisorUtils_js_1.getSuggestedIndexes)(this.session.apiClient, projectId, clusterName)
|
|
44
|
+
: Promise.resolve(undefined),
|
|
45
|
+
operations.includes("dropIndexSuggestions")
|
|
46
|
+
? (0, performanceAdvisorUtils_js_1.getDropIndexSuggestions)(this.session.apiClient, projectId, clusterName)
|
|
47
|
+
: Promise.resolve(undefined),
|
|
48
|
+
operations.includes("slowQueryLogs")
|
|
49
|
+
? (0, performanceAdvisorUtils_js_1.getSlowQueries)(this.session.apiClient, projectId, clusterName, since ? new Date(since) : undefined, namespaces)
|
|
50
|
+
: Promise.resolve(undefined),
|
|
51
|
+
operations.includes("schemaSuggestions")
|
|
52
|
+
? (0, performanceAdvisorUtils_js_1.getSchemaAdvice)(this.session.apiClient, projectId, clusterName)
|
|
53
|
+
: Promise.resolve(undefined),
|
|
54
|
+
]);
|
|
55
|
+
const hasSuggestedIndexes = suggestedIndexesResult.status === "fulfilled" &&
|
|
56
|
+
suggestedIndexesResult.value?.suggestedIndexes &&
|
|
57
|
+
suggestedIndexesResult.value.suggestedIndexes.length > 0;
|
|
58
|
+
const hasDropIndexSuggestions = dropIndexSuggestionsResult.status === "fulfilled" &&
|
|
59
|
+
dropIndexSuggestionsResult.value?.hiddenIndexes &&
|
|
60
|
+
dropIndexSuggestionsResult.value?.redundantIndexes &&
|
|
61
|
+
dropIndexSuggestionsResult.value?.unusedIndexes &&
|
|
62
|
+
(dropIndexSuggestionsResult.value.hiddenIndexes.length > 0 ||
|
|
63
|
+
dropIndexSuggestionsResult.value.redundantIndexes.length > 0 ||
|
|
64
|
+
dropIndexSuggestionsResult.value.unusedIndexes.length > 0);
|
|
65
|
+
const hasSlowQueryLogs = slowQueryLogsResult.status === "fulfilled" &&
|
|
66
|
+
slowQueryLogsResult.value?.slowQueryLogs &&
|
|
67
|
+
slowQueryLogsResult.value.slowQueryLogs.length > 0;
|
|
68
|
+
const hasSchemaSuggestions = schemaSuggestionsResult.status === "fulfilled" &&
|
|
69
|
+
schemaSuggestionsResult.value?.recommendations &&
|
|
70
|
+
schemaSuggestionsResult.value.recommendations.length > 0;
|
|
71
|
+
// Inserts the performance advisor data with the relevant section header if it exists
|
|
72
|
+
const performanceAdvisorData = [
|
|
73
|
+
`## Suggested Indexes\n${hasSuggestedIndexes
|
|
74
|
+
? `${performanceAdvisorUtils_js_1.SUGGESTED_INDEXES_COPY}\n${JSON.stringify(suggestedIndexesResult.value?.suggestedIndexes)}`
|
|
75
|
+
: "No suggested indexes found."}`,
|
|
76
|
+
`## Drop Index Suggestions\n${hasDropIndexSuggestions ? JSON.stringify(dropIndexSuggestionsResult.value) : "No drop index suggestions found."}`,
|
|
77
|
+
`## Slow Query Logs\n${hasSlowQueryLogs ? `${performanceAdvisorUtils_js_1.SLOW_QUERY_LOGS_COPY}\n${JSON.stringify(slowQueryLogsResult.value?.slowQueryLogs)}` : "No slow query logs found."}`,
|
|
78
|
+
`## Schema Suggestions\n${hasSchemaSuggestions ? JSON.stringify(schemaSuggestionsResult.value?.recommendations) : "No schema suggestions found."}`,
|
|
79
|
+
];
|
|
80
|
+
if (performanceAdvisorData.length === 0) {
|
|
81
|
+
return {
|
|
82
|
+
content: [{ type: "text", text: "No performance advisor recommendations found." }],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
content: (0, tool_js_1.formatUntrustedData)("Performance advisor data", performanceAdvisorData.join("\n\n")),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return {
|
|
91
|
+
content: [
|
|
92
|
+
{
|
|
93
|
+
type: "text",
|
|
94
|
+
text: `Error retrieving performance advisor data: ${error instanceof Error ? error.message : String(error)}`,
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.GetPerformanceAdvisorTool = GetPerformanceAdvisorTool;
|
|
102
|
+
//# sourceMappingURL=getPerformanceAdvisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPerformanceAdvisor.js","sourceRoot":"","sources":["../../../../../src/tools/atlas/read/getPerformanceAdvisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,6 @@ import { CreateProjectTool } from "./create/createProject.js";
|
|
|
10
10
|
import { ListOrganizationsTool } from "./read/listOrgs.js";
|
|
11
11
|
import { ConnectClusterTool } from "./connect/connectCluster.js";
|
|
12
12
|
import { ListAlertsTool } from "./read/listAlerts.js";
|
|
13
|
-
|
|
13
|
+
import { GetPerformanceAdvisorTool } from "./read/getPerformanceAdvisor.js";
|
|
14
|
+
export declare const AtlasTools: (typeof ListClustersTool | typeof ListProjectsTool | typeof InspectClusterTool | typeof CreateFreeClusterTool | typeof CreateAccessListTool | typeof InspectAccessListTool | typeof ListDBUsersTool | typeof CreateDBUserTool | typeof CreateProjectTool | typeof ListOrganizationsTool | typeof ConnectClusterTool | typeof ListAlertsTool | typeof GetPerformanceAdvisorTool)[];
|
|
14
15
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/tools/atlas/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/tools/atlas/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,eAAO,MAAM,UAAU,mXActB,CAAC"}
|
|
@@ -13,6 +13,7 @@ const createProject_js_1 = require("./create/createProject.js");
|
|
|
13
13
|
const listOrgs_js_1 = require("./read/listOrgs.js");
|
|
14
14
|
const connectCluster_js_1 = require("./connect/connectCluster.js");
|
|
15
15
|
const listAlerts_js_1 = require("./read/listAlerts.js");
|
|
16
|
+
const getPerformanceAdvisor_js_1 = require("./read/getPerformanceAdvisor.js");
|
|
16
17
|
exports.AtlasTools = [
|
|
17
18
|
listClusters_js_1.ListClustersTool,
|
|
18
19
|
listProjects_js_1.ListProjectsTool,
|
|
@@ -26,5 +27,6 @@ exports.AtlasTools = [
|
|
|
26
27
|
listOrgs_js_1.ListOrganizationsTool,
|
|
27
28
|
connectCluster_js_1.ConnectClusterTool,
|
|
28
29
|
listAlerts_js_1.ListAlertsTool,
|
|
30
|
+
getPerformanceAdvisor_js_1.GetPerformanceAdvisorTool,
|
|
29
31
|
];
|
|
30
32
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/tools/atlas/tools.ts"],"names":[],"mappings":";;;AAAA,4DAA0D;AAC1D,4DAA0D;AAC1D,gEAA8D;AAC9D,wEAAsE;AACtE,sEAAoE;AACpE,sEAAoE;AACpE,0DAAwD;AACxD,8DAA4D;AAC5D,gEAA8D;AAC9D,oDAA2D;AAC3D,mEAAiE;AACjE,wDAAsD;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/tools/atlas/tools.ts"],"names":[],"mappings":";;;AAAA,4DAA0D;AAC1D,4DAA0D;AAC1D,gEAA8D;AAC9D,wEAAsE;AACtE,sEAAoE;AACpE,sEAAoE;AACpE,0DAAwD;AACxD,8DAA4D;AAC5D,gEAA8D;AAC9D,oDAA2D;AAC3D,mEAAiE;AACjE,wDAAsD;AACtD,8EAA4E;AAE/D,QAAA,UAAU,GAAG;IACtB,kCAAgB;IAChB,kCAAgB;IAChB,sCAAkB;IAClB,4CAAqB;IACrB,0CAAoB;IACpB,4CAAqB;IACrB,gCAAe;IACf,kCAAgB;IAChB,oCAAiB;IACjB,mCAAqB;IACrB,sCAAkB;IAClB,8BAAc;IACd,oDAAyB;CAC5B,CAAC"}
|
|
@@ -1,18 +1,136 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
3
|
import { MongoDBToolBase } from "../mongodbTool.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type ToolArgs, type OperationType } from "../../tool.js";
|
|
5
5
|
import type { IndexDirection } from "mongodb";
|
|
6
6
|
export declare class CreateIndexTool extends MongoDBToolBase {
|
|
7
|
+
private vectorSearchIndexDefinition;
|
|
7
8
|
name: string;
|
|
8
9
|
protected description: string;
|
|
9
10
|
protected argsShape: {
|
|
10
|
-
keys: z.ZodObject<{}, "strip", z.ZodType<IndexDirection, z.ZodTypeDef, IndexDirection>, {}, {}>;
|
|
11
11
|
name: z.ZodOptional<z.ZodString>;
|
|
12
|
+
definition: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
13
|
+
type: z.ZodLiteral<"classic">;
|
|
14
|
+
keys: z.ZodObject<{}, "strip", z.ZodType<IndexDirection, z.ZodTypeDef, IndexDirection>, {}, {}>;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
keys: {};
|
|
17
|
+
type: "classic";
|
|
18
|
+
}, {
|
|
19
|
+
keys: {};
|
|
20
|
+
type: "classic";
|
|
21
|
+
}>, ...z.ZodObject<{
|
|
22
|
+
type: z.ZodLiteral<"vectorSearch">;
|
|
23
|
+
fields: z.ZodEffects<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
24
|
+
type: z.ZodLiteral<"filter">;
|
|
25
|
+
path: z.ZodString;
|
|
26
|
+
}, "strict", z.ZodTypeAny, {
|
|
27
|
+
path: string;
|
|
28
|
+
type: "filter";
|
|
29
|
+
}, {
|
|
30
|
+
path: string;
|
|
31
|
+
type: "filter";
|
|
32
|
+
}>, z.ZodObject<{
|
|
33
|
+
type: z.ZodLiteral<"vector">;
|
|
34
|
+
path: z.ZodString;
|
|
35
|
+
numDimensions: z.ZodDefault<z.ZodNumber>;
|
|
36
|
+
similarity: z.ZodDefault<z.ZodEnum<["cosine", "euclidean", "dotProduct"]>>;
|
|
37
|
+
quantization: z.ZodDefault<z.ZodOptional<z.ZodEnum<["none", "scalar", "binary"]>>>;
|
|
38
|
+
}, "strict", z.ZodTypeAny, {
|
|
39
|
+
path: string;
|
|
40
|
+
type: "vector";
|
|
41
|
+
numDimensions: number;
|
|
42
|
+
similarity: "cosine" | "euclidean" | "dotProduct";
|
|
43
|
+
quantization: "binary" | "none" | "scalar";
|
|
44
|
+
}, {
|
|
45
|
+
path: string;
|
|
46
|
+
type: "vector";
|
|
47
|
+
numDimensions?: number | undefined;
|
|
48
|
+
similarity?: "cosine" | "euclidean" | "dotProduct" | undefined;
|
|
49
|
+
quantization?: "binary" | "none" | "scalar" | undefined;
|
|
50
|
+
}>]>, "atleastone">, [{
|
|
51
|
+
path: string;
|
|
52
|
+
type: "filter";
|
|
53
|
+
} | {
|
|
54
|
+
path: string;
|
|
55
|
+
type: "vector";
|
|
56
|
+
numDimensions: number;
|
|
57
|
+
similarity: "cosine" | "euclidean" | "dotProduct";
|
|
58
|
+
quantization: "binary" | "none" | "scalar";
|
|
59
|
+
}, ...({
|
|
60
|
+
path: string;
|
|
61
|
+
type: "filter";
|
|
62
|
+
} | {
|
|
63
|
+
path: string;
|
|
64
|
+
type: "vector";
|
|
65
|
+
numDimensions: number;
|
|
66
|
+
similarity: "cosine" | "euclidean" | "dotProduct";
|
|
67
|
+
quantization: "binary" | "none" | "scalar";
|
|
68
|
+
})[]], [{
|
|
69
|
+
path: string;
|
|
70
|
+
type: "filter";
|
|
71
|
+
} | {
|
|
72
|
+
path: string;
|
|
73
|
+
type: "vector";
|
|
74
|
+
numDimensions?: number | undefined;
|
|
75
|
+
similarity?: "cosine" | "euclidean" | "dotProduct" | undefined;
|
|
76
|
+
quantization?: "binary" | "none" | "scalar" | undefined;
|
|
77
|
+
}, ...({
|
|
78
|
+
path: string;
|
|
79
|
+
type: "filter";
|
|
80
|
+
} | {
|
|
81
|
+
path: string;
|
|
82
|
+
type: "vector";
|
|
83
|
+
numDimensions?: number | undefined;
|
|
84
|
+
similarity?: "cosine" | "euclidean" | "dotProduct" | undefined;
|
|
85
|
+
quantization?: "binary" | "none" | "scalar" | undefined;
|
|
86
|
+
})[]]>;
|
|
87
|
+
}, "strip", z.ZodTypeAny, {
|
|
88
|
+
type: "vectorSearch";
|
|
89
|
+
fields: [{
|
|
90
|
+
path: string;
|
|
91
|
+
type: "filter";
|
|
92
|
+
} | {
|
|
93
|
+
path: string;
|
|
94
|
+
type: "vector";
|
|
95
|
+
numDimensions: number;
|
|
96
|
+
similarity: "cosine" | "euclidean" | "dotProduct";
|
|
97
|
+
quantization: "binary" | "none" | "scalar";
|
|
98
|
+
}, ...({
|
|
99
|
+
path: string;
|
|
100
|
+
type: "filter";
|
|
101
|
+
} | {
|
|
102
|
+
path: string;
|
|
103
|
+
type: "vector";
|
|
104
|
+
numDimensions: number;
|
|
105
|
+
similarity: "cosine" | "euclidean" | "dotProduct";
|
|
106
|
+
quantization: "binary" | "none" | "scalar";
|
|
107
|
+
})[]];
|
|
108
|
+
}, {
|
|
109
|
+
type: "vectorSearch";
|
|
110
|
+
fields: [{
|
|
111
|
+
path: string;
|
|
112
|
+
type: "filter";
|
|
113
|
+
} | {
|
|
114
|
+
path: string;
|
|
115
|
+
type: "vector";
|
|
116
|
+
numDimensions?: number | undefined;
|
|
117
|
+
similarity?: "cosine" | "euclidean" | "dotProduct" | undefined;
|
|
118
|
+
quantization?: "binary" | "none" | "scalar" | undefined;
|
|
119
|
+
}, ...({
|
|
120
|
+
path: string;
|
|
121
|
+
type: "filter";
|
|
122
|
+
} | {
|
|
123
|
+
path: string;
|
|
124
|
+
type: "vector";
|
|
125
|
+
numDimensions?: number | undefined;
|
|
126
|
+
similarity?: "cosine" | "euclidean" | "dotProduct" | undefined;
|
|
127
|
+
quantization?: "binary" | "none" | "scalar" | undefined;
|
|
128
|
+
})[]];
|
|
129
|
+
}>[]]>, "many">;
|
|
12
130
|
database: z.ZodString;
|
|
13
131
|
collection: z.ZodString;
|
|
14
132
|
};
|
|
15
133
|
operationType: OperationType;
|
|
16
|
-
protected execute({ database, collection,
|
|
134
|
+
protected execute({ database, collection, name, definition: definitions, }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
17
135
|
}
|
|
18
136
|
//# sourceMappingURL=createIndex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.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;
|
|
1
|
+
{"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.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;AAErE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAgB,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,eAAgB,SAAQ,eAAe;IAChD,OAAO,CAAC,2BAA2B,CAyDhC;IAEI,IAAI,SAAkB;IAC7B,SAAS,CAAC,WAAW,SAAsC;IAC3D,SAAS,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBjB;IAEK,aAAa,EAAE,aAAa,CAAY;cAE/B,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,UAAU,EAAE,WAAW,GAC1B,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAkE/D"}
|
|
@@ -6,27 +6,120 @@ const mongodbTool_js_1 = require("../mongodbTool.js");
|
|
|
6
6
|
class CreateIndexTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments);
|
|
9
|
+
this.vectorSearchIndexDefinition = zod_1.z.object({
|
|
10
|
+
type: zod_1.z.literal("vectorSearch"),
|
|
11
|
+
fields: zod_1.z
|
|
12
|
+
.array(zod_1.z.discriminatedUnion("type", [
|
|
13
|
+
zod_1.z
|
|
14
|
+
.object({
|
|
15
|
+
type: zod_1.z.literal("filter"),
|
|
16
|
+
path: zod_1.z
|
|
17
|
+
.string()
|
|
18
|
+
.describe("Name of the field to index. For nested fields, use dot notation to specify path to embedded fields"),
|
|
19
|
+
})
|
|
20
|
+
.strict()
|
|
21
|
+
.describe("Definition for a field that will be used for pre-filtering results."),
|
|
22
|
+
zod_1.z
|
|
23
|
+
.object({
|
|
24
|
+
type: zod_1.z.literal("vector"),
|
|
25
|
+
path: zod_1.z
|
|
26
|
+
.string()
|
|
27
|
+
.describe("Name of the field to index. For nested fields, use dot notation to specify path to embedded fields"),
|
|
28
|
+
numDimensions: zod_1.z
|
|
29
|
+
.number()
|
|
30
|
+
.min(1)
|
|
31
|
+
.max(8192)
|
|
32
|
+
.default(this.config.vectorSearchDimensions)
|
|
33
|
+
.describe("Number of vector dimensions that MongoDB Vector Search enforces at index-time and query-time"),
|
|
34
|
+
similarity: zod_1.z
|
|
35
|
+
.enum(["cosine", "euclidean", "dotProduct"])
|
|
36
|
+
.default(this.config.vectorSearchSimilarityFunction)
|
|
37
|
+
.describe("Vector similarity function to use to search for top K-nearest neighbors. You can set this field only for vector-type fields."),
|
|
38
|
+
quantization: zod_1.z
|
|
39
|
+
.enum(["none", "scalar", "binary"])
|
|
40
|
+
.optional()
|
|
41
|
+
.default("none")
|
|
42
|
+
.describe("Type of automatic vector quantization for your vectors. Use this setting only if your embeddings are float or double vectors."),
|
|
43
|
+
})
|
|
44
|
+
.strict()
|
|
45
|
+
.describe("Definition for a field that contains vector embeddings."),
|
|
46
|
+
]))
|
|
47
|
+
.nonempty()
|
|
48
|
+
.refine((fields) => fields.some((f) => f.type === "vector"), {
|
|
49
|
+
message: "At least one vector field must be defined",
|
|
50
|
+
})
|
|
51
|
+
.describe("Definitions for the vector and filter fields to index, one definition per document. You must specify `vector` for fields that contain vector embeddings and `filter` for additional fields to filter on. At least one vector-type field definition is required."),
|
|
52
|
+
});
|
|
9
53
|
this.name = "create-index";
|
|
10
54
|
this.description = "Create an index for a collection";
|
|
11
55
|
this.argsShape = {
|
|
12
56
|
...mongodbTool_js_1.DbOperationArgs,
|
|
13
|
-
keys: zod_1.z.object({}).catchall(zod_1.z.custom()).describe("The index definition"),
|
|
14
57
|
name: zod_1.z.string().optional().describe("The name of the index"),
|
|
58
|
+
definition: zod_1.z
|
|
59
|
+
.array(zod_1.z.discriminatedUnion("type", [
|
|
60
|
+
zod_1.z.object({
|
|
61
|
+
type: zod_1.z.literal("classic"),
|
|
62
|
+
keys: zod_1.z.object({}).catchall(zod_1.z.custom()).describe("The index definition"),
|
|
63
|
+
}),
|
|
64
|
+
...(this.isFeatureFlagEnabled("vectorSearch" /* FeatureFlags.VectorSearch */) ? [this.vectorSearchIndexDefinition] : []),
|
|
65
|
+
]))
|
|
66
|
+
.describe("The index definition. Use 'classic' for standard indexes and 'vectorSearch' for vector search indexes"),
|
|
15
67
|
};
|
|
16
68
|
this.operationType = "create";
|
|
17
69
|
}
|
|
18
|
-
async execute({ database, collection,
|
|
70
|
+
async execute({ database, collection, name, definition: definitions, }) {
|
|
19
71
|
const provider = await this.ensureConnected();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
72
|
+
let indexes = [];
|
|
73
|
+
const definition = definitions[0];
|
|
74
|
+
if (!definition) {
|
|
75
|
+
throw new Error("Index definition not provided. Expected one of the following: `classic`, `vectorSearch`");
|
|
76
|
+
}
|
|
77
|
+
let responseClarification = "";
|
|
78
|
+
switch (definition.type) {
|
|
79
|
+
case "classic":
|
|
80
|
+
indexes = await provider.createIndexes(database, collection, [
|
|
81
|
+
{
|
|
82
|
+
key: definition.keys,
|
|
83
|
+
name,
|
|
84
|
+
},
|
|
85
|
+
]);
|
|
86
|
+
break;
|
|
87
|
+
case "vectorSearch":
|
|
88
|
+
{
|
|
89
|
+
const isVectorSearchSupported = await this.session.isSearchSupported();
|
|
90
|
+
if (!isVectorSearchSupported) {
|
|
91
|
+
// TODO: remove hacky casts once we merge the local dev tools
|
|
92
|
+
const isLocalAtlasAvailable = (this.server?.tools.filter((t) => t.category === "atlas-local")
|
|
93
|
+
.length ?? 0) > 0;
|
|
94
|
+
const CTA = isLocalAtlasAvailable ? "`atlas-local` tools" : "Atlas CLI";
|
|
95
|
+
return {
|
|
96
|
+
content: [
|
|
97
|
+
{
|
|
98
|
+
text: `The connected MongoDB deployment does not support vector search indexes. Either connect to a MongoDB Atlas cluster or use the ${CTA} to create and manage a local Atlas deployment.`,
|
|
99
|
+
type: "text",
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
isError: true,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
indexes = await provider.createSearchIndexes(database, collection, [
|
|
106
|
+
{
|
|
107
|
+
name,
|
|
108
|
+
definition: {
|
|
109
|
+
fields: definition.fields,
|
|
110
|
+
},
|
|
111
|
+
type: "vectorSearch",
|
|
112
|
+
},
|
|
113
|
+
]);
|
|
114
|
+
responseClarification =
|
|
115
|
+
" Since this is a vector search index, it may take a while for the index to build. Use the `list-indexes` tool to check the index status.";
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
26
119
|
return {
|
|
27
120
|
content: [
|
|
28
121
|
{
|
|
29
|
-
text: `Created the index "${indexes[0]}" on collection "${collection}" in database "${database}"`,
|
|
122
|
+
text: `Created the index "${indexes[0]}" on collection "${collection}" in database "${database}".${responseClarification}`,
|
|
30
123
|
type: "text",
|
|
31
124
|
},
|
|
32
125
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIndex.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAqE;
|
|
1
|
+
{"version":3,"file":"createIndex.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import { MongoDBToolBase } from "../mongodbTool.js";
|
|
4
|
+
import { type ToolArgs, type OperationType } from "../../tool.js";
|
|
5
|
+
export declare class DropIndexTool extends MongoDBToolBase {
|
|
6
|
+
name: string;
|
|
7
|
+
protected description: string;
|
|
8
|
+
protected argsShape: {
|
|
9
|
+
indexName: z.ZodString;
|
|
10
|
+
database: z.ZodString;
|
|
11
|
+
collection: z.ZodString;
|
|
12
|
+
};
|
|
13
|
+
operationType: OperationType;
|
|
14
|
+
protected execute({ database, collection, indexName, }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
15
|
+
protected getConfirmationMessage({ database, collection, indexName }: ToolArgs<typeof this.argsShape>): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=dropIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropIndex.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/dropIndex.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAuB,MAAM,eAAe,CAAC;AAEvF,qBAAa,aAAc,SAAQ,eAAe;IACvC,IAAI,SAAgB;IAC3B,SAAS,CAAC,WAAW,SAA6D;IAClF,SAAS,CAAC,SAAS;;;;MAGjB;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;IAmB5D,SAAS,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM;CAOjH"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DropIndexTool = void 0;
|
|
7
|
+
const zod_1 = __importDefault(require("zod"));
|
|
8
|
+
const mongodbTool_js_1 = require("../mongodbTool.js");
|
|
9
|
+
const tool_js_1 = require("../../tool.js");
|
|
10
|
+
class DropIndexTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.name = "drop-index";
|
|
14
|
+
this.description = "Drop an index for the provided database and collection.";
|
|
15
|
+
this.argsShape = {
|
|
16
|
+
...mongodbTool_js_1.DbOperationArgs,
|
|
17
|
+
indexName: zod_1.default.string().nonempty().describe("The name of the index to be dropped."),
|
|
18
|
+
};
|
|
19
|
+
this.operationType = "delete";
|
|
20
|
+
}
|
|
21
|
+
async execute({ database, collection, indexName, }) {
|
|
22
|
+
const provider = await this.ensureConnected();
|
|
23
|
+
const result = await provider.runCommand(database, {
|
|
24
|
+
dropIndexes: collection,
|
|
25
|
+
index: indexName,
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
content: (0, tool_js_1.formatUntrustedData)(`${result.ok ? "Successfully dropped" : "Failed to drop"} the index from the provided namespace.`, JSON.stringify({
|
|
29
|
+
indexName,
|
|
30
|
+
namespace: `${database}.${collection}`,
|
|
31
|
+
})),
|
|
32
|
+
isError: result.ok ? undefined : true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
getConfirmationMessage({ database, collection, indexName }) {
|
|
36
|
+
return (`You are about to drop the \`${indexName}\` index from the \`${database}.${collection}\` namespace:\n\n` +
|
|
37
|
+
"This operation will permanently remove the index and might affect the performance of queries relying on this index.\n\n" +
|
|
38
|
+
"**Do you confirm the execution of the action?**");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.DropIndexTool = DropIndexTool;
|
|
42
|
+
//# sourceMappingURL=dropIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropIndex.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/dropIndex.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,sDAAqE;AACrE,2CAAuF;AAEvF,MAAa,aAAc,SAAQ,gCAAe;IAAlD;;QACW,SAAI,GAAG,YAAY,CAAC;QACjB,gBAAW,GAAG,yDAAyD,CAAC;QACxE,cAAS,GAAG;YAClB,GAAG,gCAAe;YAClB,SAAS,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACpF,CAAC;QACK,kBAAa,GAAkB,QAAQ,CAAC;IAgCnD,CAAC;IA9Ba,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;YAC/C,WAAW,EAAE,UAAU;YACvB,KAAK,EAAE,SAAS;SACnB,CAAC,CAAC;QAEH,OAAO;YACH,OAAO,EAAE,IAAA,6BAAmB,EACxB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,yCAAyC,EACjG,IAAI,CAAC,SAAS,CAAC;gBACX,SAAS;gBACT,SAAS,EAAE,GAAG,QAAQ,IAAI,UAAU,EAAE;aACzC,CAAC,CACL;YACD,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SACxC,CAAC;IACN,CAAC;IAES,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAmC;QACjG,OAAO,CACH,+BAA+B,SAAS,uBAAuB,QAAQ,IAAI,UAAU,mBAAmB;YACxG,yHAAyH;YACzH,iDAAiD,CACpD,CAAC;IACN,CAAC;CACJ;AAvCD,sCAuCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectionIndexes.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionIndexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG7D,qBAAa,qBAAsB,SAAQ,eAAe;IAC/C,IAAI,SAAwB;IACnC,SAAS,CAAC,WAAW,SAA2C;IAChE,SAAS,CAAC,SAAS;;;MAAmB;IAC/B,aAAa,EAAE,aAAa,CAAc;cAEjC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAgB5G,SAAS,CAAC,WAAW,CACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GACtC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;CAe9C"}
|
|
@@ -9,7 +9,7 @@ class CollectionIndexesTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
9
9
|
this.name = "collection-indexes";
|
|
10
10
|
this.description = "Describe the indexes for a collection";
|
|
11
11
|
this.argsShape = mongodbTool_js_1.DbOperationArgs;
|
|
12
|
-
this.operationType = "
|
|
12
|
+
this.operationType = "metadata";
|
|
13
13
|
}
|
|
14
14
|
async execute({ database, collection }) {
|
|
15
15
|
const provider = await this.ensureConnected();
|
|
@@ -31,6 +31,7 @@ class CollectionIndexesTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
31
31
|
type: "text",
|
|
32
32
|
},
|
|
33
33
|
],
|
|
34
|
+
isError: true,
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
return super.handleError(error, args);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectionIndexes.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionIndexes.ts"],"names":[],"mappings":";;;AACA,sDAAqE;AAErE,2CAAoD;AAEpD,MAAa,qBAAsB,SAAQ,gCAAe;IAA1D;;QACW,SAAI,GAAG,oBAAoB,CAAC;QACzB,gBAAW,GAAG,uCAAuC,CAAC;QACtD,cAAS,GAAG,gCAAe,CAAC;QAC/B,kBAAa,GAAkB,UAAU,CAAC;IAoCrD,CAAC;IAlCa,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAoC;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEhE,OAAO;YACH,OAAO,EAAE,IAAA,6BAAmB,EACxB,SAAS,OAAO,CAAC,MAAM,+BAA+B,UAAU,IAAI,EACpE,OAAO,CAAC,MAAM,GAAG,CAAC;gBACd,CAAC,CAAC,OAAO;qBACF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,CAAC,IAAI,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;qBACjF,IAAI,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,SAAS,CAClB;SACJ,CAAC;IACN,CAAC;IAES,WAAW,CACjB,KAAc,EACd,IAAqC;QAErC,IAAI,KAAK,YAAY,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,mBAAmB,EAAE,CAAC;YAC1F,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,oBAAoB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,+DAA+D;wBACzH,IAAI,EAAE,MAAM;qBACf;iBACJ;gBACD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACJ;AAxCD,sDAwCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectionStorageSize.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionStorageSize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,qBAAa,yBAA0B,SAAQ,eAAe;IACnD,IAAI,SAA6B;IACxC,SAAS,CAAC,WAAW,SAAqC;IAC1D,SAAS,CAAC,SAAS;;;MAAmB;IAE/B,aAAa,EAAE,aAAa,CAAc;cAEjC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAqB5G,SAAS,CAAC,WAAW,CACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GACtC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"collectionStorageSize.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/collectionStorageSize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,qBAAa,yBAA0B,SAAQ,eAAe;IACnD,IAAI,SAA6B;IACxC,SAAS,CAAC,WAAW,SAAqC;IAC1D,SAAS,CAAC,SAAS;;;MAAmB;IAE/B,aAAa,EAAE,aAAa,CAAc;cAEjC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAqB5G,SAAS,CAAC,WAAW,CACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GACtC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;IAgB3C,OAAO,CAAC,MAAM,CAAC,QAAQ;CAiB1B"}
|