mongodb-mcp-server 0.1.2 → 0.2.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.
Files changed (270) hide show
  1. package/.github/pull_request_template.md +5 -0
  2. package/.github/workflows/accuracy-tests.yml +55 -0
  3. package/.github/workflows/check.yml +1 -1
  4. package/.github/workflows/code_health.yaml +4 -4
  5. package/.github/workflows/code_health_fork.yaml +0 -14
  6. package/.github/workflows/dependabot_pr.yaml +26 -0
  7. package/.github/workflows/docker.yaml +1 -1
  8. package/.github/workflows/jira-issue.yml +72 -0
  9. package/.smithery/smithery.yaml +10 -0
  10. package/.vscode/extensions.json +1 -1
  11. package/.vscode/launch.json +11 -1
  12. package/.vscode/settings.json +1 -11
  13. package/Dockerfile +1 -0
  14. package/README.md +132 -31
  15. package/dist/common/atlas/accessListUtils.js +36 -0
  16. package/dist/common/atlas/accessListUtils.js.map +1 -0
  17. package/dist/common/atlas/apiClient.js +25 -6
  18. package/dist/common/atlas/apiClient.js.map +1 -1
  19. package/dist/common/atlas/cluster.js +1 -1
  20. package/dist/common/atlas/cluster.js.map +1 -1
  21. package/dist/{config.js → common/config.js} +8 -1
  22. package/dist/common/config.js.map +1 -0
  23. package/dist/{errors.js → common/errors.js} +1 -0
  24. package/dist/common/errors.js.map +1 -0
  25. package/dist/{logger.js → common/logger.js} +20 -19
  26. package/dist/common/logger.js.map +1 -0
  27. package/dist/common/managedTimeout.js +20 -0
  28. package/dist/common/managedTimeout.js.map +1 -0
  29. package/dist/common/packageInfo.js.map +1 -0
  30. package/dist/{session.js → common/session.js} +20 -21
  31. package/dist/common/session.js.map +1 -0
  32. package/dist/common/sessionStore.js +73 -0
  33. package/dist/common/sessionStore.js.map +1 -0
  34. package/dist/helpers/container.js +28 -0
  35. package/dist/helpers/container.js.map +1 -0
  36. package/dist/helpers/generatePassword.js.map +1 -0
  37. package/dist/helpers/indexCheck.js +63 -0
  38. package/dist/helpers/indexCheck.js.map +1 -0
  39. package/dist/index.js +30 -37
  40. package/dist/index.js.map +1 -1
  41. package/dist/server.js +44 -7
  42. package/dist/server.js.map +1 -1
  43. package/dist/telemetry/constants.js +1 -1
  44. package/dist/telemetry/constants.js.map +1 -1
  45. package/dist/telemetry/telemetry.js +86 -116
  46. package/dist/telemetry/telemetry.js.map +1 -1
  47. package/dist/tools/atlas/atlasTool.js +3 -3
  48. package/dist/tools/atlas/atlasTool.js.map +1 -1
  49. package/dist/tools/atlas/connect/connectCluster.js +198 -0
  50. package/dist/tools/atlas/connect/connectCluster.js.map +1 -0
  51. package/dist/tools/atlas/create/createAccessList.js +9 -10
  52. package/dist/tools/atlas/create/createAccessList.js.map +1 -1
  53. package/dist/tools/atlas/create/createDBUser.js +3 -1
  54. package/dist/tools/atlas/create/createDBUser.js.map +1 -1
  55. package/dist/tools/atlas/create/createFreeCluster.js +2 -0
  56. package/dist/tools/atlas/create/createFreeCluster.js.map +1 -1
  57. package/dist/tools/atlas/create/createProject.js.map +1 -1
  58. package/dist/tools/atlas/read/inspectAccessList.js.map +1 -1
  59. package/dist/tools/atlas/read/inspectCluster.js.map +1 -1
  60. package/dist/tools/atlas/read/listAlerts.js.map +1 -1
  61. package/dist/tools/atlas/read/listClusters.js.map +1 -1
  62. package/dist/tools/atlas/read/listDBUsers.js.map +1 -1
  63. package/dist/tools/atlas/read/listOrgs.js.map +1 -1
  64. package/dist/tools/atlas/read/listProjects.js.map +1 -1
  65. package/dist/tools/atlas/tools.js +1 -1
  66. package/dist/tools/atlas/tools.js.map +1 -1
  67. package/dist/tools/mongodb/{metadata → connect}/connect.js +7 -4
  68. package/dist/tools/mongodb/connect/connect.js.map +1 -0
  69. package/dist/tools/mongodb/create/createCollection.js.map +1 -1
  70. package/dist/tools/mongodb/create/createIndex.js +1 -1
  71. package/dist/tools/mongodb/create/createIndex.js.map +1 -1
  72. package/dist/tools/mongodb/create/insertMany.js +1 -1
  73. package/dist/tools/mongodb/create/insertMany.js.map +1 -1
  74. package/dist/tools/mongodb/delete/deleteMany.js +20 -1
  75. package/dist/tools/mongodb/delete/deleteMany.js.map +1 -1
  76. package/dist/tools/mongodb/delete/dropCollection.js.map +1 -1
  77. package/dist/tools/mongodb/delete/dropDatabase.js.map +1 -1
  78. package/dist/tools/mongodb/metadata/collectionSchema.js.map +1 -1
  79. package/dist/tools/mongodb/metadata/collectionStorageSize.js.map +1 -1
  80. package/dist/tools/mongodb/metadata/dbStats.js.map +1 -1
  81. package/dist/tools/mongodb/metadata/explain.js +2 -2
  82. package/dist/tools/mongodb/metadata/explain.js.map +1 -1
  83. package/dist/tools/mongodb/metadata/listCollections.js.map +1 -1
  84. package/dist/tools/mongodb/metadata/listDatabases.js.map +1 -1
  85. package/dist/tools/mongodb/metadata/logs.js.map +1 -1
  86. package/dist/tools/mongodb/mongodbTool.js +47 -10
  87. package/dist/tools/mongodb/mongodbTool.js.map +1 -1
  88. package/dist/tools/mongodb/read/aggregate.js +10 -1
  89. package/dist/tools/mongodb/read/aggregate.js.map +1 -1
  90. package/dist/tools/mongodb/read/collectionIndexes.js.map +1 -1
  91. package/dist/tools/mongodb/read/count.js +15 -1
  92. package/dist/tools/mongodb/read/count.js.map +1 -1
  93. package/dist/tools/mongodb/read/find.js +14 -4
  94. package/dist/tools/mongodb/read/find.js.map +1 -1
  95. package/dist/tools/mongodb/tools.js +1 -1
  96. package/dist/tools/mongodb/tools.js.map +1 -1
  97. package/dist/tools/mongodb/update/renameCollection.js.map +1 -1
  98. package/dist/tools/mongodb/update/updateMany.js +24 -2
  99. package/dist/tools/mongodb/update/updateMany.js.map +1 -1
  100. package/dist/tools/tool.js +12 -9
  101. package/dist/tools/tool.js.map +1 -1
  102. package/dist/transports/base.js +26 -0
  103. package/dist/transports/base.js.map +1 -0
  104. package/dist/{helpers/EJsonTransport.js → transports/stdio.js} +24 -2
  105. package/dist/transports/stdio.js.map +1 -0
  106. package/dist/transports/streamableHttp.js +140 -0
  107. package/dist/transports/streamableHttp.js.map +1 -0
  108. package/eslint.config.js +13 -4
  109. package/package.json +43 -33
  110. package/resources/test-summary-template.html +415 -0
  111. package/scripts/accuracy/generateTestSummary.ts +335 -0
  112. package/scripts/accuracy/runAccuracyTests.sh +45 -0
  113. package/scripts/accuracy/updateAccuracyRunStatus.ts +21 -0
  114. package/src/common/atlas/accessListUtils.ts +54 -0
  115. package/src/common/atlas/apiClient.ts +25 -6
  116. package/src/common/atlas/cluster.ts +1 -1
  117. package/src/{config.ts → common/config.ts} +16 -2
  118. package/src/{errors.ts → common/errors.ts} +1 -0
  119. package/src/{logger.ts → common/logger.ts} +21 -24
  120. package/src/common/managedTimeout.ts +27 -0
  121. package/src/{session.ts → common/session.ts} +24 -26
  122. package/src/common/sessionStore.ts +111 -0
  123. package/src/helpers/container.ts +35 -0
  124. package/src/helpers/indexCheck.ts +83 -0
  125. package/src/index.ts +30 -40
  126. package/src/server.ts +55 -11
  127. package/src/telemetry/constants.ts +1 -1
  128. package/src/telemetry/telemetry.ts +109 -153
  129. package/src/telemetry/types.ts +2 -1
  130. package/src/tools/atlas/atlasTool.ts +4 -4
  131. package/src/tools/atlas/connect/connectCluster.ts +259 -0
  132. package/src/tools/atlas/create/createAccessList.ts +15 -13
  133. package/src/tools/atlas/create/createDBUser.ts +5 -3
  134. package/src/tools/atlas/create/createFreeCluster.ts +4 -2
  135. package/src/tools/atlas/create/createProject.ts +2 -2
  136. package/src/tools/atlas/read/inspectAccessList.ts +2 -2
  137. package/src/tools/atlas/read/inspectCluster.ts +2 -2
  138. package/src/tools/atlas/read/listAlerts.ts +2 -2
  139. package/src/tools/atlas/read/listClusters.ts +2 -2
  140. package/src/tools/atlas/read/listDBUsers.ts +2 -2
  141. package/src/tools/atlas/read/listOrgs.ts +2 -2
  142. package/src/tools/atlas/read/listProjects.ts +2 -2
  143. package/src/tools/atlas/tools.ts +1 -1
  144. package/src/tools/mongodb/{metadata → connect}/connect.ts +12 -9
  145. package/src/tools/mongodb/create/createCollection.ts +2 -2
  146. package/src/tools/mongodb/create/createIndex.ts +3 -3
  147. package/src/tools/mongodb/create/insertMany.ts +3 -3
  148. package/src/tools/mongodb/delete/deleteMany.ts +24 -3
  149. package/src/tools/mongodb/delete/dropCollection.ts +2 -2
  150. package/src/tools/mongodb/delete/dropDatabase.ts +2 -2
  151. package/src/tools/mongodb/metadata/collectionSchema.ts +2 -2
  152. package/src/tools/mongodb/metadata/collectionStorageSize.ts +2 -2
  153. package/src/tools/mongodb/metadata/dbStats.ts +2 -2
  154. package/src/tools/mongodb/metadata/explain.ts +4 -4
  155. package/src/tools/mongodb/metadata/listCollections.ts +2 -2
  156. package/src/tools/mongodb/metadata/listDatabases.ts +2 -2
  157. package/src/tools/mongodb/metadata/logs.ts +2 -2
  158. package/src/tools/mongodb/mongodbTool.ts +60 -14
  159. package/src/tools/mongodb/read/aggregate.ts +14 -3
  160. package/src/tools/mongodb/read/collectionIndexes.ts +2 -2
  161. package/src/tools/mongodb/read/count.ts +19 -3
  162. package/src/tools/mongodb/read/find.ts +20 -6
  163. package/src/tools/mongodb/tools.ts +1 -1
  164. package/src/tools/mongodb/update/renameCollection.ts +2 -2
  165. package/src/tools/mongodb/update/updateMany.ts +28 -4
  166. package/src/tools/tool.ts +23 -18
  167. package/src/transports/base.ts +34 -0
  168. package/src/{helpers/EJsonTransport.ts → transports/stdio.ts} +30 -1
  169. package/src/transports/streamableHttp.ts +178 -0
  170. package/tests/accuracy/aggregate.test.ts +27 -0
  171. package/tests/accuracy/collectionIndexes.test.ts +40 -0
  172. package/tests/accuracy/collectionSchema.test.ts +28 -0
  173. package/tests/accuracy/collectionStorageSize.test.ts +41 -0
  174. package/tests/accuracy/count.test.ts +44 -0
  175. package/tests/accuracy/createCollection.test.ts +46 -0
  176. package/tests/accuracy/createIndex.test.ts +37 -0
  177. package/tests/accuracy/dbStats.test.ts +15 -0
  178. package/tests/accuracy/deleteMany.test.ts +44 -0
  179. package/tests/accuracy/dropCollection.test.ts +74 -0
  180. package/tests/accuracy/dropDatabase.test.ts +41 -0
  181. package/tests/accuracy/explain.test.ts +73 -0
  182. package/tests/accuracy/find.test.ts +114 -0
  183. package/tests/accuracy/insertMany.test.ts +48 -0
  184. package/tests/accuracy/listCollections.test.ts +60 -0
  185. package/tests/accuracy/listDatabases.test.ts +31 -0
  186. package/tests/accuracy/logs.test.ts +28 -0
  187. package/tests/accuracy/renameCollection.test.ts +31 -0
  188. package/tests/accuracy/sdk/accuracyResultStorage/diskStorage.ts +189 -0
  189. package/tests/accuracy/sdk/accuracyResultStorage/getAccuracyResultStorage.ts +11 -0
  190. package/tests/accuracy/sdk/accuracyResultStorage/mongodbStorage.ts +151 -0
  191. package/tests/accuracy/sdk/accuracyResultStorage/resultStorage.ts +117 -0
  192. package/tests/accuracy/sdk/accuracyScorer.ts +93 -0
  193. package/tests/accuracy/sdk/accuracyTestingClient.ts +94 -0
  194. package/tests/accuracy/sdk/agent.ts +56 -0
  195. package/tests/accuracy/sdk/constants.ts +26 -0
  196. package/tests/accuracy/sdk/describeAccuracyTests.ts +126 -0
  197. package/tests/accuracy/sdk/gitInfo.ts +7 -0
  198. package/tests/accuracy/sdk/matcher.ts +193 -0
  199. package/tests/accuracy/sdk/models.ts +95 -0
  200. package/tests/accuracy/test-data-dumps/comics.books.json +417 -0
  201. package/tests/accuracy/test-data-dumps/comics.characters.json +402 -0
  202. package/tests/accuracy/test-data-dumps/mflix.movies.json +496 -0
  203. package/tests/accuracy/test-data-dumps/mflix.shows.json +572 -0
  204. package/tests/accuracy/updateMany.test.ts +42 -0
  205. package/tests/integration/helpers.ts +9 -9
  206. package/tests/integration/indexCheck.test.ts +464 -0
  207. package/tests/integration/server.test.ts +6 -4
  208. package/tests/integration/telemetry.test.ts +29 -0
  209. package/tests/integration/tools/atlas/accessLists.test.ts +22 -2
  210. package/tests/integration/tools/atlas/alerts.test.ts +3 -2
  211. package/tests/integration/tools/atlas/atlasHelpers.ts +3 -0
  212. package/tests/integration/tools/atlas/clusters.test.ts +68 -16
  213. package/tests/integration/tools/atlas/dbUsers.test.ts +14 -1
  214. package/tests/integration/tools/atlas/orgs.test.ts +2 -1
  215. package/tests/integration/tools/atlas/projects.test.ts +4 -3
  216. package/tests/integration/tools/mongodb/{metadata → connect}/connect.test.ts +34 -3
  217. package/tests/integration/tools/mongodb/create/createCollection.test.ts +1 -0
  218. package/tests/integration/tools/mongodb/create/createIndex.test.ts +1 -0
  219. package/tests/integration/tools/mongodb/create/insertMany.test.ts +1 -0
  220. package/tests/integration/tools/mongodb/delete/deleteMany.test.ts +1 -0
  221. package/tests/integration/tools/mongodb/delete/dropCollection.test.ts +1 -1
  222. package/tests/integration/tools/mongodb/delete/dropDatabase.test.ts +1 -0
  223. package/tests/integration/tools/mongodb/metadata/collectionSchema.test.ts +1 -0
  224. package/tests/integration/tools/mongodb/metadata/collectionStorageSize.test.ts +1 -0
  225. package/tests/integration/tools/mongodb/metadata/dbStats.test.ts +1 -0
  226. package/tests/integration/tools/mongodb/metadata/explain.test.ts +1 -0
  227. package/tests/integration/tools/mongodb/metadata/listCollections.test.ts +1 -0
  228. package/tests/integration/tools/mongodb/metadata/listDatabases.test.ts +3 -2
  229. package/tests/integration/tools/mongodb/metadata/logs.test.ts +1 -0
  230. package/tests/integration/tools/mongodb/mongodbHelpers.ts +67 -2
  231. package/tests/integration/tools/mongodb/read/aggregate.test.ts +2 -1
  232. package/tests/integration/tools/mongodb/read/collectionIndexes.test.ts +1 -0
  233. package/tests/integration/tools/mongodb/read/count.test.ts +1 -0
  234. package/tests/integration/tools/mongodb/read/find.test.ts +2 -1
  235. package/tests/integration/tools/mongodb/update/renameCollection.test.ts +1 -0
  236. package/tests/integration/tools/mongodb/update/updateMany.test.ts +1 -0
  237. package/tests/integration/transports/stdio.test.ts +40 -0
  238. package/tests/integration/transports/streamableHttp.test.ts +56 -0
  239. package/tests/matchers/toIncludeSameMembers.test.ts +59 -0
  240. package/tests/matchers/toIncludeSameMembers.ts +12 -0
  241. package/tests/setup.ts +7 -0
  242. package/tests/unit/accessListUtils.test.ts +39 -0
  243. package/tests/unit/accuracyScorer.test.ts +390 -0
  244. package/tests/unit/{apiClient.test.ts → common/apiClient.test.ts} +15 -15
  245. package/tests/unit/common/managedTimeout.test.ts +67 -0
  246. package/tests/unit/{session.test.ts → common/session.test.ts} +7 -12
  247. package/tests/unit/helpers/indexCheck.test.ts +150 -0
  248. package/tests/unit/telemetry.test.ts +99 -137
  249. package/tests/unit/{EJsonTransport.test.ts → transports/stdio.test.ts} +4 -4
  250. package/tests/vitest.d.ts +11 -0
  251. package/tsconfig.json +0 -1
  252. package/{tsconfig.jest.json → tsconfig.test.json} +1 -2
  253. package/vitest.config.ts +41 -0
  254. package/dist/common/atlas/generatePassword.js.map +0 -1
  255. package/dist/config.js.map +0 -1
  256. package/dist/errors.js.map +0 -1
  257. package/dist/helpers/EJsonTransport.js.map +0 -1
  258. package/dist/helpers/packageInfo.js.map +0 -1
  259. package/dist/logger.js.map +0 -1
  260. package/dist/session.js.map +0 -1
  261. package/dist/tools/atlas/metadata/connectCluster.js +0 -100
  262. package/dist/tools/atlas/metadata/connectCluster.js.map +0 -1
  263. package/dist/tools/mongodb/metadata/connect.js.map +0 -1
  264. package/global.d.ts +0 -1
  265. package/jest.config.cjs +0 -22
  266. package/src/tools/atlas/metadata/connectCluster.ts +0 -121
  267. /package/dist/{helpers → common}/packageInfo.js +0 -0
  268. /package/dist/{common/atlas → helpers}/generatePassword.js +0 -0
  269. /package/src/{helpers → common}/packageInfo.ts +0 -0
  270. /package/src/{common/atlas → helpers}/generatePassword.ts +0 -0
@@ -0,0 +1,5 @@
1
+ ## Proposed changes
2
+
3
+ ## Checklist
4
+
5
+ - [ ] I have signed the [MongoDB CLA](https://www.mongodb.com/legal/contributor-agreement)
@@ -0,0 +1,55 @@
1
+ name: Accuracy Tests
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - main
8
+ pull_request:
9
+ types:
10
+ - labeled
11
+
12
+ jobs:
13
+ run-accuracy-tests:
14
+ name: Run Accuracy Tests
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+ pull-requests: write
19
+ if: |
20
+ github.event_name == 'workflow_dispatch' ||
21
+ (github.event_name == 'pull_request' && github.event.label.name == 'accuracy-tests')
22
+ env:
23
+ MDB_OPEN_AI_API_KEY: ${{ secrets.ACCURACY_OPEN_AI_API_KEY }}
24
+ MDB_GEMINI_API_KEY: ${{ secrets.ACCURACY_GEMINI_API_KEY }}
25
+ MDB_AZURE_OPEN_AI_API_KEY: ${{ secrets.ACCURACY_AZURE_OPEN_AI_API_KEY }}
26
+ MDB_AZURE_OPEN_AI_API_URL: ${{ vars.ACCURACY_AZURE_OPEN_AI_API_URL }}
27
+ MDB_ACCURACY_MDB_URL: ${{ secrets.ACCURACY_MDB_CONNECTION_STRING }}
28
+ MDB_ACCURACY_MDB_DB: ${{ vars.ACCURACY_MDB_DB }}
29
+ MDB_ACCURACY_MDB_COLLECTION: ${{ vars.ACCURACY_MDB_COLLECTION }}
30
+ MDB_ACCURACY_BASELINE_COMMIT: ${{ github.event.pull_request.base.sha || '' }}
31
+ steps:
32
+ - uses: GitHubSecurityLab/actions-permissions/monitor@v1
33
+ - uses: actions/checkout@v4
34
+ - uses: actions/setup-node@v4
35
+ with:
36
+ node-version-file: package.json
37
+ cache: "npm"
38
+ - name: Install dependencies
39
+ run: npm ci
40
+ - name: Run accuracy tests
41
+ run: npm run test:accuracy
42
+ - name: Upload accuracy test summary
43
+ if: always()
44
+ uses: actions/upload-artifact@v4
45
+ with:
46
+ name: accuracy-test-summary
47
+ path: .accuracy/test-summary.html
48
+ - name: Comment summary on PR
49
+ if: github.event_name == 'pull_request' && github.event.label.name == 'accuracy-tests'
50
+ uses: marocchino/sticky-pull-request-comment@d2ad0de260ae8b0235ce059e63f2949ba9e05943 # v2
51
+ with:
52
+ # Hides the previous comment and add a comment at the end
53
+ hide_and_recreate: true
54
+ hide_classify: "OUTDATED"
55
+ path: .accuracy/test-brief.md
@@ -55,4 +55,4 @@ jobs:
55
55
  rm -rf node_modules
56
56
  npm pkg set scripts.prepare="exit 0"
57
57
  npm install --omit=dev
58
- - run: npx -y @modelcontextprotocol/inspector --cli --method tools/list -- node dist/index.js --connectionString "mongodb://localhost"
58
+ - run: npx -y @modelcontextprotocol/inspector --cli --method tools/list -- node dist/index.js
@@ -11,7 +11,7 @@ permissions: {}
11
11
  jobs:
12
12
  run-tests:
13
13
  name: Run MongoDB tests
14
- if: github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository
14
+ if: github.event_name == 'push' || (github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository)
15
15
  strategy:
16
16
  matrix:
17
17
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  run-atlas-tests:
40
40
  name: Run Atlas tests
41
- if: github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository
41
+ if: github.event_name == 'push' || (github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository)
42
42
  runs-on: ubuntu-latest
43
43
  steps:
44
44
  - uses: GitHubSecurityLab/actions-permissions/monitor@v1
@@ -54,7 +54,7 @@ jobs:
54
54
  MDB_MCP_API_CLIENT_ID: ${{ secrets.TEST_ATLAS_CLIENT_ID }}
55
55
  MDB_MCP_API_CLIENT_SECRET: ${{ secrets.TEST_ATLAS_CLIENT_SECRET }}
56
56
  MDB_MCP_API_BASE_URL: ${{ vars.TEST_ATLAS_BASE_URL }}
57
- run: npm test -- --testPathIgnorePatterns "tests/unit" --testPathIgnorePatterns "tests/integration/tools/mongodb" --testPathIgnorePatterns "tests/integration/[^/]+\.ts"
57
+ run: npm test -- --exclude "tests/unit/**" --exclude "tests/integration/tools/mongodb/**" --exclude "tests/integration/*.ts"
58
58
  - name: Upload test results
59
59
  uses: actions/upload-artifact@v4
60
60
  if: always()
@@ -64,7 +64,7 @@ jobs:
64
64
 
65
65
  coverage:
66
66
  name: Report Coverage
67
- if: always() && github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository
67
+ if: always() && (github.event_name == 'push' || (github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository))
68
68
  runs-on: ubuntu-latest
69
69
  needs: [run-tests, run-atlas-tests]
70
70
  steps:
@@ -34,17 +34,3 @@ jobs:
34
34
  with:
35
35
  name: test-results
36
36
  path: coverage/lcov.info
37
-
38
- merge-dependabot-pr:
39
- name: Merge Dependabot PR
40
- if: github.event.pull_request.user.login == 'dependabot[bot]'
41
- runs-on: ubuntu-latest
42
- permissions:
43
- pull-requests: write
44
- contents: write
45
- steps:
46
- - name: Enable auto-merge for Dependabot PRs
47
- run: gh pr merge --auto --squash "$PR_URL"
48
- env:
49
- PR_URL: ${{github.event.pull_request.html_url}}
50
- GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: Dependabot PR
3
+ on:
4
+ pull_request:
5
+ types: [opened]
6
+ branches:
7
+ - main
8
+
9
+ permissions: {}
10
+
11
+ jobs:
12
+ merge-dependabot-pr:
13
+ name: Merge Dependabot PR
14
+ if: github.event.pull_request.user.login == 'dependabot[bot]'
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: mongodb-js/devtools-shared/actions/setup-bot-token@main
18
+ id: app-token
19
+ with:
20
+ app-id: ${{ vars.DEVTOOLS_BOT_APP_ID }}
21
+ private-key: ${{ secrets.DEVTOOLS_BOT_PRIVATE_KEY }}
22
+ - name: Enable auto-merge for Dependabot PRs
23
+ run: gh pr merge --auto --squash "$PR_URL"
24
+ env:
25
+ PR_URL: ${{github.event.pull_request.html_url}}
26
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
@@ -16,7 +16,7 @@ jobs:
16
16
  - name: Check out code
17
17
  uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
18
18
  - name: Set up Docker Buildx
19
- uses: docker/setup-buildx-action@18ce135bb5112fa8ce4ed6c17ab05699d7f3a5e0
19
+ uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435
20
20
  - name: Login to Docker Hub
21
21
  uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
22
22
  with:
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: Create JIRA ticket for new issues
3
+
4
+ on:
5
+ issues:
6
+ types: [opened, labeled]
7
+
8
+ permissions:
9
+ issues: write
10
+ contents: read
11
+
12
+ jobs:
13
+ jira_task:
14
+ name: Create Jira issue
15
+ runs-on: ubuntu-latest
16
+ if: github.event.action == 'opened' || github.event.label.name == 'create-jira'
17
+ steps:
18
+ - uses: GitHubSecurityLab/actions-permissions/monitor@v1
19
+ with:
20
+ config: ${{ vars.PERMISSIONS_CONFIG }}
21
+
22
+ - name: Create JIRA ticket
23
+ uses: mongodb/apix-action/create-jira@v8
24
+ id: create
25
+ continue-on-error: true
26
+ with:
27
+ token: ${{ secrets.JIRA_API_TOKEN }}
28
+ project-key: MCP
29
+ summary: "HELP: GitHub Issue n. ${{ github.event.issue.number }}"
30
+ issuetype: Bug
31
+ description: "This ticket tracks the following GitHub issue: ${{ github.event.issue.html_url }}."
32
+ extra-data: |
33
+ {
34
+ "fields": {
35
+ "customfield_12751": [
36
+ {
37
+ "id": "22223"
38
+ },
39
+ {
40
+ "id": "27326"
41
+ }
42
+ ]
43
+ }
44
+ }
45
+ - name: Show result
46
+ run: |
47
+ echo "JIRA action result: ${{ steps.create.outputs.issue-key || 'FAILED' }}"
48
+
49
+ - name: Add comment
50
+ if: steps.create.outputs.issue-key
51
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043
52
+ with:
53
+ issue-number: ${{ github.event.issue.number }}
54
+ body: |
55
+ Thanks for opening this issue. The ticket [${{ steps.create.outputs.issue-key }}](https://jira.mongodb.org/browse/${{ steps.create.outputs.issue-key }}) was created for internal tracking.
56
+
57
+ - name: Remove create-jira label
58
+ if: github.event.action == 'labeled' && github.event.label.name == 'create-jira'
59
+ uses: actions/github-script@v7
60
+ with:
61
+ script: |
62
+ try {
63
+ await github.rest.issues.removeLabel({
64
+ owner: context.repo.owner,
65
+ repo: context.repo.repo,
66
+ issue_number: context.issue.number,
67
+ name: 'create-jira'
68
+ });
69
+ console.log('✅ Removed create-jira label');
70
+ } catch (error) {
71
+ console.log('⚠️ Could not remove create-jira label:', error.message);
72
+ }
@@ -24,11 +24,17 @@ startCommand:
24
24
  title: Read-only
25
25
  description: When set to true, only allows read and metadata operation types, disabling create/update/delete operations.
26
26
  default: false
27
+ indexCheck:
28
+ type: boolean
29
+ title: Index Check
30
+ description: When set to true, enforces that query operations must use an index, rejecting queries that would perform a collection scan.
31
+ default: false
27
32
  exampleConfig:
28
33
  atlasClientId: YOUR_ATLAS_CLIENT_ID
29
34
  atlasClientSecret: YOUR_ATLAS_CLIENT_SECRET
30
35
  connectionString: mongodb+srv://USERNAME:PASSWORD@YOUR_CLUSTER.mongodb.net
31
36
  readOnly: true
37
+ indexCheck: false
32
38
 
33
39
  commandFunction:
34
40
  # A function that produces the CLI command to start the MCP on stdio.
@@ -54,6 +60,10 @@ startCommand:
54
60
  args.push('--connectionString');
55
61
  args.push(config.connectionString);
56
62
  }
63
+
64
+ if (config.indexCheck) {
65
+ args.push('--indexCheck');
66
+ }
57
67
  }
58
68
 
59
69
  return {
@@ -3,7 +3,7 @@
3
3
  // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
4
4
 
5
5
  // List of extensions which should be recommended for users of this workspace.
6
- "recommendations": ["firsttris.vscode-jest-runner", "orta.vscode-jest"],
6
+ "recommendations": ["vitest.explorer"],
7
7
  // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
8
8
  "unwantedRecommendations": []
9
9
  }
@@ -4,12 +4,22 @@
4
4
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
5
  "version": "0.2.0",
6
6
  "configurations": [
7
+ {
8
+ "type": "node",
9
+ "request": "launch",
10
+ "name": "Launch Tests",
11
+ "runtimeExecutable": "npm",
12
+ "runtimeArgs": ["test"],
13
+ "cwd": "${workspaceFolder}",
14
+ "envFile": "${workspaceFolder}/.env"
15
+ },
7
16
  {
8
17
  "type": "node",
9
18
  "request": "launch",
10
19
  "name": "Launch Program",
11
20
  "skipFiles": ["<node_internals>/**"],
12
- "program": "${workspaceFolder}/dist/index.js",
21
+ "runtimeExecutable": "npm",
22
+ "runtimeArgs": ["start"],
13
23
  "preLaunchTask": "tsc: build - tsconfig.build.json",
14
24
  "outFiles": ["${workspaceFolder}/dist/**/*.js"]
15
25
  }
@@ -1,11 +1 @@
1
- {
2
- "jestrunner.jestCommand": "npm test --",
3
- "jestrunner.debugOptions": {
4
- "runtimeExecutable": "node",
5
- "runtimeArgs": [
6
- "--experimental-vm-modules",
7
- "node_modules/jest/bin/jest.js",
8
- "--coverage"
9
- ]
10
- }
11
- }
1
+ {}
package/Dockerfile CHANGED
@@ -4,6 +4,7 @@ RUN addgroup -S mcp && adduser -S mcp -G mcp
4
4
  RUN npm install -g mongodb-mcp-server@${VERSION}
5
5
  USER mcp
6
6
  WORKDIR /home/mcp
7
+ ENV MDB_MCP_LOGGERS=stderr,mcp
7
8
  ENTRYPOINT ["mongodb-mcp-server"]
8
9
  LABEL maintainer="MongoDB Inc <info@mongodb.com>"
9
10
  LABEL description="MongoDB MCP Server"