mongodb-mcp-server 0.0.4 → 0.0.5
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/.github/workflows/code_health.yaml +53 -4
- package/.github/workflows/prepare_release.yaml +4 -4
- package/README.md +2 -0
- package/dist/common/atlas/apiClient.js +30 -2
- package/dist/common/atlas/apiClient.js.map +1 -1
- package/dist/config.js +2 -7
- package/dist/config.js.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.js +52 -27
- package/dist/logger.js.map +1 -1
- package/dist/packageInfo.js +6 -0
- package/dist/packageInfo.js.map +1 -0
- package/dist/server.js +71 -8
- package/dist/server.js.map +1 -1
- package/dist/session.js +17 -12
- package/dist/session.js.map +1 -1
- package/dist/telemetry/constants.js +15 -0
- package/dist/telemetry/constants.js.map +1 -0
- package/dist/telemetry/eventCache.js +53 -0
- package/dist/telemetry/eventCache.js.map +1 -0
- package/dist/telemetry/telemetry.js +96 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/telemetry/types.js +2 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/tools/atlas/atlasTool.js +8 -3
- package/dist/tools/atlas/atlasTool.js.map +1 -1
- package/dist/tools/atlas/createAccessList.js +0 -1
- package/dist/tools/atlas/createAccessList.js.map +1 -1
- package/dist/tools/atlas/createDBUser.js +0 -1
- package/dist/tools/atlas/createDBUser.js.map +1 -1
- package/dist/tools/atlas/createFreeCluster.js +0 -1
- package/dist/tools/atlas/createFreeCluster.js.map +1 -1
- package/dist/tools/atlas/createProject.js +0 -1
- package/dist/tools/atlas/createProject.js.map +1 -1
- package/dist/tools/atlas/inspectAccessList.js +0 -1
- package/dist/tools/atlas/inspectAccessList.js.map +1 -1
- package/dist/tools/atlas/inspectCluster.js +0 -1
- package/dist/tools/atlas/inspectCluster.js.map +1 -1
- package/dist/tools/atlas/listClusters.js +0 -1
- package/dist/tools/atlas/listClusters.js.map +1 -1
- package/dist/tools/atlas/listDBUsers.js +0 -1
- package/dist/tools/atlas/listDBUsers.js.map +1 -1
- package/dist/tools/atlas/listOrgs.js +0 -1
- package/dist/tools/atlas/listOrgs.js.map +1 -1
- package/dist/tools/atlas/listProjects.js +10 -4
- package/dist/tools/atlas/listProjects.js.map +1 -1
- package/dist/tools/mongodb/metadata/collectionSchema.js +15 -13
- package/dist/tools/mongodb/metadata/collectionSchema.js.map +1 -1
- package/dist/tools/mongodb/metadata/collectionStorageSize.js +32 -3
- package/dist/tools/mongodb/metadata/collectionStorageSize.js.map +1 -1
- package/dist/tools/mongodb/metadata/connect.js +5 -6
- package/dist/tools/mongodb/metadata/connect.js.map +1 -1
- package/dist/tools/mongodb/metadata/dbStats.js +6 -1
- package/dist/tools/mongodb/metadata/dbStats.js.map +1 -1
- package/dist/tools/mongodb/metadata/explain.js +14 -7
- package/dist/tools/mongodb/metadata/explain.js.map +1 -1
- package/dist/tools/mongodb/metadata/logs.js +45 -0
- package/dist/tools/mongodb/metadata/logs.js.map +1 -0
- package/dist/tools/mongodb/mongodbTool.js +10 -11
- package/dist/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/tools/mongodb/read/aggregate.js +3 -3
- package/dist/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/tools/mongodb/read/collectionIndexes.js +24 -5
- package/dist/tools/mongodb/read/collectionIndexes.js.map +1 -1
- package/dist/tools/mongodb/read/find.js +3 -2
- package/dist/tools/mongodb/read/find.js.map +1 -1
- package/dist/tools/mongodb/tools.js +2 -0
- package/dist/tools/mongodb/tools.js.map +1 -1
- package/dist/tools/mongodb/update/renameCollection.js +28 -4
- package/dist/tools/mongodb/update/renameCollection.js.map +1 -1
- package/dist/tools/mongodb/update/updateMany.js +5 -7
- package/dist/tools/mongodb/update/updateMany.js.map +1 -1
- package/dist/tools/tool.js +39 -10
- package/dist/tools/tool.js.map +1 -1
- package/eslint.config.js +29 -10
- package/global.d.ts +1 -0
- package/package.json +6 -2
- package/scripts/apply.ts +9 -7
- package/scripts/filter.ts +3 -2
- package/src/common/atlas/apiClient.ts +48 -7
- package/src/config.ts +4 -10
- package/src/index.ts +10 -6
- package/src/logger.ts +66 -28
- package/src/packageInfo.ts +6 -0
- package/src/server.ts +103 -9
- package/src/session.ts +34 -17
- package/src/telemetry/constants.ts +15 -0
- package/src/telemetry/eventCache.ts +62 -0
- package/src/telemetry/telemetry.ts +137 -0
- package/src/telemetry/types.ts +60 -0
- package/src/tools/atlas/atlasTool.ts +7 -5
- package/src/tools/atlas/createAccessList.ts +0 -2
- package/src/tools/atlas/createDBUser.ts +0 -2
- package/src/tools/atlas/createFreeCluster.ts +0 -2
- package/src/tools/atlas/createProject.ts +0 -1
- package/src/tools/atlas/inspectAccessList.ts +0 -2
- package/src/tools/atlas/inspectCluster.ts +0 -2
- package/src/tools/atlas/listClusters.ts +0 -2
- package/src/tools/atlas/listDBUsers.ts +0 -2
- package/src/tools/atlas/listOrgs.ts +0 -2
- package/src/tools/atlas/listProjects.ts +12 -4
- package/src/tools/mongodb/metadata/collectionSchema.ts +16 -14
- package/src/tools/mongodb/metadata/collectionStorageSize.ts +41 -3
- package/src/tools/mongodb/metadata/connect.ts +5 -6
- package/src/tools/mongodb/metadata/dbStats.ts +6 -1
- package/src/tools/mongodb/metadata/explain.ts +20 -7
- package/src/tools/mongodb/metadata/logs.ts +55 -0
- package/src/tools/mongodb/mongodbTool.ts +12 -15
- package/src/tools/mongodb/read/aggregate.ts +3 -3
- package/src/tools/mongodb/read/collectionIndexes.ts +29 -5
- package/src/tools/mongodb/read/find.ts +3 -2
- package/src/tools/mongodb/tools.ts +2 -0
- package/src/tools/mongodb/update/renameCollection.ts +33 -4
- package/src/tools/mongodb/update/updateMany.ts +5 -7
- package/src/tools/tool.ts +51 -15
- package/tests/integration/helpers.ts +84 -107
- package/tests/integration/inMemoryTransport.ts +3 -2
- package/tests/integration/server.test.ts +47 -21
- package/tests/integration/tools/atlas/accessLists.test.ts +13 -15
- package/tests/integration/tools/atlas/atlasHelpers.ts +3 -8
- package/tests/integration/tools/atlas/clusters.test.ts +12 -13
- package/tests/integration/tools/atlas/dbUsers.test.ts +9 -9
- package/tests/integration/tools/atlas/orgs.test.ts +4 -4
- package/tests/integration/tools/atlas/projects.test.ts +10 -12
- package/tests/integration/tools/mongodb/create/createCollection.test.ts +19 -62
- package/tests/integration/tools/mongodb/create/createIndex.test.ts +41 -87
- package/tests/integration/tools/mongodb/create/insertMany.test.ts +35 -78
- package/tests/integration/tools/mongodb/delete/deleteMany.test.ts +25 -62
- package/tests/integration/tools/mongodb/delete/dropCollection.test.ts +22 -71
- package/tests/integration/tools/mongodb/delete/dropDatabase.test.ts +29 -63
- package/tests/integration/tools/mongodb/metadata/collectionSchema.test.ts +154 -0
- package/tests/integration/tools/mongodb/metadata/collectionStorageSize.test.ts +86 -0
- package/tests/integration/tools/mongodb/metadata/connect.test.ts +33 -23
- package/tests/integration/tools/mongodb/metadata/dbStats.test.ts +104 -0
- package/tests/integration/tools/mongodb/metadata/explain.test.ts +171 -0
- package/tests/integration/tools/mongodb/metadata/listCollections.test.ts +28 -56
- package/tests/integration/tools/mongodb/metadata/listDatabases.test.ts +32 -26
- package/tests/integration/tools/mongodb/metadata/logs.test.ts +83 -0
- package/tests/integration/tools/mongodb/mongodbHelpers.ts +165 -0
- package/tests/integration/tools/mongodb/read/aggregate.test.ts +99 -0
- package/tests/integration/tools/mongodb/read/collectionIndexes.test.ts +99 -0
- package/tests/integration/tools/mongodb/read/count.test.ts +31 -79
- package/tests/integration/tools/mongodb/read/find.test.ts +182 -0
- package/tests/integration/tools/mongodb/update/renameCollection.test.ts +194 -0
- package/tests/integration/tools/mongodb/update/updateMany.test.ts +238 -0
- package/tsconfig.jest.json +2 -1
- package/tsconfig.json +1 -1
- package/tsconfig.lint.json +8 -0
|
@@ -31,8 +31,7 @@ jobs:
|
|
|
31
31
|
cache: "npm"
|
|
32
32
|
- name: Install dependencies
|
|
33
33
|
run: npm ci
|
|
34
|
-
-
|
|
35
|
-
run: npm run generate
|
|
34
|
+
- run: npm run generate
|
|
36
35
|
|
|
37
36
|
run-tests:
|
|
38
37
|
strategy:
|
|
@@ -44,6 +43,26 @@ jobs:
|
|
|
44
43
|
- uses: GitHubSecurityLab/actions-permissions/monitor@v1
|
|
45
44
|
if: matrix.os != 'windows-latest'
|
|
46
45
|
- uses: actions/checkout@v4
|
|
46
|
+
- uses: actions/setup-node@v4
|
|
47
|
+
with:
|
|
48
|
+
node-version-file: package.json
|
|
49
|
+
cache: "npm"
|
|
50
|
+
- name: Install dependencies
|
|
51
|
+
run: npm ci
|
|
52
|
+
- name: Run tests
|
|
53
|
+
run: npm test
|
|
54
|
+
- name: Upload test results
|
|
55
|
+
if: always() && matrix.os == 'ubuntu-latest'
|
|
56
|
+
uses: actions/upload-artifact@v4
|
|
57
|
+
with:
|
|
58
|
+
name: test-results
|
|
59
|
+
path: coverage/lcov.info
|
|
60
|
+
|
|
61
|
+
run-atlas-tests:
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
steps:
|
|
64
|
+
- uses: GitHubSecurityLab/actions-permissions/monitor@v1
|
|
65
|
+
- uses: actions/checkout@v4
|
|
47
66
|
- uses: actions/setup-node@v4
|
|
48
67
|
with:
|
|
49
68
|
node-version-file: package.json
|
|
@@ -55,10 +74,40 @@ jobs:
|
|
|
55
74
|
MDB_MCP_API_CLIENT_ID: ${{ secrets.TEST_ATLAS_CLIENT_ID }}
|
|
56
75
|
MDB_MCP_API_CLIENT_SECRET: ${{ secrets.TEST_ATLAS_CLIENT_SECRET }}
|
|
57
76
|
MDB_MCP_API_BASE_URL: ${{ vars.TEST_ATLAS_BASE_URL }}
|
|
58
|
-
run: npm test
|
|
77
|
+
run: npm test -- --testPathIgnorePatterns "tests/integration/tools/mongodb" --testPathIgnorePatterns "tests/integration/[^/]+\.ts"
|
|
78
|
+
- name: Upload test results
|
|
79
|
+
uses: actions/upload-artifact@v4
|
|
80
|
+
if: always()
|
|
81
|
+
with:
|
|
82
|
+
name: atlas-test-results
|
|
83
|
+
path: coverage/lcov.info
|
|
84
|
+
coverage:
|
|
85
|
+
runs-on: ubuntu-latest
|
|
86
|
+
needs: [run-tests, run-atlas-tests]
|
|
87
|
+
if: always()
|
|
88
|
+
steps:
|
|
89
|
+
- uses: actions/checkout@v4
|
|
90
|
+
- uses: actions/setup-node@v4
|
|
91
|
+
with:
|
|
92
|
+
node-version-file: package.json
|
|
93
|
+
cache: "npm"
|
|
94
|
+
- name: Install dependencies
|
|
95
|
+
run: npm ci
|
|
96
|
+
- name: Download test results
|
|
97
|
+
uses: actions/download-artifact@v4
|
|
98
|
+
with:
|
|
99
|
+
name: test-results
|
|
100
|
+
path: coverage/mongodb
|
|
101
|
+
- name: Download atlas test results
|
|
102
|
+
uses: actions/download-artifact@v4
|
|
103
|
+
with:
|
|
104
|
+
name: atlas-test-results
|
|
105
|
+
path: coverage/atlas
|
|
106
|
+
- name: Merge coverage reports
|
|
107
|
+
run: |
|
|
108
|
+
npx -y lcov-result-merger@5.0.1 "coverage/*/lcov.info" "coverage/lcov.info"
|
|
59
109
|
- name: Coveralls GitHub Action
|
|
60
110
|
uses: coverallsapp/github-action@v2.3.6
|
|
61
|
-
if: matrix.os == 'ubuntu-latest'
|
|
62
111
|
with:
|
|
63
112
|
file: coverage/lcov.info
|
|
64
113
|
git-branch: ${{ github.head_ref || github.ref_name }}
|
|
@@ -33,13 +33,13 @@ jobs:
|
|
|
33
33
|
- name: Create release PR
|
|
34
34
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # 7.0.8
|
|
35
35
|
with:
|
|
36
|
-
title: "Release
|
|
36
|
+
title: "Release ${{ steps.bump-version.outputs.NEW_VERSION }}"
|
|
37
37
|
token: ${{ steps.app-token.outputs.token }}
|
|
38
|
-
commit-message: "Bump version to
|
|
38
|
+
commit-message: "Bump version to ${{ steps.bump-version.outputs.NEW_VERSION }}"
|
|
39
39
|
body: |
|
|
40
|
-
This PR bumps the package version to
|
|
40
|
+
This PR bumps the package version to ${{ steps.bump-version.outputs.NEW_VERSION }}.
|
|
41
41
|
Once merged, the new version will be published to npm.
|
|
42
42
|
base: main
|
|
43
|
-
branch: release
|
|
43
|
+
branch: release/${{ steps.bump-version.outputs.NEW_VERSION }}
|
|
44
44
|
author: "${{ steps.app-token.outputs.app-slug}}[bot] <${{ steps.app-token.outputs.app-email }}>"
|
|
45
45
|
committer: "${{ steps.app-token.outputs.app-slug}}[bot] <${{ steps.app-token.outputs.app-email }}>"
|
package/README.md
CHANGED
|
@@ -109,6 +109,8 @@ You may experiment asking `Can you connect to my mongodb instance?`.
|
|
|
109
109
|
- `atlas-list-db-users` - List MongoDB Atlas database users
|
|
110
110
|
- `atlas-create-db-user` - List MongoDB Atlas database users
|
|
111
111
|
|
|
112
|
+
NOTE: atlas tools are only available when you set credentials on [configuration](#configuration) section.
|
|
113
|
+
|
|
112
114
|
#### MongoDB Database Tools
|
|
113
115
|
|
|
114
116
|
- `connect` - Connect to a MongoDB instance
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import config from "../../config.js";
|
|
2
1
|
import createClient from "openapi-fetch";
|
|
3
2
|
import { ClientCredentials } from "simple-oauth2";
|
|
4
3
|
import { ApiClientError } from "./apiClientError.js";
|
|
4
|
+
import { mongoLogId } from "mongodb-log-writer";
|
|
5
|
+
import logger from "../../logger.js";
|
|
6
|
+
import { packageInfo } from "../../packageInfo.js";
|
|
5
7
|
const ATLAS_API_VERSION = "2025-03-12";
|
|
6
8
|
export class ApiClient {
|
|
7
9
|
constructor(options) {
|
|
@@ -37,7 +39,7 @@ export class ApiClient {
|
|
|
37
39
|
...options,
|
|
38
40
|
baseUrl: options?.baseUrl || "https://cloud.mongodb.com/",
|
|
39
41
|
userAgent: options?.userAgent ||
|
|
40
|
-
`AtlasMCP/${
|
|
42
|
+
`AtlasMCP/${packageInfo.version} (${process.platform}; ${process.arch}; ${process.env.HOSTNAME || "unknown"})`,
|
|
41
43
|
};
|
|
42
44
|
this.client = createClient({
|
|
43
45
|
baseUrl: this.options.baseUrl,
|
|
@@ -61,6 +63,10 @@ export class ApiClient {
|
|
|
61
63
|
}
|
|
62
64
|
this.client.use(this.errorMiddleware);
|
|
63
65
|
}
|
|
66
|
+
hasCredentials() {
|
|
67
|
+
logger.info(mongoLogId(1000000), "api-client", `Checking if API client has credentials: ${!!(this.oauth2Client && this.accessToken)}`);
|
|
68
|
+
return !!(this.oauth2Client && this.accessToken);
|
|
69
|
+
}
|
|
64
70
|
async getIpInfo() {
|
|
65
71
|
const accessToken = await this.getAccessToken();
|
|
66
72
|
const endpoint = "api/private/ipinfo";
|
|
@@ -78,6 +84,28 @@ export class ApiClient {
|
|
|
78
84
|
}
|
|
79
85
|
return (await response.json());
|
|
80
86
|
}
|
|
87
|
+
async sendEvents(events) {
|
|
88
|
+
let endpoint = "api/private/unauth/telemetry/events";
|
|
89
|
+
const headers = {
|
|
90
|
+
Accept: "application/json",
|
|
91
|
+
"Content-Type": "application/json",
|
|
92
|
+
"User-Agent": this.options.userAgent,
|
|
93
|
+
};
|
|
94
|
+
const accessToken = await this.getAccessToken();
|
|
95
|
+
if (accessToken) {
|
|
96
|
+
endpoint = "api/private/v1.0/telemetry/events";
|
|
97
|
+
headers["Authorization"] = `Bearer ${accessToken}`;
|
|
98
|
+
}
|
|
99
|
+
const url = new URL(endpoint, this.options.baseUrl);
|
|
100
|
+
const response = await fetch(url, {
|
|
101
|
+
method: "POST",
|
|
102
|
+
headers,
|
|
103
|
+
body: JSON.stringify(events),
|
|
104
|
+
});
|
|
105
|
+
if (!response.ok) {
|
|
106
|
+
throw await ApiClientError.fromResponse(response);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
81
109
|
// DO NOT EDIT. This is auto-generated code.
|
|
82
110
|
async listClustersForAllProjects(options) {
|
|
83
111
|
const { data } = await this.client.GET("/api/atlas/v2/clusters", options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../src/common/atlas/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../src/common/atlas/apiClient.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import os from "os";
|
|
3
3
|
import argv from "yargs-parser";
|
|
4
|
-
import packageJson from "../package.json" with { type: "json" };
|
|
5
4
|
const defaults = {
|
|
6
5
|
logPath: getLogPath(),
|
|
7
6
|
connectOptions: {
|
|
@@ -11,17 +10,13 @@ const defaults = {
|
|
|
11
10
|
timeoutMS: 30000,
|
|
12
11
|
},
|
|
13
12
|
disabledTools: [],
|
|
13
|
+
telemetry: "disabled",
|
|
14
14
|
};
|
|
15
|
-
const
|
|
15
|
+
export const config = {
|
|
16
16
|
...defaults,
|
|
17
17
|
...getEnvConfig(),
|
|
18
18
|
...getCliConfig(),
|
|
19
19
|
};
|
|
20
|
-
const config = {
|
|
21
|
-
...mergedUserConfig,
|
|
22
|
-
version: packageJson.version,
|
|
23
|
-
};
|
|
24
|
-
export default config;
|
|
25
20
|
function getLogPath() {
|
|
26
21
|
const localDataPath = process.platform === "win32"
|
|
27
22
|
? path.join(process.env.LOCALAPPDATA || process.env.APPDATA || os.homedir(), "mongodb")
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,cAAc,CAAC;AAsBhC,MAAM,QAAQ,GAAe;IACzB,OAAO,EAAE,UAAU,EAAE;IACrB,cAAc,EAAE;QACZ,WAAW,EAAE,OAAO;QACpB,cAAc,EAAE,oBAAoB;QACpC,YAAY,EAAE,UAAU;QACxB,SAAS,EAAE,KAAM;KACpB;IACD,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,UAAU;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,GAAG,QAAQ;IACX,GAAG,YAAY,EAAE;IACjB,GAAG,YAAY,EAAE;CACpB,CAAC;AAEF,SAAS,UAAU;IACf,MAAM,aAAa,GACf,OAAO,CAAC,QAAQ,KAAK,OAAO;QACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;QACvF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAErE,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,oFAAoF;AACpF,yFAAyF;AACzF,uBAAuB;AACvB,SAAS,YAAY;IACjB,SAAS,QAAQ,CAAC,GAA4B,EAAE,IAAc,EAAE,KAAa;QACzE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;gBAChC,OAAO;YACX,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC/C,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBACtD,GAAG,CAAC,YAAY,CAAC,GAAG,YAAY,KAAK,MAAM,CAAC;gBAC5C,OAAO;YACX,CAAC;YAED,kCAAkC;YAClC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC5B,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1D,OAAO;YACX,CAAC;YAED,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,YAAY,CAA4B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CACnD,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAChD,CAAC;IACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,GAAG;aAChB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjD,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,+DAA+D;AAC/D,SAAS,YAAY;IACjB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC/B,KAAK,EAAE,CAAC,eAAe,CAAC;KAC3B,CAAmC,CAAC;AACzC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,18 +3,24 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
3
3
|
import logger from "./logger.js";
|
|
4
4
|
import { mongoLogId } from "mongodb-log-writer";
|
|
5
5
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
-
import config from "./config.js";
|
|
6
|
+
import { config } from "./config.js";
|
|
7
7
|
import { Session } from "./session.js";
|
|
8
8
|
import { Server } from "./server.js";
|
|
9
|
+
import { packageInfo } from "./packageInfo.js";
|
|
9
10
|
try {
|
|
10
|
-
const session = new Session(
|
|
11
|
+
const session = new Session({
|
|
12
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
13
|
+
apiClientId: config.apiClientId,
|
|
14
|
+
apiClientSecret: config.apiClientSecret,
|
|
15
|
+
});
|
|
11
16
|
const mcpServer = new McpServer({
|
|
12
|
-
name:
|
|
13
|
-
version:
|
|
17
|
+
name: packageInfo.mcpServerName,
|
|
18
|
+
version: packageInfo.version,
|
|
14
19
|
});
|
|
15
20
|
const server = new Server({
|
|
16
21
|
mcpServer,
|
|
17
22
|
session,
|
|
23
|
+
userConfig: config,
|
|
18
24
|
});
|
|
19
25
|
const transport = new StdioServerTransport();
|
|
20
26
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,IAAI,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;KAC1C,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC5B,IAAI,EAAE,WAAW,CAAC,aAAa;QAC/B,OAAO,EAAE,WAAW,CAAC,OAAO;KAC/B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACtB,SAAS;QACT,OAAO;QACP,UAAU,EAAE,MAAM;KACrB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAAC,OAAO,KAAc,EAAE,CAAC;IACtB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAS,CAAC,EAAE,QAAQ,EAAE,+BAA+B,KAAe,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
package/dist/logger.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import fs from "fs/promises";
|
|
2
2
|
import { MongoLogManager } from "mongodb-log-writer";
|
|
3
|
-
import config from "./config.js";
|
|
4
3
|
import redact from "mongodb-redact";
|
|
5
4
|
class LoggerBase {
|
|
6
5
|
info(id, context, message) {
|
|
@@ -34,20 +33,29 @@ class ConsoleLogger extends LoggerBase {
|
|
|
34
33
|
console.error(`[${level.toUpperCase()}] ${id.__value} - ${context}: ${message}`);
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
|
-
class
|
|
38
|
-
constructor(logWriter
|
|
36
|
+
class DiskLogger extends LoggerBase {
|
|
37
|
+
constructor(logWriter) {
|
|
39
38
|
super();
|
|
40
39
|
this.logWriter = logWriter;
|
|
41
|
-
|
|
40
|
+
}
|
|
41
|
+
static async fromPath(logPath) {
|
|
42
|
+
await fs.mkdir(logPath, { recursive: true });
|
|
43
|
+
const manager = new MongoLogManager({
|
|
44
|
+
directory: logPath,
|
|
45
|
+
retentionDays: 30,
|
|
46
|
+
onwarn: console.warn,
|
|
47
|
+
onerror: console.error,
|
|
48
|
+
gzip: false,
|
|
49
|
+
retentionGB: 1,
|
|
50
|
+
});
|
|
51
|
+
await manager.cleanupOldLogFiles();
|
|
52
|
+
const logWriter = await manager.createLogWriter();
|
|
53
|
+
return new DiskLogger(logWriter);
|
|
42
54
|
}
|
|
43
55
|
log(level, id, context, message) {
|
|
44
56
|
message = redact(message);
|
|
45
57
|
const mongoDBLevel = this.mapToMongoDBLogLevel(level);
|
|
46
58
|
this.logWriter[mongoDBLevel]("MONGODB-MCP", id, context, message);
|
|
47
|
-
void this.server.server.sendLoggingMessage({
|
|
48
|
-
level,
|
|
49
|
-
data: `[${context}]: ${message}`,
|
|
50
|
-
});
|
|
51
59
|
}
|
|
52
60
|
mapToMongoDBLogLevel(level) {
|
|
53
61
|
switch (level) {
|
|
@@ -69,29 +77,46 @@ class Logger extends LoggerBase {
|
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
79
|
}
|
|
72
|
-
class
|
|
73
|
-
constructor() {
|
|
74
|
-
super(
|
|
75
|
-
this.
|
|
80
|
+
class McpLogger extends LoggerBase {
|
|
81
|
+
constructor(server) {
|
|
82
|
+
super();
|
|
83
|
+
this.server = server;
|
|
84
|
+
}
|
|
85
|
+
log(level, _, context, message) {
|
|
86
|
+
void this.server.server.sendLoggingMessage({
|
|
87
|
+
level,
|
|
88
|
+
data: `[${context}]: ${message}`,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
class CompositeLogger extends LoggerBase {
|
|
93
|
+
constructor(...loggers) {
|
|
94
|
+
super();
|
|
95
|
+
if (loggers.length === 0) {
|
|
96
|
+
// default to ConsoleLogger
|
|
97
|
+
this.loggers = [new ConsoleLogger()];
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.loggers = [...loggers];
|
|
101
|
+
}
|
|
102
|
+
setLoggers(...loggers) {
|
|
103
|
+
if (loggers.length === 0) {
|
|
104
|
+
throw new Error("At least one logger must be provided");
|
|
105
|
+
}
|
|
106
|
+
this.loggers = [...loggers];
|
|
76
107
|
}
|
|
77
108
|
log(level, id, context, message) {
|
|
78
|
-
|
|
109
|
+
for (const logger of this.loggers) {
|
|
110
|
+
logger.log(level, id, context, message);
|
|
111
|
+
}
|
|
79
112
|
}
|
|
80
113
|
}
|
|
81
|
-
const logger = new
|
|
114
|
+
const logger = new CompositeLogger();
|
|
82
115
|
export default logger;
|
|
83
|
-
export async function initializeLogger(server) {
|
|
84
|
-
await
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
onwarn: console.warn,
|
|
89
|
-
onerror: console.error,
|
|
90
|
-
gzip: false,
|
|
91
|
-
retentionGB: 1,
|
|
92
|
-
});
|
|
93
|
-
await manager.cleanupOldLogFiles();
|
|
94
|
-
const logWriter = await manager.createLogWriter();
|
|
95
|
-
logger["internalLogger"] = new Logger(logWriter, server);
|
|
116
|
+
export async function initializeLogger(server, logPath) {
|
|
117
|
+
const diskLogger = await DiskLogger.fromPath(logPath);
|
|
118
|
+
const mcpLogger = new McpLogger(server);
|
|
119
|
+
logger.setLoggers(mcpLogger, diskLogger);
|
|
120
|
+
return logger;
|
|
96
121
|
}
|
|
97
122
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAc,eAAe,EAAkB,MAAM,oBAAoB,CAAC;AACjF,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageInfo.js","sourceRoot":"","sources":["../src/packageInfo.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,aAAa,EAAE,oBAAoB;CACtC,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -2,38 +2,101 @@ import { AtlasTools } from "./tools/atlas/tools.js";
|
|
|
2
2
|
import { MongoDbTools } from "./tools/mongodb/tools.js";
|
|
3
3
|
import logger, { initializeLogger } from "./logger.js";
|
|
4
4
|
import { mongoLogId } from "mongodb-log-writer";
|
|
5
|
-
import
|
|
5
|
+
import { ObjectId } from "mongodb";
|
|
6
|
+
import { Telemetry } from "./telemetry/telemetry.js";
|
|
7
|
+
import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import assert from "assert";
|
|
6
9
|
export class Server {
|
|
7
|
-
constructor({ mcpServer,
|
|
8
|
-
this.
|
|
10
|
+
constructor({ session, mcpServer, userConfig }) {
|
|
11
|
+
this.startTime = Date.now();
|
|
9
12
|
this.session = session;
|
|
13
|
+
this.telemetry = new Telemetry(session);
|
|
14
|
+
this.mcpServer = mcpServer;
|
|
15
|
+
this.userConfig = userConfig;
|
|
10
16
|
}
|
|
11
17
|
async connect(transport) {
|
|
12
18
|
this.mcpServer.server.registerCapabilities({ logging: {} });
|
|
13
19
|
this.registerTools();
|
|
14
20
|
this.registerResources();
|
|
15
|
-
|
|
21
|
+
// This is a workaround for an issue we've seen with some models, where they'll see that everything in the `arguments`
|
|
22
|
+
// object is optional, and then not pass it at all. However, the MCP server expects the `arguments` object to be if
|
|
23
|
+
// the tool accepts any arguments, even if they're all optional.
|
|
24
|
+
//
|
|
25
|
+
// see: https://github.com/modelcontextprotocol/typescript-sdk/blob/131776764536b5fdca642df51230a3746fb4ade0/src/server/mcp.ts#L705
|
|
26
|
+
// Since paramsSchema here is not undefined, the server will create a non-optional z.object from it.
|
|
27
|
+
const existingHandler = this.mcpServer.server["_requestHandlers"].get(CallToolRequestSchema.shape.method.value);
|
|
28
|
+
assert(existingHandler, "No existing handler found for CallToolRequestSchema");
|
|
29
|
+
this.mcpServer.server.setRequestHandler(CallToolRequestSchema, (request, extra) => {
|
|
30
|
+
if (!request.params.arguments) {
|
|
31
|
+
request.params.arguments = {};
|
|
32
|
+
}
|
|
33
|
+
return existingHandler(request, extra);
|
|
34
|
+
});
|
|
35
|
+
await initializeLogger(this.mcpServer, this.userConfig.logPath);
|
|
16
36
|
await this.mcpServer.connect(transport);
|
|
17
|
-
|
|
37
|
+
this.mcpServer.server.oninitialized = () => {
|
|
38
|
+
this.session.setAgentRunner(this.mcpServer.server.getClientVersion());
|
|
39
|
+
this.session.sessionId = new ObjectId().toString();
|
|
40
|
+
logger.info(mongoLogId(1000004), "server", `Server started with transport ${transport.constructor.name} and agent runner ${this.session.agentRunner?.name}`);
|
|
41
|
+
this.emitServerEvent("start", Date.now() - this.startTime);
|
|
42
|
+
};
|
|
43
|
+
this.mcpServer.server.onclose = () => {
|
|
44
|
+
const closeTime = Date.now();
|
|
45
|
+
this.emitServerEvent("stop", Date.now() - closeTime);
|
|
46
|
+
};
|
|
47
|
+
this.mcpServer.server.onerror = (error) => {
|
|
48
|
+
const closeTime = Date.now();
|
|
49
|
+
this.emitServerEvent("stop", Date.now() - closeTime, error);
|
|
50
|
+
};
|
|
18
51
|
}
|
|
19
52
|
async close() {
|
|
20
53
|
await this.session.close();
|
|
21
54
|
await this.mcpServer.close();
|
|
22
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Emits a server event
|
|
58
|
+
* @param command - The server command (e.g., "start", "stop", "register", "deregister")
|
|
59
|
+
* @param additionalProperties - Additional properties specific to the event
|
|
60
|
+
*/
|
|
61
|
+
emitServerEvent(command, commandDuration, error) {
|
|
62
|
+
const event = {
|
|
63
|
+
timestamp: new Date().toISOString(),
|
|
64
|
+
source: "mdbmcp",
|
|
65
|
+
properties: {
|
|
66
|
+
...this.telemetry.getCommonProperties(),
|
|
67
|
+
result: "success",
|
|
68
|
+
duration_ms: commandDuration,
|
|
69
|
+
component: "server",
|
|
70
|
+
category: "other",
|
|
71
|
+
command: command,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
if (command === "start") {
|
|
75
|
+
event.properties.startup_time_ms = commandDuration;
|
|
76
|
+
}
|
|
77
|
+
if (command === "stop") {
|
|
78
|
+
event.properties.runtime_duration_ms = Date.now() - this.startTime;
|
|
79
|
+
if (error) {
|
|
80
|
+
event.properties.result = "failure";
|
|
81
|
+
event.properties.reason = error.message;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
this.telemetry.emitEvents([event]).catch(() => { });
|
|
85
|
+
}
|
|
23
86
|
registerTools() {
|
|
24
87
|
for (const tool of [...AtlasTools, ...MongoDbTools]) {
|
|
25
|
-
new tool(this.session).register(this.mcpServer);
|
|
88
|
+
new tool(this.session, this.userConfig, this.telemetry).register(this.mcpServer);
|
|
26
89
|
}
|
|
27
90
|
}
|
|
28
91
|
registerResources() {
|
|
29
|
-
if (
|
|
92
|
+
if (this.userConfig.connectionString) {
|
|
30
93
|
this.mcpServer.resource("connection-string", "config://connection-string", {
|
|
31
94
|
description: "Preconfigured connection string that will be used as a default in the `connect` tool",
|
|
32
95
|
}, (uri) => {
|
|
33
96
|
return {
|
|
34
97
|
contents: [
|
|
35
98
|
{
|
|
36
|
-
text: `Preconfigured connection string: ${
|
|
99
|
+
text: `Preconfigured connection string: ${this.userConfig.connectionString}`,
|
|
37
100
|
uri: uri.href,
|
|
38
101
|
},
|
|
39
102
|
],
|
package/dist/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,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { ApiClient } from "./common/atlas/apiClient.js";
|
|
2
|
-
import config from "./config.js";
|
|
3
2
|
export class Session {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
constructor({ apiBaseUrl, apiClientId, apiClientSecret } = {}) {
|
|
4
|
+
const credentials = apiClientId && apiClientSecret
|
|
5
|
+
? {
|
|
6
|
+
clientId: apiClientId,
|
|
7
|
+
clientSecret: apiClientSecret,
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
: undefined;
|
|
10
|
+
this.apiClient = new ApiClient({
|
|
11
|
+
baseUrl: apiBaseUrl,
|
|
12
|
+
credentials,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
setAgentRunner(agentRunner) {
|
|
16
|
+
if (agentRunner?.name && agentRunner?.version) {
|
|
17
|
+
this.agentRunner = {
|
|
18
|
+
name: agentRunner.name,
|
|
19
|
+
version: agentRunner.version,
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
}
|
|
18
23
|
async close() {
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAwB,MAAM,6BAA6B,CAAC;AAS9E,MAAM,OAAO,OAAO;IAShB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,KAAqB,EAAE;QACzE,MAAM,WAAW,GACb,WAAW,IAAI,eAAe;YAC1B,CAAC,CAAC;gBACI,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,eAAe;aAChC;YACH,CAAC,CAAC,SAAS,CAAC;QAEpB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;YAC3B,OAAO,EAAE,UAAU;YACnB,WAAW;SACd,CAAC,CAAC;IACP,CAAC;IAED,cAAc,CAAC,WAAuC;QAClD,IAAI,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG;gBACf,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC/B,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getMachineIdSync } from "native-machine-id";
|
|
2
|
+
import { packageInfo } from "../packageInfo.js";
|
|
3
|
+
/**
|
|
4
|
+
* Machine-specific metadata formatted for telemetry
|
|
5
|
+
*/
|
|
6
|
+
export const MACHINE_METADATA = {
|
|
7
|
+
device_id: getMachineIdSync(),
|
|
8
|
+
mcp_server_version: packageInfo.version,
|
|
9
|
+
mcp_server_name: packageInfo.mcpServerName,
|
|
10
|
+
platform: process.platform,
|
|
11
|
+
arch: process.arch,
|
|
12
|
+
os_type: process.platform,
|
|
13
|
+
os_version: process.version,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/telemetry/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,SAAS,EAAE,gBAAgB,EAAE;IAC7B,kBAAkB,EAAE,WAAW,CAAC,OAAO;IACvC,eAAe,EAAE,WAAW,CAAC,aAAa;IAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,UAAU,EAAE,OAAO,CAAC,OAAO;CACrB,CAAC"}
|