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,415 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>MongoDB MCP Server - Accuracy Test Summary</title>
7
+ <style>
8
+ body {
9
+ font-family:
10
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
11
+ margin: 0;
12
+ padding: 20px;
13
+ background-color: #f5f5f5;
14
+ color: #333;
15
+ }
16
+ .container {
17
+ max-width: 1400px;
18
+ margin: 0 auto;
19
+ background: white;
20
+ border-radius: 8px;
21
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
22
+ padding: 30px;
23
+ }
24
+ h1 {
25
+ color: #00684a;
26
+ border-bottom: 3px solid #00684a;
27
+ padding-bottom: 10px;
28
+ margin-bottom: 30px;
29
+ }
30
+ .header-info {
31
+ background: #f8f9fa;
32
+ padding: 20px;
33
+ border-radius: 6px;
34
+ margin-bottom: 20px;
35
+ border-left: 4px solid #00684a;
36
+ }
37
+ .header-info:nth-child(3) {
38
+ border-left-color: #007bff;
39
+ }
40
+ .header-info:nth-child(4) {
41
+ border-left-color: #28a745;
42
+ }
43
+ .header-info h2 {
44
+ margin-top: 0;
45
+ margin-bottom: 15px;
46
+ color: #00684a;
47
+ font-size: 1.2em;
48
+ }
49
+ .header-info:nth-child(3) h2 {
50
+ color: #007bff;
51
+ }
52
+ .header-info:nth-child(4) h2 {
53
+ color: #28a745;
54
+ }
55
+ .info-grid {
56
+ display: grid;
57
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
58
+ gap: 15px;
59
+ margin-top: 15px;
60
+ }
61
+ .info-item {
62
+ background: white;
63
+ padding: 15px;
64
+ border-radius: 4px;
65
+ border: 1px solid #dee2e6;
66
+ }
67
+ .info-label {
68
+ font-weight: bold;
69
+ color: #00684a;
70
+ margin-bottom: 5px;
71
+ }
72
+ .info-value {
73
+ color: #666;
74
+ word-break: break-all;
75
+ }
76
+ .summary {
77
+ background: #f8f9fa;
78
+ padding: 20px;
79
+ border-radius: 6px;
80
+ margin-bottom: 30px;
81
+ border-left: 4px solid #007bff;
82
+ }
83
+ .summary h2 {
84
+ margin-top: 0;
85
+ color: #007bff;
86
+ }
87
+ .stat-grid {
88
+ display: grid;
89
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
90
+ gap: 15px;
91
+ margin-top: 15px;
92
+ }
93
+ .stat-item {
94
+ background: white;
95
+ padding: 15px;
96
+ border-radius: 4px;
97
+ border: 1px solid #dee2e6;
98
+ }
99
+ .stat-value {
100
+ font-size: 1.5em;
101
+ font-weight: bold;
102
+ color: #007bff;
103
+ }
104
+ .stat-label {
105
+ font-size: 0.9em;
106
+ color: #666;
107
+ margin-top: 5px;
108
+ }
109
+ table {
110
+ width: 100%;
111
+ border-collapse: collapse;
112
+ margin-top: 20px;
113
+ font-size: 14px;
114
+ }
115
+ th,
116
+ td {
117
+ padding: 12px 8px;
118
+ text-align: left;
119
+ border-bottom: 1px solid #dee2e6;
120
+ vertical-align: top;
121
+ }
122
+ th {
123
+ background-color: #00684a;
124
+ color: white;
125
+ font-weight: 600;
126
+ position: sticky;
127
+ top: 0;
128
+ z-index: 10;
129
+ }
130
+ .test-row {
131
+ cursor: pointer;
132
+ transition: background-color 0.2s;
133
+ }
134
+ .test-row:hover {
135
+ background-color: #f8f9fa;
136
+ }
137
+ .expanded-row {
138
+ background-color: #f8f9fa;
139
+ }
140
+ .details-row {
141
+ display: none;
142
+ background-color: #ffffff;
143
+ border-left: 4px solid #00684a;
144
+ }
145
+ .details-row.visible {
146
+ display: table-row;
147
+ }
148
+ .details-content {
149
+ padding: 20px;
150
+ background: #f8f9fa;
151
+ border-radius: 6px;
152
+ margin: 10px 0;
153
+ }
154
+ .conversation-section {
155
+ margin-bottom: 20px;
156
+ }
157
+ .conversation-section h4 {
158
+ color: #00684a;
159
+ margin-bottom: 10px;
160
+ }
161
+ .conversation-content {
162
+ background: white;
163
+ padding: 15px;
164
+ border-radius: 4px;
165
+ border: 1px solid #dee2e6;
166
+ white-space: pre-wrap;
167
+ font-family: "Monaco", "Menlo", monospace;
168
+ font-size: 12px;
169
+ max-height: 400px;
170
+ max-width: 1300px;
171
+ overflow-y: auto;
172
+ }
173
+ .run-status {
174
+ text-transform: capitalize;
175
+ }
176
+ .chip {
177
+ padding: 2px 6px;
178
+ border-radius: 3px;
179
+ font-weight: bold;
180
+ }
181
+ .perfect {
182
+ background-color: #d4edda;
183
+ color: #155724;
184
+ }
185
+ .good {
186
+ background-color: #fff3cd;
187
+ color: #856404;
188
+ }
189
+ .poor {
190
+ background-color: #f8d7da;
191
+ color: #721c24;
192
+ }
193
+ .tool-call {
194
+ background: #e9ecef;
195
+ padding: 2px 6px;
196
+ border-radius: 3px;
197
+ margin: 0 2px 2px 0;
198
+ cursor: help;
199
+ display: inline-block;
200
+ word-break: break-word;
201
+ }
202
+ .tokens-usage {
203
+ background: #e3f2fd;
204
+ padding: 2px 6px;
205
+ border-radius: 3px;
206
+ cursor: help;
207
+ }
208
+ .prompt-cell {
209
+ width: 35%;
210
+ min-width: 350px;
211
+ word-wrap: break-word;
212
+ font-family: "Monaco", "Menlo", monospace;
213
+ font-size: 12px;
214
+ background-color: #f8f9fa;
215
+ }
216
+ .model-cell {
217
+ width: 15%;
218
+ min-width: 180px;
219
+ word-wrap: break-word;
220
+ }
221
+ .tool-calls-cell {
222
+ width: 12%;
223
+ min-width: 120px;
224
+ word-wrap: break-word;
225
+ white-space: normal;
226
+ }
227
+ .accuracy-cell {
228
+ width: 8%;
229
+ min-width: 80px;
230
+ text-align: center;
231
+ }
232
+ .baseline-accuracy-cell {
233
+ width: 8%;
234
+ min-width: 80px;
235
+ text-align: center;
236
+ }
237
+ .accuracy-comparison {
238
+ background: #e9ecef;
239
+ padding: 2px 6px;
240
+ border-radius: 3px;
241
+ font-weight: bold;
242
+ }
243
+ .accuracy-improved {
244
+ background: #d4edda;
245
+ color: #155724;
246
+ }
247
+ .accuracy-regressed {
248
+ background: #f8d7da;
249
+ color: #721c24;
250
+ }
251
+ .accuracy-same {
252
+ background: #e2e3e5;
253
+ color: #495057;
254
+ }
255
+ .response-time-cell {
256
+ width: 10%;
257
+ min-width: 100px;
258
+ text-align: center;
259
+ }
260
+ .tokens-cell {
261
+ width: 10%;
262
+ min-width: 100px;
263
+ text-align: center;
264
+ }
265
+ .expand-indicator {
266
+ margin-right: 8px;
267
+ font-weight: bold;
268
+ color: #00684a;
269
+ }
270
+ .status-done {
271
+ color: #28a745;
272
+ font-weight: bold;
273
+ }
274
+ .status-failed {
275
+ color: #dc3545;
276
+ font-weight: bold;
277
+ }
278
+ .status-in-progress {
279
+ color: #ffc107;
280
+ font-weight: bold;
281
+ }
282
+ @media (max-width: 768px) {
283
+ .container {
284
+ padding: 15px;
285
+ }
286
+ table {
287
+ font-size: 12px;
288
+ }
289
+ th,
290
+ td {
291
+ padding: 8px 4px;
292
+ }
293
+ .info-grid,
294
+ .stat-grid {
295
+ grid-template-columns: 1fr;
296
+ }
297
+ }
298
+ </style>
299
+ </head>
300
+ <body>
301
+ <div class="container">
302
+ <h1>📊 MongoDB MCP Server - Accuracy Test Summary</h1>
303
+ <div class="header-info">
304
+ <h2>📊 Current Run Information</h2>
305
+ <div class="info-grid">
306
+ <div class="info-item">
307
+ <div class="info-label">Commit SHA</div>
308
+ <div class="info-value">{{commitSHA}}</div>
309
+ </div>
310
+ <div class="info-item">
311
+ <div class="info-label">Accuracy Run ID</div>
312
+ <div class="info-value">{{accuracyRunId}}</div>
313
+ </div>
314
+ <div class="info-item">
315
+ <div class="info-label">Accuracy Run Status</div>
316
+ <div class="info-value">{{accuracyRunStatus}}</div>
317
+ </div>
318
+ <div class="info-item">
319
+ <div class="info-label">Run Created On</div>
320
+ <div class="info-value">{{createdOn}}</div>
321
+ </div>
322
+ <div class="info-item">
323
+ <div class="info-label">Report Generated On</div>
324
+ <div class="info-value">{{reportGeneratedOn}}</div>
325
+ </div>
326
+ </div>
327
+ </div>
328
+
329
+ <div class="header-info">
330
+ <h2>📈 Test Results Summary</h2>
331
+ <div class="info-grid">
332
+ <div class="info-item">
333
+ <div class="info-label">Total Prompts Evaluated</div>
334
+ <div class="info-value">{{totalPrompts}}</div>
335
+ </div>
336
+ <div class="info-item">
337
+ <div class="info-label">Models Tested</div>
338
+ <div class="info-value">{{totalModels}}</div>
339
+ </div>
340
+ <div class="info-item">
341
+ <div class="info-label">Responses with 0% Accuracy</div>
342
+ <div class="info-value">{{responsesWithZeroAccuracy}}</div>
343
+ </div>
344
+ <div class="info-item">
345
+ <div class="info-label">Average Accuracy</div>
346
+ <div class="info-value">{{averageAccuracy}}</div>
347
+ </div>
348
+ </div>
349
+ </div>
350
+
351
+ <div class="header-info">
352
+ <h2>🔄 Baseline Comparison</h2>
353
+ <div class="info-grid">
354
+ <div class="info-item">
355
+ <div class="info-label">Baseline Commit SHA</div>
356
+ <div class="info-value">{{baselineCommitSHA}}</div>
357
+ </div>
358
+ <div class="info-item">
359
+ <div class="info-label">Baseline Accuracy Run ID</div>
360
+ <div class="info-value">{{baselineAccuracyRunId}}</div>
361
+ </div>
362
+ <div class="info-item">
363
+ <div class="info-label">Baseline Accuracy Run Status</div>
364
+ <div class="info-value">{{baselineAccuracyRunStatus}}</div>
365
+ </div>
366
+ <div class="info-item">
367
+ <div class="info-label">Baseline Run Created On</div>
368
+ <div class="info-value">{{baselineCreatedOn}}</div>
369
+ </div>
370
+ <div class="info-item">
371
+ <div class="info-label">Responses Improved vs Baseline</div>
372
+ <div class="info-value">{{responsesImproved}}</div>
373
+ </div>
374
+ <div class="info-item">
375
+ <div class="info-label">Responses Regressed vs Baseline</div>
376
+ <div class="info-value">{{responsesRegressed}}</div>
377
+ </div>
378
+ </div>
379
+ </div>
380
+ <table>
381
+ <thead>
382
+ <tr>
383
+ <th>Prompt</th>
384
+ <th>Model</th>
385
+ <th>Expected Tool Calls</th>
386
+ <th>LLM Tool Calls</th>
387
+ <th>Accuracy</th>
388
+ <th>Baseline Accuracy</th>
389
+ <th>LLM Response Time (ms)</th>
390
+ <th>Total Tokens Used</th>
391
+ </tr>
392
+ </thead>
393
+ <tbody>
394
+ {{tableRows}}
395
+ </tbody>
396
+ </table>
397
+ </div>
398
+ <script>
399
+ function toggleDetails(index) {
400
+ const detailsRow = document.getElementById("details-" + index);
401
+ const indicator = document.getElementById("indicator-" + index);
402
+ const testRow = detailsRow.previousElementSibling;
403
+ if (detailsRow.classList.contains("visible")) {
404
+ detailsRow.classList.remove("visible");
405
+ indicator.textContent = "▶";
406
+ testRow.classList.remove("expanded-row");
407
+ } else {
408
+ detailsRow.classList.add("visible");
409
+ indicator.textContent = "▼";
410
+ testRow.classList.add("expanded-row");
411
+ }
412
+ }
413
+ </script>
414
+ </body>
415
+ </html>