@kryptosai/mcp-observatory 1.32.1 → 1.34.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 (409) hide show
  1. package/README.md +11 -122
  2. package/dist/src/auth.d.ts +22 -0
  3. package/dist/src/auth.js +140 -0
  4. package/dist/src/auth.js.map +1 -0
  5. package/dist/src/cli.js +55 -4
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/commands/audit.js +7 -1
  8. package/dist/src/commands/audit.js.map +1 -1
  9. package/dist/src/commands/demo.d.ts +2 -0
  10. package/dist/src/commands/demo.js +247 -0
  11. package/dist/src/commands/demo.js.map +1 -0
  12. package/dist/src/commands/enforce.js +14 -3
  13. package/dist/src/commands/enforce.js.map +1 -1
  14. package/dist/src/commands/helpers.d.ts +13 -0
  15. package/dist/src/commands/helpers.js +34 -1
  16. package/dist/src/commands/helpers.js.map +1 -1
  17. package/dist/src/commands/init-ci.d.ts +1 -0
  18. package/dist/src/commands/init-ci.js +157 -10
  19. package/dist/src/commands/init-ci.js.map +1 -1
  20. package/dist/src/commands/receipt.js +13 -3
  21. package/dist/src/commands/receipt.js.map +1 -1
  22. package/dist/src/commands/scan.d.ts +14 -0
  23. package/dist/src/commands/scan.js +51 -3
  24. package/dist/src/commands/scan.js.map +1 -1
  25. package/dist/src/commands/score.js +22 -1
  26. package/dist/src/commands/score.js.map +1 -1
  27. package/dist/src/commands/setup-ci-conversion.js +4 -4
  28. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  29. package/dist/src/commands/skill-scan.js +5 -3
  30. package/dist/src/commands/skill-scan.js.map +1 -1
  31. package/dist/src/commands/test.d.ts +19 -0
  32. package/dist/src/commands/test.js +77 -3
  33. package/dist/src/commands/test.js.map +1 -1
  34. package/dist/src/commercial.d.ts +3 -0
  35. package/dist/src/commercial.js +14 -3
  36. package/dist/src/commercial.js.map +1 -1
  37. package/dist/src/index.d.ts +1 -1
  38. package/dist/src/index.js +1 -1
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/receipt.d.ts +9 -0
  41. package/dist/src/receipt.js +24 -1
  42. package/dist/src/receipt.js.map +1 -1
  43. package/dist/src/telemetry.d.ts +25 -3
  44. package/dist/src/telemetry.js +88 -19
  45. package/dist/src/telemetry.js.map +1 -1
  46. package/dist/src/utils/failure-diagnosis.d.ts +7 -0
  47. package/dist/src/utils/failure-diagnosis.js +14 -0
  48. package/dist/src/utils/failure-diagnosis.js.map +1 -1
  49. package/docs/mcp-server-safety-index.md +255 -6
  50. package/docs/safety-index/artifacts/1link-mcp.json +66 -0
  51. package/docs/safety-index/artifacts/1link-mcp.md +106 -0
  52. package/docs/safety-index/artifacts/aadhaar-mcp.json +66 -0
  53. package/docs/safety-index/artifacts/aadhaar-mcp.md +106 -0
  54. package/docs/safety-index/artifacts/aikidosec-mcp-server.json +536 -0
  55. package/docs/safety-index/artifacts/aikidosec-mcp-server.md +203 -0
  56. package/docs/safety-index/artifacts/aiou-mcp.json +66 -0
  57. package/docs/safety-index/artifacts/aiou-mcp.md +106 -0
  58. package/docs/safety-index/artifacts/airtable-mcp-server.json +66 -0
  59. package/docs/safety-index/artifacts/airtable-mcp-server.md +106 -0
  60. package/docs/safety-index/artifacts/alpaca-server.json +66 -0
  61. package/docs/safety-index/artifacts/alpaca-server.md +106 -0
  62. package/docs/safety-index/artifacts/antv-chart-server.json +21 -21
  63. package/docs/safety-index/artifacts/antv-chart-server.md +11 -11
  64. package/docs/safety-index/artifacts/apify-mcp-server.json +66 -0
  65. package/docs/safety-index/artifacts/apify-mcp-server.md +103 -0
  66. package/docs/safety-index/artifacts/apple-music-server.json +66 -0
  67. package/docs/safety-index/artifacts/apple-music-server.md +102 -0
  68. package/docs/safety-index/artifacts/appwrite-mcp.json +66 -0
  69. package/docs/safety-index/artifacts/appwrite-mcp.md +106 -0
  70. package/docs/safety-index/artifacts/aqi-india-mcp.json +66 -0
  71. package/docs/safety-index/artifacts/aqi-india-mcp.md +106 -0
  72. package/docs/safety-index/artifacts/argocd-mcp-server.json +66 -0
  73. package/docs/safety-index/artifacts/argocd-mcp-server.md +106 -0
  74. package/docs/safety-index/artifacts/arxiv-mcp-server.json +66 -0
  75. package/docs/safety-index/artifacts/arxiv-mcp-server.md +100 -0
  76. package/docs/safety-index/artifacts/aws-mcp-server.json +66 -0
  77. package/docs/safety-index/artifacts/aws-mcp-server.md +103 -0
  78. package/docs/safety-index/artifacts/azure-devops-mcp-server.json +66 -0
  79. package/docs/safety-index/artifacts/azure-devops-mcp-server.md +106 -0
  80. package/docs/safety-index/artifacts/azure-mcp-server.json +66 -0
  81. package/docs/safety-index/artifacts/azure-mcp-server.md +102 -0
  82. package/docs/safety-index/artifacts/bhuvan-mcp.json +66 -0
  83. package/docs/safety-index/artifacts/bhuvan-mcp.md +106 -0
  84. package/docs/safety-index/artifacts/brave-search-mcp-server-v2.json +66 -0
  85. package/docs/safety-index/artifacts/brave-search-mcp-server-v2.md +103 -0
  86. package/docs/safety-index/artifacts/brave-search-server.json +18 -18
  87. package/docs/safety-index/artifacts/brave-search-server.md +6 -6
  88. package/docs/safety-index/artifacts/browsermcp-server.json +18 -18
  89. package/docs/safety-index/artifacts/browsermcp-server.md +9 -9
  90. package/docs/safety-index/artifacts/cal-com-mcp.json +66 -0
  91. package/docs/safety-index/artifacts/cal-com-mcp.md +106 -0
  92. package/docs/safety-index/artifacts/canvas-server.json +66 -0
  93. package/docs/safety-index/artifacts/canvas-server.md +105 -0
  94. package/docs/safety-index/artifacts/caselaw-server.json +66 -0
  95. package/docs/safety-index/artifacts/caselaw-server.md +106 -0
  96. package/docs/safety-index/artifacts/chatwoot-mcp.json +66 -0
  97. package/docs/safety-index/artifacts/chatwoot-mcp.md +102 -0
  98. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +23 -23
  99. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +12 -12
  100. package/docs/safety-index/artifacts/circleci-server.json +1606 -0
  101. package/docs/safety-index/artifacts/circleci-server.md +243 -0
  102. package/docs/safety-index/artifacts/clarity-server.json +794 -0
  103. package/docs/safety-index/artifacts/clarity-server.md +201 -0
  104. package/docs/safety-index/artifacts/clay-server.json +4 -4
  105. package/docs/safety-index/artifacts/clay-server.md +3 -3
  106. package/docs/safety-index/artifacts/clickup-mcp-server.json +66 -0
  107. package/docs/safety-index/artifacts/clickup-mcp-server.md +106 -0
  108. package/docs/safety-index/artifacts/cloudflare-mcp-server-v2.json +66 -0
  109. package/docs/safety-index/artifacts/cloudflare-mcp-server-v2.md +102 -0
  110. package/docs/safety-index/artifacts/cloudflare-server.json +4 -4
  111. package/docs/safety-index/artifacts/cloudflare-server.md +4 -4
  112. package/docs/safety-index/artifacts/coinbase-cds-server.json +322 -0
  113. package/docs/safety-index/artifacts/coinbase-cds-server.md +201 -0
  114. package/docs/safety-index/artifacts/confluence-mcp-server.json +1727 -0
  115. package/docs/safety-index/artifacts/confluence-mcp-server.md +255 -0
  116. package/docs/safety-index/artifacts/context7-server.json +18 -18
  117. package/docs/safety-index/artifacts/context7-server.md +12 -12
  118. package/docs/safety-index/artifacts/contract-analysis-server.json +66 -0
  119. package/docs/safety-index/artifacts/contract-analysis-server.md +106 -0
  120. package/docs/safety-index/artifacts/cowin-mcp.json +66 -0
  121. package/docs/safety-index/artifacts/cowin-mcp.md +106 -0
  122. package/docs/safety-index/artifacts/currents-mcp-server.json +66 -0
  123. package/docs/safety-index/artifacts/currents-mcp-server.md +102 -0
  124. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +34 -34
  125. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +15 -15
  126. package/docs/safety-index/artifacts/dalle-server.json +66 -0
  127. package/docs/safety-index/artifacts/dalle-server.md +104 -0
  128. package/docs/safety-index/artifacts/daraz-mcp.json +66 -0
  129. package/docs/safety-index/artifacts/daraz-mcp.md +106 -0
  130. package/docs/safety-index/artifacts/desktop-commander-mcp-server.json +2348 -0
  131. package/docs/safety-index/artifacts/desktop-commander-mcp-server.md +266 -0
  132. package/docs/safety-index/artifacts/digilocker-mcp.json +66 -0
  133. package/docs/safety-index/artifacts/digilocker-mcp.md +106 -0
  134. package/docs/safety-index/artifacts/discord-mcp-server.json +1297 -0
  135. package/docs/safety-index/artifacts/discord-mcp-server.md +169 -0
  136. package/docs/safety-index/artifacts/discord-mcp.json +1023 -0
  137. package/docs/safety-index/artifacts/discord-mcp.md +229 -0
  138. package/docs/safety-index/artifacts/docker-server.json +19 -19
  139. package/docs/safety-index/artifacts/docker-server.md +8 -8
  140. package/docs/safety-index/artifacts/dynamodb-mcp-server.json +66 -0
  141. package/docs/safety-index/artifacts/dynamodb-mcp-server.md +103 -0
  142. package/docs/safety-index/artifacts/dynatrace-mcp-server.json +66 -0
  143. package/docs/safety-index/artifacts/dynatrace-mcp-server.md +103 -0
  144. package/docs/safety-index/artifacts/easypaisa-mcp.json +553 -0
  145. package/docs/safety-index/artifacts/easypaisa-mcp.md +205 -0
  146. package/docs/safety-index/artifacts/ehsaas-mcp.json +66 -0
  147. package/docs/safety-index/artifacts/ehsaas-mcp.md +106 -0
  148. package/docs/safety-index/artifacts/epic-server.json +66 -0
  149. package/docs/safety-index/artifacts/epic-server.md +106 -0
  150. package/docs/safety-index/artifacts/eslint-mcp-server.json +320 -0
  151. package/docs/safety-index/artifacts/eslint-mcp-server.md +201 -0
  152. package/docs/safety-index/artifacts/espn-server.json +394 -0
  153. package/docs/safety-index/artifacts/espn-server.md +187 -0
  154. package/docs/safety-index/artifacts/everything-server.json +18 -18
  155. package/docs/safety-index/artifacts/everything-server.md +12 -12
  156. package/docs/safety-index/artifacts/exa-server.json +22 -22
  157. package/docs/safety-index/artifacts/exa-server.md +14 -14
  158. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +19 -19
  159. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +11 -11
  160. package/docs/safety-index/artifacts/fbr-mcp.json +66 -0
  161. package/docs/safety-index/artifacts/fbr-mcp.md +106 -0
  162. package/docs/safety-index/artifacts/fetch-server.json +4 -4
  163. package/docs/safety-index/artifacts/fetch-server.md +3 -3
  164. package/docs/safety-index/artifacts/fhir-server.json +66 -0
  165. package/docs/safety-index/artifacts/fhir-server.md +100 -0
  166. package/docs/safety-index/artifacts/figma-server.json +18 -18
  167. package/docs/safety-index/artifacts/figma-server.md +10 -10
  168. package/docs/safety-index/artifacts/filesystem-mcp-server.json +18 -18
  169. package/docs/safety-index/artifacts/filesystem-mcp-server.md +10 -10
  170. package/docs/safety-index/artifacts/filesystem-server.json +19 -19
  171. package/docs/safety-index/artifacts/filesystem-server.md +11 -11
  172. package/docs/safety-index/artifacts/firecrawl-server.json +18 -18
  173. package/docs/safety-index/artifacts/firecrawl-server.md +10 -10
  174. package/docs/safety-index/artifacts/flight-server.json +66 -0
  175. package/docs/safety-index/artifacts/flight-server.md +106 -0
  176. package/docs/safety-index/artifacts/foodpanda-pakistan-mcp.json +66 -0
  177. package/docs/safety-index/artifacts/foodpanda-pakistan-mcp.md +106 -0
  178. package/docs/safety-index/artifacts/gcp-mcp-server.json +66 -0
  179. package/docs/safety-index/artifacts/gcp-mcp-server.md +103 -0
  180. package/docs/safety-index/artifacts/github-mcp-server.json +18 -18
  181. package/docs/safety-index/artifacts/github-mcp-server.md +10 -10
  182. package/docs/safety-index/artifacts/gitlab-server.json +16 -16
  183. package/docs/safety-index/artifacts/gitlab-server.md +6 -6
  184. package/docs/safety-index/artifacts/gmail-server.json +4 -4
  185. package/docs/safety-index/artifacts/gmail-server.md +3 -3
  186. package/docs/safety-index/artifacts/google-calendar-server.json +4 -4
  187. package/docs/safety-index/artifacts/google-calendar-server.md +3 -3
  188. package/docs/safety-index/artifacts/google-drive-server.json +4 -4
  189. package/docs/safety-index/artifacts/google-drive-server.md +4 -4
  190. package/docs/safety-index/artifacts/google-sheets-server.json +4 -4
  191. package/docs/safety-index/artifacts/google-sheets-server.md +3 -3
  192. package/docs/safety-index/artifacts/google-tasks-server.json +4 -4
  193. package/docs/safety-index/artifacts/google-tasks-server.md +3 -3
  194. package/docs/safety-index/artifacts/gst-mcp.json +66 -0
  195. package/docs/safety-index/artifacts/gst-mcp.md +106 -0
  196. package/docs/safety-index/artifacts/gupshup-mcp.json +66 -0
  197. package/docs/safety-index/artifacts/gupshup-mcp.md +106 -0
  198. package/docs/safety-index/artifacts/hasura-mcp.json +66 -0
  199. package/docs/safety-index/artifacts/hasura-mcp.md +106 -0
  200. package/docs/safety-index/artifacts/healthcare-ayushman-bharat-mcp.json +66 -0
  201. package/docs/safety-index/artifacts/healthcare-ayushman-bharat-mcp.md +106 -0
  202. package/docs/safety-index/artifacts/hec-pakistan-mcp.json +66 -0
  203. package/docs/safety-index/artifacts/hec-pakistan-mcp.md +106 -0
  204. package/docs/safety-index/artifacts/heroku-server.json +1502 -0
  205. package/docs/safety-index/artifacts/heroku-server.md +236 -0
  206. package/docs/safety-index/artifacts/homekit-server.json +66 -0
  207. package/docs/safety-index/artifacts/homekit-server.md +106 -0
  208. package/docs/safety-index/artifacts/hotel-booking-server.json +66 -0
  209. package/docs/safety-index/artifacts/hotel-booking-server.md +106 -0
  210. package/docs/safety-index/artifacts/hubspot-mcp-server.json +66 -0
  211. package/docs/safety-index/artifacts/hubspot-mcp-server.md +106 -0
  212. package/docs/safety-index/artifacts/huggingface-server.json +4 -4
  213. package/docs/safety-index/artifacts/huggingface-server.md +3 -3
  214. package/docs/safety-index/artifacts/indian-food-nutrition-mcp.json +663 -0
  215. package/docs/safety-index/artifacts/indian-food-nutrition-mcp.md +211 -0
  216. package/docs/safety-index/artifacts/irctc-mcp.json +66 -0
  217. package/docs/safety-index/artifacts/irctc-mcp.md +106 -0
  218. package/docs/safety-index/artifacts/jazz-mcp.json +66 -0
  219. package/docs/safety-index/artifacts/jazz-mcp.md +106 -0
  220. package/docs/safety-index/artifacts/jazzcash-mcp.json +66 -0
  221. package/docs/safety-index/artifacts/jazzcash-mcp.md +102 -0
  222. package/docs/safety-index/artifacts/jina-server.json +4 -4
  223. package/docs/safety-index/artifacts/jina-server.md +3 -3
  224. package/docs/safety-index/artifacts/jira-mcp-server.json +66 -0
  225. package/docs/safety-index/artifacts/jira-mcp-server.md +104 -0
  226. package/docs/safety-index/artifacts/k2-mcp.json +66 -0
  227. package/docs/safety-index/artifacts/k2-mcp.md +106 -0
  228. package/docs/safety-index/artifacts/karachi-stock-exchange-mcp.json +67 -0
  229. package/docs/safety-index/artifacts/karachi-stock-exchange-mcp.md +114 -0
  230. package/docs/safety-index/artifacts/khan-academy-server.json +66 -0
  231. package/docs/safety-index/artifacts/khan-academy-server.md +106 -0
  232. package/docs/safety-index/artifacts/kubernetes-server.json +104 -34
  233. package/docs/safety-index/artifacts/kubernetes-server.md +25 -21
  234. package/docs/safety-index/artifacts/langfuse-mcp.json +66 -0
  235. package/docs/safety-index/artifacts/langfuse-mcp.md +106 -0
  236. package/docs/safety-index/artifacts/linear-server.json +18 -18
  237. package/docs/safety-index/artifacts/linear-server.md +8 -8
  238. package/docs/safety-index/artifacts/mapmyindia-mcp.json +66 -0
  239. package/docs/safety-index/artifacts/mapmyindia-mcp.md +106 -0
  240. package/docs/safety-index/artifacts/memory-server.json +18 -18
  241. package/docs/safety-index/artifacts/memory-server.md +11 -11
  242. package/docs/safety-index/artifacts/minecraft-server.json +592 -0
  243. package/docs/safety-index/artifacts/minecraft-server.md +186 -0
  244. package/docs/safety-index/artifacts/mls-server.json +66 -0
  245. package/docs/safety-index/artifacts/mls-server.md +106 -0
  246. package/docs/safety-index/artifacts/mongodb-server.json +4 -4
  247. package/docs/safety-index/artifacts/mongodb-server.md +4 -4
  248. package/docs/safety-index/artifacts/mui-mcp-server.json +419 -0
  249. package/docs/safety-index/artifacts/mui-mcp-server.md +208 -0
  250. package/docs/safety-index/artifacts/mysql-mcp-server.json +66 -0
  251. package/docs/safety-index/artifacts/mysql-mcp-server.md +106 -0
  252. package/docs/safety-index/artifacts/nadra-mcp.json +66 -0
  253. package/docs/safety-index/artifacts/nadra-mcp.md +106 -0
  254. package/docs/safety-index/artifacts/neon-server.json +4 -4
  255. package/docs/safety-index/artifacts/neon-server.md +3 -3
  256. package/docs/safety-index/artifacts/notion-server.json +18 -18
  257. package/docs/safety-index/artifacts/notion-server.md +10 -10
  258. package/docs/safety-index/artifacts/obsidian-mcp.json +66 -0
  259. package/docs/safety-index/artifacts/obsidian-mcp.md +106 -0
  260. package/docs/safety-index/artifacts/ola-maps-mcp.json +66 -0
  261. package/docs/safety-index/artifacts/ola-maps-mcp.md +106 -0
  262. package/docs/safety-index/artifacts/olx-pakistan-mcp.json +66 -0
  263. package/docs/safety-index/artifacts/olx-pakistan-mcp.md +106 -0
  264. package/docs/safety-index/artifacts/onesignal-server.json +4 -4
  265. package/docs/safety-index/artifacts/onesignal-server.md +3 -3
  266. package/docs/safety-index/artifacts/openai-mcp-server.json +66 -0
  267. package/docs/safety-index/artifacts/openai-mcp-server.md +106 -0
  268. package/docs/safety-index/artifacts/opentofu-server.json +19 -19
  269. package/docs/safety-index/artifacts/opentofu-server.md +10 -10
  270. package/docs/safety-index/artifacts/openweather-server.json +66 -0
  271. package/docs/safety-index/artifacts/openweather-server.md +106 -0
  272. package/docs/safety-index/artifacts/pakistan-cricket-mcp.json +66 -0
  273. package/docs/safety-index/artifacts/pakistan-cricket-mcp.md +106 -0
  274. package/docs/safety-index/artifacts/pakistan-post-mcp.json +66 -0
  275. package/docs/safety-index/artifacts/pakistan-post-mcp.md +106 -0
  276. package/docs/safety-index/artifacts/pakistan-weather-mcp.json +66 -0
  277. package/docs/safety-index/artifacts/pakistan-weather-mcp.md +106 -0
  278. package/docs/safety-index/artifacts/pakwheels-mcp.json +66 -0
  279. package/docs/safety-index/artifacts/pakwheels-mcp.md +106 -0
  280. package/docs/safety-index/artifacts/paytm-mcp.json +66 -0
  281. package/docs/safety-index/artifacts/paytm-mcp.md +106 -0
  282. package/docs/safety-index/artifacts/perplexity-mcp.json +66 -0
  283. package/docs/safety-index/artifacts/perplexity-mcp.md +106 -0
  284. package/docs/safety-index/artifacts/pims-mcp.json +66 -0
  285. package/docs/safety-index/artifacts/pims-mcp.md +106 -0
  286. package/docs/safety-index/artifacts/playwright-mcp-server.json +18 -18
  287. package/docs/safety-index/artifacts/playwright-mcp-server.md +8 -8
  288. package/docs/safety-index/artifacts/postgres-server.json +19 -19
  289. package/docs/safety-index/artifacts/postgres-server.md +9 -9
  290. package/docs/safety-index/artifacts/postman-india-region.json +66 -0
  291. package/docs/safety-index/artifacts/postman-india-region.md +102 -0
  292. package/docs/safety-index/artifacts/postman-mcp-server.json +66 -0
  293. package/docs/safety-index/artifacts/postman-mcp-server.md +102 -0
  294. package/docs/safety-index/artifacts/promptopia-server.json +21 -21
  295. package/docs/safety-index/artifacts/promptopia-server.md +11 -11
  296. package/docs/safety-index/artifacts/pubmed-mcp-server.json +58 -0
  297. package/docs/safety-index/artifacts/pubmed-mcp-server.md +96 -0
  298. package/docs/safety-index/artifacts/punjab-health-mcp.json +66 -0
  299. package/docs/safety-index/artifacts/punjab-health-mcp.md +106 -0
  300. package/docs/safety-index/artifacts/puppeteer-server.json +18 -18
  301. package/docs/safety-index/artifacts/puppeteer-server.md +9 -9
  302. package/docs/safety-index/artifacts/qase-server.json +7055 -0
  303. package/docs/safety-index/artifacts/qase-server.md +329 -0
  304. package/docs/safety-index/artifacts/qdrant-server.json +4 -4
  305. package/docs/safety-index/artifacts/qdrant-server.md +4 -4
  306. package/docs/safety-index/artifacts/raspberrypi-server.json +66 -0
  307. package/docs/safety-index/artifacts/raspberrypi-server.md +106 -0
  308. package/docs/safety-index/artifacts/razorpay-mcp.json +66 -0
  309. package/docs/safety-index/artifacts/razorpay-mcp.md +103 -0
  310. package/docs/safety-index/artifacts/reddit-server.json +4 -4
  311. package/docs/safety-index/artifacts/reddit-server.md +3 -3
  312. package/docs/safety-index/artifacts/redis-server.json +66 -0
  313. package/docs/safety-index/artifacts/redis-server.md +106 -0
  314. package/docs/safety-index/artifacts/ref-tools-server.json +18 -18
  315. package/docs/safety-index/artifacts/ref-tools-server.md +8 -8
  316. package/docs/safety-index/artifacts/resend-mcp.json +66 -0
  317. package/docs/safety-index/artifacts/resend-mcp.md +102 -0
  318. package/docs/safety-index/artifacts/rozgar-mcp.json +66 -0
  319. package/docs/safety-index/artifacts/rozgar-mcp.md +106 -0
  320. package/docs/safety-index/artifacts/s3-mcp-server.json +467 -0
  321. package/docs/safety-index/artifacts/s3-mcp-server.md +209 -0
  322. package/docs/safety-index/artifacts/salesforce-mcp-server.json +66 -0
  323. package/docs/safety-index/artifacts/salesforce-mcp-server.md +106 -0
  324. package/docs/safety-index/artifacts/sehat-sahulat-mcp.json +66 -0
  325. package/docs/safety-index/artifacts/sehat-sahulat-mcp.md +106 -0
  326. package/docs/safety-index/artifacts/sendgrid-mcp.json +66 -0
  327. package/docs/safety-index/artifacts/sendgrid-mcp.md +106 -0
  328. package/docs/safety-index/artifacts/sentry-server.json +3 -3
  329. package/docs/safety-index/artifacts/sentry-server.md +2 -2
  330. package/docs/safety-index/artifacts/sequential-thinking-server.json +18 -18
  331. package/docs/safety-index/artifacts/sequential-thinking-server.md +8 -8
  332. package/docs/safety-index/artifacts/shopify-mcp-server.json +66 -0
  333. package/docs/safety-index/artifacts/shopify-mcp-server.md +106 -0
  334. package/docs/safety-index/artifacts/shopify-mcp.json +66 -0
  335. package/docs/safety-index/artifacts/shopify-mcp.md +106 -0
  336. package/docs/safety-index/artifacts/shortcut-mcp-server.json +66 -0
  337. package/docs/safety-index/artifacts/shortcut-mcp-server.md +102 -0
  338. package/docs/safety-index/artifacts/slack-server.json +3 -3
  339. package/docs/safety-index/artifacts/slack-server.md +2 -2
  340. package/docs/safety-index/artifacts/smartbear-mcp-server.json +21483 -0
  341. package/docs/safety-index/artifacts/smartbear-mcp-server.md +900 -0
  342. package/docs/safety-index/artifacts/spotify-mcp.json +2071 -0
  343. package/docs/safety-index/artifacts/spotify-mcp.md +237 -0
  344. package/docs/safety-index/artifacts/spotify-server.json +66 -0
  345. package/docs/safety-index/artifacts/spotify-server.md +106 -0
  346. package/docs/safety-index/artifacts/sqlite-server.json +4 -4
  347. package/docs/safety-index/artifacts/sqlite-server.md +3 -3
  348. package/docs/safety-index/artifacts/stable-diffusion-server.json +66 -0
  349. package/docs/safety-index/artifacts/stable-diffusion-server.md +106 -0
  350. package/docs/safety-index/artifacts/stock-nse-india.json +66 -0
  351. package/docs/safety-index/artifacts/stock-nse-india.md +106 -0
  352. package/docs/safety-index/artifacts/storybook-mcp-server.json +66 -0
  353. package/docs/safety-index/artifacts/storybook-mcp-server.md +103 -0
  354. package/docs/safety-index/artifacts/stripe-server.json +3 -3
  355. package/docs/safety-index/artifacts/stripe-server.md +2 -2
  356. package/docs/safety-index/artifacts/supabase-server.json +3 -3
  357. package/docs/safety-index/artifacts/supabase-server.md +2 -2
  358. package/docs/safety-index/artifacts/tavily-search-server.json +4 -4
  359. package/docs/safety-index/artifacts/tavily-search-server.md +3 -3
  360. package/docs/safety-index/artifacts/telegram-mcp-server.json +66 -0
  361. package/docs/safety-index/artifacts/telegram-mcp-server.md +103 -0
  362. package/docs/safety-index/artifacts/telenor-pakistan-mcp.json +66 -0
  363. package/docs/safety-index/artifacts/telenor-pakistan-mcp.md +106 -0
  364. package/docs/safety-index/artifacts/textlocal-mcp.json +66 -0
  365. package/docs/safety-index/artifacts/textlocal-mcp.md +106 -0
  366. package/docs/safety-index/artifacts/tooljet-mcp.json +66 -0
  367. package/docs/safety-index/artifacts/tooljet-mcp.md +106 -0
  368. package/docs/safety-index/artifacts/transcend-server.json +3438 -0
  369. package/docs/safety-index/artifacts/transcend-server.md +277 -0
  370. package/docs/safety-index/artifacts/trello-mcp-server.json +916 -0
  371. package/docs/safety-index/artifacts/trello-mcp-server.md +211 -0
  372. package/docs/safety-index/artifacts/twilio-mcp.json +66 -0
  373. package/docs/safety-index/artifacts/twilio-mcp.md +106 -0
  374. package/docs/safety-index/artifacts/udyam-mcp.json +66 -0
  375. package/docs/safety-index/artifacts/udyam-mcp.md +106 -0
  376. package/docs/safety-index/artifacts/ufone-mcp.json +66 -0
  377. package/docs/safety-index/artifacts/ufone-mcp.md +106 -0
  378. package/docs/safety-index/artifacts/ui5-mcp-server.json +21 -21
  379. package/docs/safety-index/artifacts/ui5-mcp-server.md +10 -10
  380. package/docs/safety-index/artifacts/unity-server.json +66 -0
  381. package/docs/safety-index/artifacts/unity-server.md +102 -0
  382. package/docs/safety-index/artifacts/upi-mcp.json +452 -0
  383. package/docs/safety-index/artifacts/upi-mcp.md +201 -0
  384. package/docs/safety-index/artifacts/vercel-ai-server.json +4 -4
  385. package/docs/safety-index/artifacts/vercel-ai-server.md +4 -4
  386. package/docs/safety-index/artifacts/vimeo-server.json +66 -0
  387. package/docs/safety-index/artifacts/vimeo-server.md +106 -0
  388. package/docs/safety-index/artifacts/weather-server.json +66 -0
  389. package/docs/safety-index/artifacts/weather-server.md +106 -0
  390. package/docs/safety-index/artifacts/whatsapp-business-mcp.json +66 -0
  391. package/docs/safety-index/artifacts/whatsapp-business-mcp.md +106 -0
  392. package/docs/safety-index/artifacts/whatsapp-mcp-server.json +66 -0
  393. package/docs/safety-index/artifacts/whatsapp-mcp-server.md +106 -0
  394. package/docs/safety-index/artifacts/whatsapp-mcp.json +66 -0
  395. package/docs/safety-index/artifacts/whatsapp-mcp.md +106 -0
  396. package/docs/safety-index/artifacts/yahoo-finance-server.json +626 -0
  397. package/docs/safety-index/artifacts/yahoo-finance-server.md +187 -0
  398. package/docs/safety-index/artifacts/youtube-mcp-server.json +58 -0
  399. package/docs/safety-index/artifacts/youtube-mcp-server.md +96 -0
  400. package/docs/safety-index/artifacts/youtube-server.json +66 -0
  401. package/docs/safety-index/artifacts/youtube-server.md +103 -0
  402. package/docs/safety-index/artifacts/zendesk-mcp.json +66 -0
  403. package/docs/safety-index/artifacts/zendesk-mcp.md +106 -0
  404. package/docs/safety-index/artifacts/zillow-server.json +66 -0
  405. package/docs/safety-index/artifacts/zillow-server.md +102 -0
  406. package/docs/safety-index/artifacts/zong-mcp.json +66 -0
  407. package/docs/safety-index/artifacts/zong-mcp.md +106 -0
  408. package/docs/safety-index/targets.json +2145 -20
  409. package/package.json +10 -9
@@ -1,9 +1,26 @@
1
1
  import { access, mkdir, readFile, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { buildEvent, normalizeCampaign, recordEvent } from "../telemetry.js";
3
+ import { buildEvent, detectCiProvider, normalizeCampaign, recordEvent } from "../telemetry.js";
4
4
  import { defaultRunsDirectory, findLatestSuccessfulRunArtifact, readArtifact } from "../storage.js";
5
5
  import { TOOL_VERSION } from "../version.js";
6
6
  import { quoteShell } from "./helpers.js";
7
+ const CI_FILE_PATHS = {
8
+ "github-actions": ".github/workflows/mcp-observatory.yml",
9
+ "gitlab-ci": ".gitlab-ci.yml",
10
+ "circleci": ".circleci/config.yml",
11
+ "bitbucket-pipelines": "bitbucket-pipelines.yml",
12
+ "azure-pipelines": "azure-pipelines.yml",
13
+ };
14
+ const PROVIDER_LABELS = {
15
+ "github-actions": "GitHub Action",
16
+ "gitlab-ci": "GitLab CI",
17
+ "circleci": "CircleCI",
18
+ "bitbucket-pipelines": "Bitbucket Pipelines",
19
+ "azure-pipelines": "Azure Pipelines",
20
+ };
21
+ function providerLabel(provider) {
22
+ return PROVIDER_LABELS[provider] ?? "CI Workflow";
23
+ }
7
24
  const DEFAULT_WORKFLOW_PATH = ".github/workflows/mcp-observatory.yml";
8
25
  const DEFAULT_BADGE_PATH = "docs/mcp-observatory-badge.md";
9
26
  const DEFAULT_TARGET_CONFIG_PATH = "mcp-observatory.target.json";
@@ -31,7 +48,7 @@ function normalizeSchedule(schedule) {
31
48
  const value = schedule.trim();
32
49
  return value.length > 0 ? value : DEFAULT_WEEKLY_CRON;
33
50
  }
34
- function workflowYaml(options) {
51
+ function githubActionsYaml(options) {
35
52
  const command = options.command?.trim();
36
53
  const target = options.target?.trim();
37
54
  const commentsEnabled = options.commentOnPr === true;
@@ -76,6 +93,129 @@ function workflowYaml(options) {
76
93
  lines.push("");
77
94
  return lines.join("\n");
78
95
  }
96
+ function workflowYaml(options) {
97
+ const provider = options.ciProvider ?? "github-actions";
98
+ switch (provider) {
99
+ case "github-actions": return githubActionsYaml(options);
100
+ case "gitlab-ci": return gitlabCiYaml(options);
101
+ case "circleci": return circleCiYaml(options);
102
+ case "bitbucket-pipelines": return bitbucketYaml(options);
103
+ case "azure-pipelines": return azurePipelinesYaml(options);
104
+ default: return githubActionsYaml(options);
105
+ }
106
+ }
107
+ function gitlabCiYaml(options) {
108
+ const lines = [
109
+ "mcp-observatory:",
110
+ " image: node:22",
111
+ ];
112
+ if (options.schedule) {
113
+ lines.push(" only:", " - schedules");
114
+ }
115
+ else {
116
+ lines.push(" rules:", " - if: $CI_PIPELINE_SOURCE == 'merge_request_event'", " - if: $CI_COMMIT_BRANCH == 'main'");
117
+ }
118
+ lines.push(" script:");
119
+ if (options.command) {
120
+ lines.push(` - npx @kryptosai/mcp-observatory test ${options.command} --deep --security` + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
121
+ }
122
+ else if (options.all) {
123
+ lines.push(" - npx @kryptosai/mcp-observatory scan --deep --security" + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
124
+ }
125
+ else {
126
+ lines.push(` - npx @kryptosai/mcp-observatory test --target mcp-observatory.target.json --deep --security`);
127
+ }
128
+ if (options.sarif !== false) {
129
+ lines.push(" artifacts:", " reports:", " sast: mcp-observatory.sarif");
130
+ }
131
+ return lines.join("\n");
132
+ }
133
+ function circleCiYaml(options) {
134
+ const lines = [
135
+ "version: 2.1",
136
+ "",
137
+ "jobs:",
138
+ " mcp-observatory:",
139
+ " docker:",
140
+ " - image: cimg/node:22.0",
141
+ " steps:",
142
+ " - checkout",
143
+ ` - run:`,
144
+ ];
145
+ if (options.command) {
146
+ lines.push(` command: npx @kryptosai/mcp-observatory test ${options.command} --deep --security` + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
147
+ }
148
+ else if (options.all) {
149
+ lines.push(" command: npx @kryptosai/mcp-observatory scan --deep --security" + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
150
+ }
151
+ else {
152
+ lines.push(" command: npx @kryptosai/mcp-observatory test --target mcp-observatory.target.json --deep --security");
153
+ }
154
+ if (options.sarif !== false) {
155
+ lines.push(" - store_artifacts:", " path: mcp-observatory.sarif");
156
+ }
157
+ lines.push("", "workflows:", " version: 2", " mcp-observatory-workflow:", " jobs:", " - mcp-observatory" + (options.schedule ? ":\n filters:\n branches:\n only: /scheduled-scan/" : ""));
158
+ return lines.join("\n");
159
+ }
160
+ function bitbucketYaml(options) {
161
+ const lines = [
162
+ "image: node:22",
163
+ "",
164
+ "pipelines:",
165
+ ];
166
+ if (options.schedule) {
167
+ lines.push(" custom:");
168
+ lines.push(" mcp-observatory-scheduled:");
169
+ }
170
+ else {
171
+ lines.push(" pull-requests:");
172
+ lines.push(" '**':");
173
+ }
174
+ lines.push(" - step:");
175
+ lines.push(" name: MCP Observatory Safety Check");
176
+ lines.push(" script:");
177
+ if (options.command) {
178
+ lines.push(` - npx @kryptosai/mcp-observatory test ${options.command} --deep --security` + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
179
+ }
180
+ else if (options.all) {
181
+ lines.push(" - npx @kryptosai/mcp-observatory scan --deep --security" + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
182
+ }
183
+ else {
184
+ lines.push(" - npx @kryptosai/mcp-observatory test --target mcp-observatory.target.json --deep --security");
185
+ }
186
+ if (options.sarif !== false) {
187
+ lines.push(" artifacts:", " - mcp-observatory.sarif");
188
+ }
189
+ if (!options.schedule && options.command) {
190
+ lines.push("", " branches:", " main:", " - step:", " name: MCP Observatory Safety Check", " script:", ` - npx @kryptosai/mcp-observatory test ${options.command} --deep --security` + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
191
+ }
192
+ return lines.join("\n");
193
+ }
194
+ function azurePipelinesYaml(options) {
195
+ const lines = [
196
+ "trigger:",
197
+ " - main",
198
+ "",
199
+ ];
200
+ if (!options.schedule) {
201
+ lines.push("pr:", " - main", "");
202
+ }
203
+ else {
204
+ lines.push("schedules:", " - cron: '0 6 * * *'", " displayName: Daily MCP safety scan", " branches:", " include:", " - main", "");
205
+ }
206
+ lines.push("pool:", " vmImage: ubuntu-latest", "", "steps:", " - task: NodeTool@0", " inputs:", " versionSpec: '22.x'", " displayName: 'Install Node.js'", "", " - script: |");
207
+ if (options.command) {
208
+ lines.push(` npx @kryptosai/mcp-observatory test ${options.command} --deep --security` + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
209
+ }
210
+ else if (options.all) {
211
+ lines.push(" npx @kryptosai/mcp-observatory scan --deep --security" + (options.sarif !== false ? " --sarif mcp-observatory.sarif" : ""));
212
+ }
213
+ else {
214
+ lines.push(" npx @kryptosai/mcp-observatory test --target mcp-observatory.target.json --deep --security");
215
+ }
216
+ lines.push(" displayName: 'MCP Observatory Safety Check'");
217
+ return lines.join("\n");
218
+ }
79
219
  function badgeMarkdown() {
80
220
  return [
81
221
  "[![MCP Observatory](https://img.shields.io/badge/MCP%20Observatory-enabled-2563eb)](https://github.com/KryptosAI/mcp-observatory)",
@@ -258,18 +398,21 @@ function doctorFixOptions(options, workflow) {
258
398
  };
259
399
  }
260
400
  export async function doctorSetupCi(options = {}) {
261
- const workflowPath = options.workflow ?? DEFAULT_WORKFLOW_PATH;
401
+ const detectedProvider = options.ciProvider ?? detectCiProvider() ?? "github-actions";
402
+ const defaultPath = CI_FILE_PATHS[detectedProvider] ?? DEFAULT_WORKFLOW_PATH;
403
+ const workflowPath = options.workflow ?? defaultPath;
262
404
  const badgePath = options.badgeFile ?? DEFAULT_BADGE_PATH;
263
405
  const targetConfigPath = optionPath(options.targetConfig, DEFAULT_TARGET_CONFIG_PATH);
264
406
  const prBodyPath = optionPath(options.prBody, DEFAULT_PR_BODY_PATH);
265
407
  const issueBodyPath = optionPath(options.issueBody, DEFAULT_ISSUE_BODY_PATH);
266
408
  const scoreBadgePath = optionPath(options.scoreBadge, DEFAULT_SCORE_BADGE_PATH);
409
+ const ciLabel = providerLabel(detectedProvider);
267
410
  const workflow = await readOptional(workflowPath);
268
411
  const checks = [];
269
412
  if (workflow === undefined) {
270
413
  checks.push({
271
414
  id: "workflow",
272
- label: "GitHub Action",
415
+ label: ciLabel,
273
416
  status: "fail",
274
417
  message: `${workflowPath} is missing.`,
275
418
  fix: setupCommand(options),
@@ -278,7 +421,7 @@ export async function doctorSetupCi(options = {}) {
278
421
  else {
279
422
  checks.push({
280
423
  id: "workflow",
281
- label: "GitHub Action",
424
+ label: ciLabel,
282
425
  status: "pass",
283
426
  message: `${workflowPath} exists.`,
284
427
  });
@@ -356,7 +499,9 @@ export async function initCi(options) {
356
499
  if (options.target && shouldWrite(options.targetConfig, options.all)) {
357
500
  throw new Error("Use either --target or --target-config, not both.");
358
501
  }
359
- const workflowPath = options.workflow ?? DEFAULT_WORKFLOW_PATH;
502
+ const detectedProvider = options.ciProvider ?? detectCiProvider() ?? "github-actions";
503
+ const defaultPath = CI_FILE_PATHS[detectedProvider] ?? DEFAULT_WORKFLOW_PATH;
504
+ const workflowPath = options.workflow ?? defaultPath;
360
505
  const badgePath = options.badgeFile ?? DEFAULT_BADGE_PATH;
361
506
  const workflowStatus = await writeFileOnce(workflowPath, workflowYaml(options), options.force === true);
362
507
  const result = {
@@ -410,7 +555,8 @@ function addInitCiOptions(command) {
410
555
  .option("--doctor", "Inspect the current repository's MCP Observatory CI adoption state.", false)
411
556
  .option("--fix", "With --doctor, repair the adoption kit with deep, security, SARIF, and weekly scheduled checks.", false)
412
557
  .option("--from-last-run", "Generate the adoption kit from the latest successful local run artifact.", false)
413
- .option("--campaign <slug>", "Attach a safe campaign/source slug to telemetry for attribution.");
558
+ .option("--campaign <slug>", "Attach a safe campaign/source slug to telemetry for attribution.")
559
+ .option("--identify <email>", "Opt-in: share your email to help us understand who uses Observatory. Never shared, never spammed.");
414
560
  }
415
561
  function initCiAction(commandName) {
416
562
  return async (options) => {
@@ -427,7 +573,8 @@ function initCiAction(commandName) {
427
573
  }
428
574
  process.stdout.write(`\nNext best action:\n ${result.nextCommand}\n`);
429
575
  if (options.fix) {
430
- const workflow = await readOptional(options.workflow ?? DEFAULT_WORKFLOW_PATH);
576
+ const defaultPath = CI_FILE_PATHS[options.ciProvider ?? detectCiProvider() ?? "github-actions"] ?? DEFAULT_WORKFLOW_PATH;
577
+ const workflow = await readOptional(options.workflow ?? defaultPath);
431
578
  const fixed = await initCi(doctorFixOptions(options, workflow));
432
579
  process.stdout.write("\nApplied repair:\n");
433
580
  process.stdout.write(`${fixed.workflowStatus}: ${fixed.workflowPath}\n`);
@@ -447,7 +594,7 @@ function initCiAction(commandName) {
447
594
  process.exitCode = 1;
448
595
  }
449
596
  recordEvent(buildEvent("command_complete", commandName, "cli", {
450
- ciProvider: "github-actions",
597
+ ciProvider: options.ciProvider ?? detectCiProvider() ?? "github-actions",
451
598
  setupCiDoctor: true,
452
599
  setupCiReady: result.ready,
453
600
  setupCiFailCount: result.checks.filter((check) => check.status === "fail").length,
@@ -503,7 +650,7 @@ function initCiAction(commandName) {
503
650
  }
504
651
  process.stdout.write("Next: commit the workflow, open a PR, and paste the generated PR body if present.\n");
505
652
  recordEvent(buildEvent("command_complete", commandName, "cli", {
506
- ciProvider: "github-actions",
653
+ ciProvider: options.ciProvider ?? detectCiProvider() ?? "github-actions",
507
654
  commitStatusSet: !skipped,
508
655
  campaign: options.campaign,
509
656
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"init-ci.js","sourceRoot":"","sources":["../../../src/commands/init-ci.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-ci.js","sourceRoot":"","sources":["../../../src/commands/init-ci.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { mkdir, writeFile } from "node:fs/promises";
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { resolveAuditTarget, runAudit } from "../audit.js";
4
- import { buildMcpReceipt, receiptFormatFromPath, renderReceipt } from "../receipt.js";
4
+ import { buildMcpReceipt, receiptFormatFromPath, renderReceipt, signReceipt } from "../receipt.js";
5
5
  import { buildEvent, recordEvent } from "../telemetry.js";
6
6
  import { ANSI, c } from "./helpers.js";
7
7
  function extractTrailingReceiptFlags(args, options) {
@@ -74,6 +74,8 @@ export function registerReceiptCommands(program) {
74
74
  .option("--environment-class <class>", "local, ci, public_safety_index, or private_fleet.")
75
75
  .option("--top-findings <count>", "Number of top findings to include.", "5")
76
76
  .option("--no-color", "Disable colored output.")
77
+ .option("--sign-key <path>", "Path to Ed25519 private key file (DER/PEM) to sign the receipt.")
78
+ .option("--signer <identity>", "Identity label for the signer (e.g., email). Required when --sign-key is used.")
77
79
  .action(async (targetArgs, options) => {
78
80
  const extracted = extractTrailingReceiptFlags(targetArgs, options);
79
81
  targetArgs = extracted.targetArgs;
@@ -84,12 +86,20 @@ export function registerReceiptCommands(program) {
84
86
  process.stdout.write(`${c(ANSI.dim, "⟳")} Building receipt for ${c(ANSI.bold, target.targetId)} with profile ${c(ANSI.bold, options.profile)}...\n`);
85
87
  }
86
88
  const report = await runAudit(target, options.profile);
87
- const receipt = await buildMcpReceipt(report, target, {
89
+ let receipt = await buildMcpReceipt(report, target, {
88
90
  commandInvoked: `mcp-observatory receipt ${targetArgs.join(" ")} --profile ${options.profile} --format ${options.format}${options.output ? ` --output ${options.output}` : ""}`,
89
91
  environmentClass: options.environmentClass,
90
92
  outputPath: options.output,
91
93
  topFindingsLimit: Number.parseInt(options.topFindings ?? "5", 10),
92
94
  });
95
+ if (options.signKey) {
96
+ if (!options.signer) {
97
+ process.stderr.write("Error: --signer is required when --sign-key is used.\n");
98
+ process.exit(1);
99
+ }
100
+ const keyContent = await readFile(options.signKey);
101
+ receipt = signReceipt(receipt, keyContent, options.signer);
102
+ }
93
103
  const format = receiptFormatFromPath(options.output, options.format);
94
104
  if (format !== "json" && format !== "markdown") {
95
105
  throw new Error("Unsupported receipt format. Use json or markdown.");
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/commands/receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/commands/receipt.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,16 @@
1
1
  import type { Command } from "commander";
2
+ import type { RunArtifact } from "../types.js";
3
+ export type ScanServerCategory = "passed" | "failed" | "warning";
4
+ /**
5
+ * Categorizes a single server's scan result by its worst outcome:
6
+ * any failing check → "failed"; no failures but a partial/flaky check →
7
+ * "warning"; everything passed → "passed".
8
+ */
9
+ export declare function categorizeServerResult(artifact: RunArtifact): ScanServerCategory;
10
+ /** "3 servers scanned: 1 passed, 1 failed, 1 warnings" */
11
+ export declare function formatScanSummaryLine(counts: {
12
+ passed: number;
13
+ failed: number;
14
+ warning: number;
15
+ }): string;
2
16
  export declare function registerScanCommands(program: Command, bin: string): void;
@@ -2,17 +2,40 @@ import { access } from "node:fs/promises";
2
2
  import { discoverSkillPaths, scanForTargets } from "../discovery.js";
3
3
  import { runTarget, } from "../index.js";
4
4
  import { appendHistory, buildHistoryEntry } from "../history.js";
5
- import { buildEvent, normalizeCampaign, recordEvent } from "../telemetry.js";
5
+ import { buildEvent, generateSessionId, normalizeCampaign, recordEvent, recordSessionEnd, recordSessionStart } from "../telemetry.js";
6
6
  import { TOOL_VERSION } from "../version.js";
7
7
  import { maybePrintCloudCta } from "../commercial.js";
8
8
  import { renderActionReceipt } from "../action-receipt.js";
9
- import { ANSI, LOGO, c, setupCiHint, useColor } from "./helpers.js";
9
+ import { ANSI, LOGO, c, isQuiet, setupCiHint, suggestFix, useColor } from "./helpers.js";
10
+ import { firstNextStep } from "../utils/failure-diagnosis.js";
10
11
  import { maybeConvertPassingCheckToCi } from "./setup-ci-conversion.js";
12
+ /**
13
+ * Categorizes a single server's scan result by its worst outcome:
14
+ * any failing check → "failed"; no failures but a partial/flaky check →
15
+ * "warning"; everything passed → "passed".
16
+ */
17
+ export function categorizeServerResult(artifact) {
18
+ if (artifact.gate === "fail")
19
+ return "failed";
20
+ if (artifact.summary.partial > 0 || artifact.summary.flaky > 0)
21
+ return "warning";
22
+ return "passed";
23
+ }
24
+ /** "3 servers scanned: 1 passed, 1 failed, 1 warnings" */
25
+ export function formatScanSummaryLine(counts) {
26
+ const total = counts.passed + counts.failed + counts.warning;
27
+ return `${total} server${total === 1 ? "" : "s"} scanned: ${counts.passed} passed, ${counts.failed} failed, ${counts.warning} warnings`;
28
+ }
11
29
  async function runScan(bin, configPath, invokeTools, securityCheck, format, attackSim = true, conversionFlags = {}, skillScanOption) {
30
+ const sessionId = generateSessionId();
31
+ recordSessionStart(sessionId);
12
32
  if (conversionFlags.campaign)
13
33
  conversionFlags.campaign = normalizeCampaign(conversionFlags.campaign);
14
34
  const t0 = Date.now();
15
- process.stdout.write(useColor() ? c(ANSI.cyan, LOGO) + ` ${c(ANSI.dim, `v${TOOL_VERSION}`)}\n\n` : LOGO + ` v${TOOL_VERSION}\n\n`);
35
+ recordSessionStart(generateSessionId());
36
+ if (!isQuiet()) {
37
+ process.stdout.write(useColor() ? c(ANSI.cyan, LOGO) + ` ${c(ANSI.dim, `v${TOOL_VERSION}`)}\n\n` : LOGO + ` v${TOOL_VERSION}\n\n`);
38
+ }
16
39
  if (configPath) {
17
40
  try {
18
41
  await access(configPath);
@@ -20,6 +43,7 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
20
43
  catch {
21
44
  process.stdout.write(c(ANSI.red, ` ✗ Config file not found: ${configPath}\n\n`));
22
45
  process.exitCode = 1;
46
+ recordSessionEnd(sessionId);
23
47
  return;
24
48
  }
25
49
  }
@@ -29,6 +53,7 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
29
53
  process.stdout.write(c(ANSI.dim, " Looked in ~/.claude.json, Claude Desktop, Cursor, Windsurf, VS Code, OpenCode, Codex, Gemini CLI, Kiro, Antigravity, Amazon Q, and project-level .mcp.json\n\n"));
30
54
  process.stdout.write(" Test a specific server:\n");
31
55
  process.stdout.write(` ${c(ANSI.dim, "$")} ${c(ANSI.cyan, `${bin} test npx -y @modelcontextprotocol/server-filesystem .`)}\n\n`);
56
+ recordSessionEnd(sessionId);
32
57
  return;
33
58
  }
34
59
  process.stdout.write(c(ANSI.bold, ` Found ${targets.length} MCP server${targets.length === 1 ? "" : "s"}:\n`));
@@ -44,6 +69,7 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
44
69
  let totalTools = 0;
45
70
  let totalPrompts = 0;
46
71
  let totalResources = 0;
72
+ const categoryCounts = { passed: 0, failed: 0, warning: 0 };
47
73
  for (const t of targets) {
48
74
  process.stdout.write(` ${c(ANSI.dim, "⟳")} Checking ${c(ANSI.bold, t.config.targetId)}...`);
49
75
  try {
@@ -73,6 +99,10 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
73
99
  process.stdout.write(`${c(ANSI.dim, `${toolCount} tools, ${promptCount} prompts, ${resourceCount} resources`)}\n`);
74
100
  if (artifact.fatalError) {
75
101
  process.stdout.write(` ${c(ANSI.red, "→")} ${artifact.fatalError.split("\n")[0]}\n`);
102
+ const fixHint = firstNextStep(artifact.fatalError) ?? suggestFix(artifact.fatalError);
103
+ if (fixHint) {
104
+ process.stdout.write(` ${c(ANSI.dim, `→ ${fixHint}`)}\n`);
105
+ }
76
106
  }
77
107
  else if (artifact.gate === "fail" && diagnostics.length > 0) {
78
108
  process.stdout.write(` ${c(ANSI.dim, "→")} ${diagnostics[0]}\n`);
@@ -89,6 +119,7 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
89
119
  passCount++;
90
120
  else
91
121
  failCount++;
122
+ categoryCounts[categorizeServerResult(artifact)]++;
92
123
  }
93
124
  catch (error) {
94
125
  const msg = error instanceof Error ? error.message : String(error);
@@ -105,6 +136,10 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
105
136
  }
106
137
  process.stdout.write(`\r ${c(ANSI.red, "✗")} ${c(ANSI.bold, t.config.targetId)}\n`);
107
138
  process.stdout.write(` ${c(ANSI.red, friendlyMsg)}\n`);
139
+ const fixHint = suggestFix(msg);
140
+ if (fixHint) {
141
+ process.stdout.write(` ${c(ANSI.dim, `→ ${fixHint}`)}\n`);
142
+ }
108
143
  // Docker-specific hint
109
144
  const serverCmd = t.config.adapter === "local-process" ? t.config.command : "";
110
145
  if (serverCmd === "docker" || serverCmd.startsWith("docker ")) {
@@ -112,6 +147,7 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
112
147
  }
113
148
  results.push({ targetId: t.config.targetId, gate: "fail", toolCount: 0, promptCount: 0, resourceCount: 0, error: friendlyMsg, diagnostics: [] });
114
149
  failCount++;
150
+ categoryCounts.failed++;
115
151
  }
116
152
  }
117
153
  // ── Summary ──────────────────────────────────────────────────────────
@@ -129,6 +165,12 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
129
165
  process.stdout.write("\n");
130
166
  }
131
167
  }
168
+ const scanTotal = categoryCounts.passed + categoryCounts.failed + categoryCounts.warning;
169
+ process.stdout.write(c(ANSI.dim, " ─────────────────────────────\n"));
170
+ process.stdout.write(` ${scanTotal} server${scanTotal === 1 ? "" : "s"} scanned: ` +
171
+ `${c(ANSI.green, `${categoryCounts.passed} passed`)}, ` +
172
+ `${c(ANSI.red, `${categoryCounts.failed} failed`)}, ` +
173
+ `${c(ANSI.yellow, `${categoryCounts.warning} warnings`)}\n`);
132
174
  // Show diagnostics for failures or notable partials
133
175
  const issues = results.filter((r) => r.diagnostics.length > 0 && !r.error);
134
176
  if (issues.length > 0) {
@@ -207,6 +249,9 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
207
249
  const attack = artifact.checks.find((check) => check.id === "attack-sim");
208
250
  return sum + (attack?.evidence[0]?.itemCount ?? 0);
209
251
  }, 0),
252
+ targetServer: targets.length === 1 ? targets[0].config.targetId : `${targets.length} servers`,
253
+ scanCount: targets.length,
254
+ stageOverride: "discovery",
210
255
  }));
211
256
  if (failCount > 0) {
212
257
  process.exitCode = 1;
@@ -228,6 +273,7 @@ async function runScan(bin, configPath, invokeTools, securityCheck, format, atta
228
273
  }
229
274
  }
230
275
  }
276
+ recordSessionEnd(sessionId);
231
277
  }
232
278
  // ── Register ────────────────────────────────────────────────────────────────
233
279
  export function registerScanCommands(program, bin) {
@@ -245,6 +291,7 @@ export function registerScanCommands(program, bin) {
245
291
  .option("--no-ci-sarif", "Generate post-scan CI without GitHub Code Scanning SARIF upload.")
246
292
  .option("--force", "Overwrite existing generated CI adoption files.", false)
247
293
  .option("--no-color", "Disable colored output.")
294
+ .option("--quiet", "Suppress logo and informational output.", false)
248
295
  .option("--skill-scan [path]", "Also scan skill directories for security risks. Auto-discovers from agent skill paths when no path given.")
249
296
  .option("--enforce", "After scan, show the enforce command for the first target.");
250
297
  // `scan` with no subcommand — basic scan
@@ -269,6 +316,7 @@ export function registerScanCommands(program, bin) {
269
316
  .option("--no-setup-ci", "Suppress the post-success CI conversion prompt and hint.")
270
317
  .option("--no-ci-sarif", "Generate post-scan CI without GitHub Code Scanning SARIF upload.")
271
318
  .option("--force", "Overwrite existing generated CI adoption files.", false)
319
+ .option("--quiet", "Suppress logo and informational output.", false)
272
320
  .action(async (options) => {
273
321
  const parentConfig = scanCmd.opts().config;
274
322
  const parentSecurity = scanCmd.opts().security;