@kryptosai/mcp-observatory 0.28.0 → 1.28.2

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 (108) hide show
  1. package/COMMERCIAL.md +26 -5
  2. package/README.md +65 -12
  3. package/dist/src/action-receipt.d.ts +20 -0
  4. package/dist/src/action-receipt.js +85 -0
  5. package/dist/src/action-receipt.js.map +1 -0
  6. package/dist/src/audit.d.ts +64 -0
  7. package/dist/src/audit.js +359 -0
  8. package/dist/src/audit.js.map +1 -0
  9. package/dist/src/checks/attack-sim.d.ts +2 -0
  10. package/dist/src/checks/attack-sim.js +12 -0
  11. package/dist/src/checks/attack-sim.js.map +1 -1
  12. package/dist/src/cli.js +8 -1
  13. package/dist/src/cli.js.map +1 -1
  14. package/dist/src/commands/attack-sim.js +54 -2
  15. package/dist/src/commands/attack-sim.js.map +1 -1
  16. package/dist/src/commands/audit.d.ts +2 -0
  17. package/dist/src/commands/audit.js +132 -0
  18. package/dist/src/commands/audit.js.map +1 -0
  19. package/dist/src/commands/init-ci.d.ts +2 -0
  20. package/dist/src/commands/init-ci.js +71 -11
  21. package/dist/src/commands/init-ci.js.map +1 -1
  22. package/dist/src/commands/legacy.js +2 -0
  23. package/dist/src/commands/legacy.js.map +1 -1
  24. package/dist/src/commands/receipt.d.ts +2 -0
  25. package/dist/src/commands/receipt.js +113 -0
  26. package/dist/src/commands/receipt.js.map +1 -0
  27. package/dist/src/commands/scan.js +23 -5
  28. package/dist/src/commands/scan.js.map +1 -1
  29. package/dist/src/commands/score.js +63 -0
  30. package/dist/src/commands/score.js.map +1 -1
  31. package/dist/src/commands/setup-ci-conversion.d.ts +2 -1
  32. package/dist/src/commands/setup-ci-conversion.js +22 -8
  33. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  34. package/dist/src/commands/test.js +18 -1
  35. package/dist/src/commands/test.js.map +1 -1
  36. package/dist/src/findings.d.ts +1 -0
  37. package/dist/src/findings.js +1 -0
  38. package/dist/src/findings.js.map +1 -1
  39. package/dist/src/index.d.ts +2 -0
  40. package/dist/src/index.js +2 -0
  41. package/dist/src/index.js.map +1 -1
  42. package/dist/src/receipt.d.ts +100 -0
  43. package/dist/src/receipt.js +375 -0
  44. package/dist/src/receipt.js.map +1 -0
  45. package/dist/src/reporters/attack-sim.js +6 -1
  46. package/dist/src/reporters/attack-sim.js.map +1 -1
  47. package/dist/src/reporters/sarif.js +11 -1
  48. package/dist/src/reporters/sarif.js.map +1 -1
  49. package/dist/src/security-profiles.d.ts +13 -0
  50. package/dist/src/security-profiles.js +59 -0
  51. package/dist/src/security-profiles.js.map +1 -0
  52. package/dist/src/telemetry.d.ts +7 -0
  53. package/dist/src/telemetry.js.map +1 -1
  54. package/docs/10x-agentic-growth-sprint.md +47 -0
  55. package/docs/agent-ecosystem-promotion-plan.md +1 -1
  56. package/docs/agentic-contributor-outreach.md +52 -0
  57. package/docs/code-scanning-demo.md +2 -2
  58. package/docs/commercial-boundary.md +83 -0
  59. package/docs/contributor-proof-cards/README.md +1 -1
  60. package/docs/examples/nsa-mcp-audit-report.md +372 -0
  61. package/docs/examples/nsa-mcp-results.sarif +930 -0
  62. package/docs/examples/nsa-mcp-score.json +13 -0
  63. package/docs/feishu-lark-mcp.md +1 -1
  64. package/docs/github-code-scanning-for-mcp.md +1 -1
  65. package/docs/government-enterprise-pilot.md +93 -0
  66. package/docs/mcp-receipts.md +109 -0
  67. package/docs/mcp-server-safety-index.md +26 -25
  68. package/docs/nsa-mcp-audit-ci.md +88 -0
  69. package/docs/procurement-one-pager.md +74 -0
  70. package/docs/proof.md +2 -2
  71. package/docs/public-guidance-crosswalk.md +48 -0
  72. package/docs/safety-index/artifacts/antv-chart-server.json +41 -23
  73. package/docs/safety-index/artifacts/antv-chart-server.md +23 -10
  74. package/docs/safety-index/artifacts/browsermcp-server.json +38 -20
  75. package/docs/safety-index/artifacts/browsermcp-server.md +23 -10
  76. package/docs/safety-index/artifacts/context7-server.json +85 -28
  77. package/docs/safety-index/artifacts/context7-server.md +35 -22
  78. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +460 -36
  79. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +31 -18
  80. package/docs/safety-index/artifacts/everything-server.json +38 -20
  81. package/docs/safety-index/artifacts/everything-server.md +25 -12
  82. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +155 -20
  83. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +26 -13
  84. package/docs/safety-index/artifacts/filesystem-server.json +116 -22
  85. package/docs/safety-index/artifacts/filesystem-server.md +27 -14
  86. package/docs/safety-index/artifacts/kubernetes-server.json +252 -27
  87. package/docs/safety-index/artifacts/kubernetes-server.md +44 -18
  88. package/docs/safety-index/artifacts/memory-server.json +39 -21
  89. package/docs/safety-index/artifacts/memory-server.md +24 -11
  90. package/docs/safety-index/artifacts/opentofu-server.json +38 -20
  91. package/docs/safety-index/artifacts/opentofu-server.md +24 -11
  92. package/docs/safety-index/artifacts/playwright-mcp-server.json +140 -20
  93. package/docs/safety-index/artifacts/playwright-mcp-server.md +26 -13
  94. package/docs/safety-index/artifacts/promptopia-server.json +41 -23
  95. package/docs/safety-index/artifacts/promptopia-server.md +26 -13
  96. package/docs/safety-index/artifacts/puppeteer-server.json +77 -34
  97. package/docs/safety-index/artifacts/puppeteer-server.md +45 -32
  98. package/docs/safety-index/artifacts/ref-tools-server.json +38 -20
  99. package/docs/safety-index/artifacts/ref-tools-server.md +22 -9
  100. package/docs/safety-index/artifacts/sequential-thinking-server.json +39 -21
  101. package/docs/safety-index/artifacts/sequential-thinking-server.md +23 -10
  102. package/docs/security-due-diligence.md +87 -0
  103. package/docs/setup-ci-doctor.md +11 -1
  104. package/docs/tool-call-receipts.md +1 -2
  105. package/examples/insecure-mcp-server/mcp-observatory.target.json +13 -0
  106. package/examples/insecure-mcp-server/server.mjs +62 -0
  107. package/package.json +12 -1
  108. package/scripts/postinstall.mjs +22 -7
@@ -2,28 +2,36 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "fail",
5
- "runId": "run_2026-07-06T053258917Z_2e4f693a",
6
- "createdAt": "2026-07-06T05:32:58.918Z",
5
+ "runId": "run_2026-07-06T194958878Z_b41bb221",
6
+ "createdAt": "2026-07-06T19:49:58.878Z",
7
7
  "toolVersion": "0.28.0",
8
8
  "target": {
9
- "targetId": "mcp-server-kubernetes",
9
+ "targetId": "kubernetes-server",
10
10
  "adapter": "local-process",
11
11
  "command": "npx",
12
12
  "args": [
13
13
  "-y",
14
14
  "mcp-server-kubernetes"
15
15
  ],
16
+ "cwd": ".",
17
+ "metadata": {
18
+ "package": "mcp-server-kubernetes",
19
+ "purpose": "mcp-safety-index",
20
+ "riskClass": "Kubernetes control plane",
21
+ "failureClass": "Command and cluster mutation boundary",
22
+ "whyItMatters": "Kubernetes MCP servers can expose cluster mutation, pod exec, manifest apply/delete, and broad kubectl command surfaces to agents."
23
+ },
16
24
  "serverName": "kubernetes",
17
- "serverVersion": "3.9.2"
25
+ "serverVersion": "3.9.3"
18
26
  },
19
27
  "environment": {
20
28
  "platform": "darwin 25.5.0",
21
29
  "nodeVersion": "v22.22.1"
22
30
  },
23
31
  "summary": {
24
- "total": 6,
32
+ "total": 8,
25
33
  "pass": 4,
26
- "fail": 1,
34
+ "fail": 3,
27
35
  "partial": 1,
28
36
  "unsupported": 0,
29
37
  "flaky": 0,
@@ -35,7 +43,7 @@
35
43
  "id": "tools",
36
44
  "capability": "tools",
37
45
  "status": "pass",
38
- "durationMs": 2.264750000000049,
46
+ "durationMs": 1.2567500000004657,
39
47
  "message": "Advertised capability responded with the minimal expected shape (23 items).",
40
48
  "evidence": [
41
49
  {
@@ -70,9 +78,9 @@
70
78
  "ping"
71
79
  ],
72
80
  "diagnostics": [
73
- "Starting Kubernetes MCP server v3.9.2, handling commands...",
81
+ "Starting Kubernetes MCP server v3.9.3, handling commands...",
74
82
  "Telemetry: Disabled",
75
- "(node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
83
+ "(node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
76
84
  "(Use `node --trace-deprecation ...` to show where the warning was created)"
77
85
  ],
78
86
  "schemas": {
@@ -995,6 +1003,11 @@
995
1003
  "description": "Kubernetes namespace",
996
1004
  "default": "default"
997
1005
  },
1006
+ "allNamespaces": {
1007
+ "type": "boolean",
1008
+ "description": "If true, run the command across all namespaces",
1009
+ "default": false
1010
+ },
998
1011
  "outputFormat": {
999
1012
  "type": "string",
1000
1013
  "description": "Output format (e.g. json, yaml, wide)",
@@ -1041,7 +1054,7 @@
1041
1054
  "id": "prompts",
1042
1055
  "capability": "prompts",
1043
1056
  "status": "pass",
1044
- "durationMs": 0.6192499999999654,
1057
+ "durationMs": 0.29662500000085856,
1045
1058
  "message": "Advertised capability responded with the minimal expected shape (1 item).",
1046
1059
  "evidence": [
1047
1060
  {
@@ -1054,9 +1067,9 @@
1054
1067
  "k8s-diagnose"
1055
1068
  ],
1056
1069
  "diagnostics": [
1057
- "Starting Kubernetes MCP server v3.9.2, handling commands...",
1070
+ "Starting Kubernetes MCP server v3.9.3, handling commands...",
1058
1071
  "Telemetry: Disabled",
1059
- "(node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
1072
+ "(node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
1060
1073
  "(Use `node --trace-deprecation ...` to show where the warning was created)"
1061
1074
  ]
1062
1075
  }
@@ -1066,7 +1079,7 @@
1066
1079
  "id": "resources",
1067
1080
  "capability": "resources",
1068
1081
  "status": "pass",
1069
- "durationMs": 1.0306660000001102,
1082
+ "durationMs": 0.38045899999997346,
1070
1083
  "message": "Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported.",
1071
1084
  "evidence": [
1072
1085
  {
@@ -1083,9 +1096,9 @@
1083
1096
  "k8s://nodes"
1084
1097
  ],
1085
1098
  "diagnostics": [
1086
- "Starting Kubernetes MCP server v3.9.2, handling commands...",
1099
+ "Starting Kubernetes MCP server v3.9.3, handling commands...",
1087
1100
  "Telemetry: Disabled",
1088
- "(node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
1101
+ "(node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
1089
1102
  "(Use `node --trace-deprecation ...` to show where the warning was created)"
1090
1103
  ]
1091
1104
  },
@@ -1096,9 +1109,9 @@
1096
1109
  "minimalShapePresent": false,
1097
1110
  "diagnostics": [
1098
1111
  "MCP error -32601: Method not found",
1099
- "Starting Kubernetes MCP server v3.9.2, handling commands...",
1112
+ "Starting Kubernetes MCP server v3.9.3, handling commands...",
1100
1113
  "Telemetry: Disabled",
1101
- "(node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
1114
+ "(node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
1102
1115
  "(Use `node --trace-deprecation ...` to show where the warning was created)"
1103
1116
  ]
1104
1117
  }
@@ -1108,7 +1121,7 @@
1108
1121
  "id": "security-lite",
1109
1122
  "capability": "security-lite",
1110
1123
  "status": "fail",
1111
- "durationMs": 0.597582999999986,
1124
+ "durationMs": 0.06358300000101735,
1112
1125
  "message": "Found 8 security finding(s): 3 high, 3 medium, 2 low.",
1113
1126
  "evidence": [
1114
1127
  {
@@ -1193,7 +1206,7 @@
1193
1206
  "id": "conformance",
1194
1207
  "capability": "conformance",
1195
1208
  "status": "pass",
1196
- "durationMs": 7.210374999999885,
1209
+ "durationMs": 1.6942920000001322,
1197
1210
  "message": "All 7 conformance checks passed.",
1198
1211
  "evidence": [
1199
1212
  {
@@ -1219,7 +1232,7 @@
1219
1232
  "id": "schema-quality",
1220
1233
  "capability": "schema-quality",
1221
1234
  "status": "partial",
1222
- "durationMs": 0.9046250000001237,
1235
+ "durationMs": 0.48933300000135205,
1223
1236
  "message": "Found 7 quality finding(s) across 29 item(s): 0 warnings, 7 info.",
1224
1237
  "evidence": [
1225
1238
  {
@@ -1288,6 +1301,216 @@
1288
1301
  ]
1289
1302
  }
1290
1303
  ]
1304
+ },
1305
+ {
1306
+ "id": "security",
1307
+ "capability": "security",
1308
+ "status": "fail",
1309
+ "durationMs": 0.2782920000008744,
1310
+ "message": "Found 8 security finding(s): 3 high, 3 medium, 2 low.",
1311
+ "evidence": [
1312
+ {
1313
+ "endpoint": "security/scan",
1314
+ "advertised": true,
1315
+ "responded": true,
1316
+ "minimalShapePresent": true,
1317
+ "itemCount": 8,
1318
+ "identifiers": [
1319
+ "cleanup",
1320
+ "kubectl_apply",
1321
+ "kubectl_delete",
1322
+ "kubectl_create",
1323
+ "kubectl_reconnect",
1324
+ "exec_in_pod",
1325
+ "kubectl_generic"
1326
+ ],
1327
+ "diagnostics": [
1328
+ "[low] Tool \"cleanup\" has an empty schema but is marked as destructive.",
1329
+ "[medium] Tool \"kubectl_apply\" accepts filesystem paths and has destructive capabilities.",
1330
+ "[medium] Tool \"kubectl_delete\" accepts filesystem paths and has destructive capabilities.",
1331
+ "[high] Tool \"kubectl_create\" has parameter \"command\" which may allow arbitrary command execution.",
1332
+ "[medium] Tool \"kubectl_create\" accepts filesystem paths and has destructive capabilities.",
1333
+ "[low] Tool \"kubectl_reconnect\" has an empty schema but is marked as destructive.",
1334
+ "[high] Tool \"exec_in_pod\" has parameter \"command\" which may allow arbitrary command execution.",
1335
+ "[high] Tool \"kubectl_generic\" has parameter \"command\" which may allow arbitrary command execution."
1336
+ ],
1337
+ "findings": [
1338
+ {
1339
+ "ruleId": "permissive-schema",
1340
+ "severity": "low",
1341
+ "toolName": "cleanup",
1342
+ "message": "Tool \"cleanup\" has an empty schema but is marked as destructive."
1343
+ },
1344
+ {
1345
+ "ruleId": "broad-filesystem",
1346
+ "severity": "medium",
1347
+ "toolName": "kubectl_apply",
1348
+ "message": "Tool \"kubectl_apply\" accepts filesystem paths and has destructive capabilities."
1349
+ },
1350
+ {
1351
+ "ruleId": "broad-filesystem",
1352
+ "severity": "medium",
1353
+ "toolName": "kubectl_delete",
1354
+ "message": "Tool \"kubectl_delete\" accepts filesystem paths and has destructive capabilities."
1355
+ },
1356
+ {
1357
+ "ruleId": "shell-injection",
1358
+ "severity": "high",
1359
+ "toolName": "kubectl_create",
1360
+ "message": "Tool \"kubectl_create\" has parameter \"command\" which may allow arbitrary command execution."
1361
+ },
1362
+ {
1363
+ "ruleId": "broad-filesystem",
1364
+ "severity": "medium",
1365
+ "toolName": "kubectl_create",
1366
+ "message": "Tool \"kubectl_create\" accepts filesystem paths and has destructive capabilities."
1367
+ },
1368
+ {
1369
+ "ruleId": "permissive-schema",
1370
+ "severity": "low",
1371
+ "toolName": "kubectl_reconnect",
1372
+ "message": "Tool \"kubectl_reconnect\" has an empty schema but is marked as destructive."
1373
+ },
1374
+ {
1375
+ "ruleId": "shell-injection",
1376
+ "severity": "high",
1377
+ "toolName": "exec_in_pod",
1378
+ "message": "Tool \"exec_in_pod\" has parameter \"command\" which may allow arbitrary command execution."
1379
+ },
1380
+ {
1381
+ "ruleId": "shell-injection",
1382
+ "severity": "high",
1383
+ "toolName": "kubectl_generic",
1384
+ "message": "Tool \"kubectl_generic\" has parameter \"command\" which may allow arbitrary command execution."
1385
+ }
1386
+ ]
1387
+ }
1388
+ ]
1389
+ },
1390
+ {
1391
+ "id": "attack-sim",
1392
+ "capability": "attack-sim",
1393
+ "status": "fail",
1394
+ "durationMs": 0.750292000000627,
1395
+ "message": "Safe attack simulation found 5 finding(s): 3 high, 2 medium, 0 low.",
1396
+ "evidence": [
1397
+ {
1398
+ "endpoint": "attack-sim/safe",
1399
+ "advertised": true,
1400
+ "responded": true,
1401
+ "minimalShapePresent": true,
1402
+ "itemCount": 5,
1403
+ "identifiers": [
1404
+ "kubectl_apply",
1405
+ "kubectl_delete",
1406
+ "kubectl_create",
1407
+ "exec_in_pod",
1408
+ "kubectl_generic"
1409
+ ],
1410
+ "diagnostics": [
1411
+ "[medium] Tool \"kubectl_apply\" combines broad parameters (filename) with destructive or non-read-only behavior.",
1412
+ "[medium] Tool \"kubectl_delete\" combines broad parameters (filename) with destructive or non-read-only behavior.",
1413
+ "[high] Tool \"kubectl_create\" combines broad parameters (filename, command) with destructive or non-read-only behavior.",
1414
+ "[high] Tool \"exec_in_pod\" combines broad parameters (command) with destructive or non-read-only behavior.",
1415
+ "[high] Tool \"kubectl_generic\" combines broad parameters (command) with destructive or non-read-only behavior."
1416
+ ],
1417
+ "findings": [
1418
+ {
1419
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1420
+ "attackClass": "permission-boundary",
1421
+ "severity": "medium",
1422
+ "itemType": "tool",
1423
+ "itemName": "kubectl_apply",
1424
+ "message": "Tool \"kubectl_apply\" combines broad parameters (filename) with destructive or non-read-only behavior.",
1425
+ "evidence": {
1426
+ "broadParams": [
1427
+ "filename"
1428
+ ],
1429
+ "annotations": {
1430
+ "destructiveHint": true
1431
+ },
1432
+ "description": "Apply a Kubernetes YAML manifest from a string or file"
1433
+ },
1434
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1435
+ "recommendedAction": "gate"
1436
+ },
1437
+ {
1438
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1439
+ "attackClass": "permission-boundary",
1440
+ "severity": "medium",
1441
+ "itemType": "tool",
1442
+ "itemName": "kubectl_delete",
1443
+ "message": "Tool \"kubectl_delete\" combines broad parameters (filename) with destructive or non-read-only behavior.",
1444
+ "evidence": {
1445
+ "broadParams": [
1446
+ "filename"
1447
+ ],
1448
+ "annotations": {
1449
+ "destructiveHint": true
1450
+ },
1451
+ "description": "Delete Kubernetes resources by resource type, name, labels, or from a manifest file"
1452
+ },
1453
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1454
+ "recommendedAction": "gate"
1455
+ },
1456
+ {
1457
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1458
+ "attackClass": "permission-boundary",
1459
+ "severity": "high",
1460
+ "itemType": "tool",
1461
+ "itemName": "kubectl_create",
1462
+ "message": "Tool \"kubectl_create\" combines broad parameters (filename, command) with destructive or non-read-only behavior.",
1463
+ "evidence": {
1464
+ "broadParams": [
1465
+ "filename",
1466
+ "command"
1467
+ ],
1468
+ "description": "Create Kubernetes resources using various methods (from file or using subcommands)"
1469
+ },
1470
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1471
+ "recommendedAction": "quarantine"
1472
+ },
1473
+ {
1474
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1475
+ "attackClass": "permission-boundary",
1476
+ "severity": "high",
1477
+ "itemType": "tool",
1478
+ "itemName": "exec_in_pod",
1479
+ "message": "Tool \"exec_in_pod\" combines broad parameters (command) with destructive or non-read-only behavior.",
1480
+ "evidence": {
1481
+ "broadParams": [
1482
+ "command"
1483
+ ],
1484
+ "annotations": {
1485
+ "destructiveHint": true
1486
+ },
1487
+ "description": "Execute a command in a Kubernetes pod or container and return the output. Command must be an array of strings where the first element is the executable and remaining elements are arguments. This executes directly without shell interpretation for security."
1488
+ },
1489
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1490
+ "recommendedAction": "quarantine"
1491
+ },
1492
+ {
1493
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1494
+ "attackClass": "permission-boundary",
1495
+ "severity": "high",
1496
+ "itemType": "tool",
1497
+ "itemName": "kubectl_generic",
1498
+ "message": "Tool \"kubectl_generic\" combines broad parameters (command) with destructive or non-read-only behavior.",
1499
+ "evidence": {
1500
+ "broadParams": [
1501
+ "command"
1502
+ ],
1503
+ "annotations": {
1504
+ "destructiveHint": true
1505
+ },
1506
+ "description": "Execute any kubectl command with the provided arguments and flags"
1507
+ },
1508
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1509
+ "recommendedAction": "quarantine"
1510
+ }
1511
+ ]
1512
+ }
1513
+ ]
1291
1514
  }
1292
1515
  ],
1293
1516
  "healthScore": {
@@ -1315,7 +1538,9 @@
1315
1538
  "weight": 0.2,
1316
1539
  "score": 0,
1317
1540
  "details": [
1318
- "security-lite: fail (0/100)"
1541
+ "security-lite: fail (0/100)",
1542
+ "security: fail (0/100)",
1543
+ "attack-sim: fail (0/100)"
1319
1544
  ]
1320
1545
  },
1321
1546
  {
@@ -1333,16 +1558,16 @@
1333
1558
  "weight": 0.1,
1334
1559
  "score": 100,
1335
1560
  "details": [
1336
- "Connect: 975ms",
1337
- "p95 latency: 2ms (3 operations)"
1561
+ "Connect: 1296ms",
1562
+ "p95 latency: 1ms (3 operations)"
1338
1563
  ]
1339
1564
  }
1340
1565
  ]
1341
1566
  },
1342
1567
  "performanceMetrics": {
1343
- "connectMs": 975.0412919999999,
1344
- "toolsListMs": 2.264750000000049,
1345
- "promptsListMs": 0.6192499999999654,
1346
- "resourcesListMs": 1.0306660000001102
1568
+ "connectMs": 1295.9490000000005,
1569
+ "toolsListMs": 1.2567500000004657,
1570
+ "promptsListMs": 0.29662500000085856,
1571
+ "resourcesListMs": 0.38045899999997346
1347
1572
  }
1348
1573
  }
@@ -1,13 +1,13 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T05:32:58.918Z
3
+ Generated at 2026-07-06T19:49:58.878Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
7
- - Target: `mcp-server-kubernetes`
7
+ - Target: `kubernetes-server`
8
8
  - Adapter: `local-process`
9
9
  - Command: `npx -y mcp-server-kubernetes`
10
- - Server: `kubernetes 3.9.2`
10
+ - Server: `kubernetes 3.9.3`
11
11
  - Platform: `darwin 25.5.0`
12
12
  - Node: `v22.22.1`
13
13
 
@@ -25,18 +25,18 @@ Generated at 2026-07-06T05:32:58.918Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | fail | 6 | 4 | 1 | 1 | 0 | 0 | 0 |
28
+ | fail | 8 | 4 | 3 | 1 | 0 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
32
32
  - Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
33
- - Top risks: schema-quality: Found 7 quality finding(s) across 29 item(s): 0 warnings, 7 info.; security-lite: Found 8 security finding(s): 3 high, 3 medium, 2 low.
33
+ - Top risks: schema-quality: Found 7 quality finding(s) across 29 item(s): 0 warnings, 7 info.; attack-sim: Safe attack simulation found 5 finding(s): 3 high, 2 medium, 0 low.; security: Found 8 security finding(s): 3 high, 3 medium, 2 low.
34
34
  - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
- - Failing checks: security-lite
35
+ - Failing checks: security-lite, security, attack-sim
36
36
  - Partial or flaky checks: schema-quality
37
37
  - Skipped checks: none
38
38
  - Unsupported checks: none
39
- - Suggested next step: Start with the failing checks: security-lite.
39
+ - Suggested next step: Start with the failing checks: security-lite, security, attack-sim.
40
40
  - CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
41
41
 
42
42
  ## Regressions and Recoveries
@@ -47,12 +47,14 @@ _Use the `diff` command against another run artifact to classify regressions and
47
47
 
48
48
  | Focus | Check | Status | Duration (ms) | Message |
49
49
  | --- | --- | --- | --- | --- |
50
- | healthy | conformance | pass | 7.21 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 0.62 | Advertised capability responded with the minimal expected shape (1 item). |
52
- | healthy | resources | pass | 1.03 | Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported. |
53
- | healthy | tools | pass | 2.26 | Advertised capability responded with the minimal expected shape (23 items). |
54
- | review | schema-quality | partial | 0.90 | Found 7 quality finding(s) across 29 item(s): 0 warnings, 7 info. |
55
- | act now | security-lite | fail | 0.60 | Found 8 security finding(s): 3 high, 3 medium, 2 low. |
50
+ | healthy | conformance | pass | 1.69 | All 7 conformance checks passed. |
51
+ | healthy | prompts | pass | 0.30 | Advertised capability responded with the minimal expected shape (1 item). |
52
+ | healthy | resources | pass | 0.38 | Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported. |
53
+ | healthy | tools | pass | 1.26 | Advertised capability responded with the minimal expected shape (23 items). |
54
+ | review | schema-quality | partial | 0.49 | Found 7 quality finding(s) across 29 item(s): 0 warnings, 7 info. |
55
+ | act now | attack-sim | fail | 0.75 | Safe attack simulation found 5 finding(s): 3 high, 2 medium, 0 low. |
56
+ | act now | security | fail | 0.28 | Found 8 security finding(s): 3 high, 3 medium, 2 low. |
57
+ | act now | security-lite | fail | 0.06 | Found 8 security finding(s): 3 high, 3 medium, 2 low. |
56
58
 
57
59
  ## Evidence Snippets
58
60
 
@@ -78,7 +80,7 @@ Summary: Advertised capability responded with the minimal expected shape (1 item
78
80
  - Minimal shape present: `true`
79
81
  - Item count: `1`
80
82
  - Identifiers: k8s-diagnose
81
- - Diagnostics: Starting Kubernetes MCP server v3.9.2, handling commands..., Telemetry: Disabled, (node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (+1 more)
83
+ - Diagnostics: Starting Kubernetes MCP server v3.9.3, handling commands..., Telemetry: Disabled, (node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (+1 more)
82
84
 
83
85
  ### resources — pass
84
86
 
@@ -90,14 +92,14 @@ Summary: Advertised capability responded with the minimal expected shape, but on
90
92
  - Minimal shape present: `true`
91
93
  - Item count: `5`
92
94
  - Identifiers: k8s://default/pods, k8s://default/deployments, k8s://default/services, k8s://namespaces, k8s://nodes
93
- - Diagnostics: Starting Kubernetes MCP server v3.9.2, handling commands..., Telemetry: Disabled, (node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (+1 more)
95
+ - Diagnostics: Starting Kubernetes MCP server v3.9.3, handling commands..., Telemetry: Disabled, (node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (+1 more)
94
96
  - Endpoint: `resources/templates/list`
95
97
  - Advertised: `true`
96
98
  - Responded: `false`
97
99
  - Minimal shape present: `false`
98
100
  - Item count: `0`
99
101
  - Identifiers: none
100
- - Diagnostics: MCP error -32601: Method not found, Starting Kubernetes MCP server v3.9.2, handling commands..., Telemetry: Disabled (+2 more)
102
+ - Diagnostics: MCP error -32601: Method not found, Starting Kubernetes MCP server v3.9.3, handling commands..., Telemetry: Disabled (+2 more)
101
103
 
102
104
  ### tools — pass
103
105
 
@@ -109,7 +111,7 @@ Summary: Advertised capability responded with the minimal expected shape (23 ite
109
111
  - Minimal shape present: `true`
110
112
  - Item count: `23`
111
113
  - Identifiers: cleanup, kubectl_get, kubectl_describe, kubectl_apply, kubectl_delete (+18 more)
112
- - Diagnostics: Starting Kubernetes MCP server v3.9.2, handling commands..., Telemetry: Disabled, (node:54973) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (+1 more)
114
+ - Diagnostics: Starting Kubernetes MCP server v3.9.3, handling commands..., Telemetry: Disabled, (node:13988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (+1 more)
113
115
 
114
116
  ### schema-quality — partial
115
117
 
@@ -123,6 +125,30 @@ Summary: Found 7 quality finding(s) across 29 item(s): 0 warnings, 7 info.
123
125
  - Identifiers: port_forward, stop_port_forward, list_api_resources
124
126
  - Diagnostics: [info] tool "port_forward": Property 'resourceType' missing description, [info] tool "port_forward": Property 'resourceName' missing description, [info] tool "port_forward": Property 'localPort' missing description (+4 more)
125
127
 
128
+ ### attack-sim — fail
129
+
130
+ Summary: Safe attack simulation found 5 finding(s): 3 high, 2 medium, 0 low.
131
+
132
+ - Endpoint: `attack-sim/safe`
133
+ - Advertised: `true`
134
+ - Responded: `true`
135
+ - Minimal shape present: `true`
136
+ - Item count: `5`
137
+ - Identifiers: kubectl_apply, kubectl_delete, kubectl_create, exec_in_pod, kubectl_generic
138
+ - Diagnostics: [medium] Tool "kubectl_apply" combines broad parameters (filename) with destructive or non-read-only behavior., [medium] Tool "kubectl_delete" combines broad parameters (filename) with destructive or non-read-only behavior., [high] Tool "kubectl_create" combines broad parameters (filename, command) with destructive or non-read-only behavior. (+2 more)
139
+
140
+ ### security — fail
141
+
142
+ Summary: Found 8 security finding(s): 3 high, 3 medium, 2 low.
143
+
144
+ - Endpoint: `security/scan`
145
+ - Advertised: `true`
146
+ - Responded: `true`
147
+ - Minimal shape present: `true`
148
+ - Item count: `8`
149
+ - Identifiers: cleanup, kubectl_apply, kubectl_delete, kubectl_create, kubectl_reconnect (+2 more)
150
+ - Diagnostics: [low] Tool "cleanup" has an empty schema but is marked as destructive., [medium] Tool "kubectl_apply" accepts filesystem paths and has destructive capabilities., [medium] Tool "kubectl_delete" accepts filesystem paths and has destructive capabilities. (+5 more)
151
+
126
152
  ### security-lite — fail
127
153
 
128
154
  Summary: Found 8 security finding(s): 3 high, 3 medium, 2 low.
@@ -146,5 +172,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
146
172
 
147
173
  - Artifact type: `run`
148
174
  - Schema version: `1.0.0`
149
- - Run ID: `run_2026-07-06T053258917Z_2e4f693a`
175
+ - Run ID: `run_2026-07-06T194958878Z_b41bb221`
150
176
  - Gate: `fail`