@kryptosai/mcp-observatory 1.32.0 → 1.32.1

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 (117) hide show
  1. package/README.md +4 -10
  2. package/README.zh-CN.md +4 -10
  3. package/dist/src/cli.js +1 -1
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/commands/enforce.d.ts +2 -2
  6. package/dist/src/commands/enforce.js +5 -8
  7. package/dist/src/commands/enforce.js.map +1 -1
  8. package/dist/src/commands/scan.js.map +1 -1
  9. package/dist/src/commands/test.js +2 -2
  10. package/dist/src/commands/test.js.map +1 -1
  11. package/dist/src/telemetry.js +2 -1
  12. package/dist/src/telemetry.js.map +1 -1
  13. package/dist/src/validate.js +5 -6
  14. package/dist/src/validate.js.map +1 -1
  15. package/docs/mcp-server-safety-index.md +68 -8
  16. package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
  17. package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
  18. package/docs/safety-index/artifacts/brave-search-server.json +341 -0
  19. package/docs/safety-index/artifacts/brave-search-server.md +201 -0
  20. package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
  21. package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
  22. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
  23. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
  24. package/docs/safety-index/artifacts/clay-server.json +66 -0
  25. package/docs/safety-index/artifacts/clay-server.md +106 -0
  26. package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
  27. package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
  28. package/docs/safety-index/artifacts/context7-server.json +85 -18
  29. package/docs/safety-index/artifacts/context7-server.md +52 -11
  30. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
  31. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
  32. package/docs/safety-index/artifacts/docker-server.json +395 -0
  33. package/docs/safety-index/artifacts/docker-server.md +204 -0
  34. package/docs/safety-index/artifacts/everything-server.json +145 -18
  35. package/docs/safety-index/artifacts/everything-server.md +56 -11
  36. package/docs/safety-index/artifacts/exa-server.json +400 -0
  37. package/docs/safety-index/artifacts/exa-server.md +207 -0
  38. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
  39. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
  40. package/docs/safety-index/artifacts/fetch-server.json +66 -0
  41. package/docs/safety-index/artifacts/fetch-server.md +106 -0
  42. package/docs/safety-index/artifacts/figma-server.json +1766 -0
  43. package/docs/safety-index/artifacts/figma-server.md +256 -0
  44. package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
  45. package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
  46. package/docs/safety-index/artifacts/filesystem-server.json +426 -22
  47. package/docs/safety-index/artifacts/filesystem-server.md +73 -12
  48. package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
  49. package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
  50. package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
  51. package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
  52. package/docs/safety-index/artifacts/gitlab-server.json +229 -0
  53. package/docs/safety-index/artifacts/gitlab-server.md +753 -0
  54. package/docs/safety-index/artifacts/gmail-server.json +66 -0
  55. package/docs/safety-index/artifacts/gmail-server.md +106 -0
  56. package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
  57. package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
  58. package/docs/safety-index/artifacts/google-drive-server.json +66 -0
  59. package/docs/safety-index/artifacts/google-drive-server.md +106 -0
  60. package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
  61. package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
  62. package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
  63. package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
  64. package/docs/safety-index/artifacts/huggingface-server.json +66 -0
  65. package/docs/safety-index/artifacts/huggingface-server.md +106 -0
  66. package/docs/safety-index/artifacts/jina-server.json +66 -0
  67. package/docs/safety-index/artifacts/jina-server.md +106 -0
  68. package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
  69. package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
  70. package/docs/safety-index/artifacts/linear-server.json +1494 -0
  71. package/docs/safety-index/artifacts/linear-server.md +237 -0
  72. package/docs/safety-index/artifacts/memory-server.json +191 -18
  73. package/docs/safety-index/artifacts/memory-server.md +51 -9
  74. package/docs/safety-index/artifacts/mongodb-server.json +66 -0
  75. package/docs/safety-index/artifacts/mongodb-server.md +106 -0
  76. package/docs/safety-index/artifacts/neon-server.json +66 -0
  77. package/docs/safety-index/artifacts/neon-server.md +103 -0
  78. package/docs/safety-index/artifacts/notion-server.json +7151 -0
  79. package/docs/safety-index/artifacts/notion-server.md +236 -0
  80. package/docs/safety-index/artifacts/onesignal-server.json +66 -0
  81. package/docs/safety-index/artifacts/onesignal-server.md +106 -0
  82. package/docs/safety-index/artifacts/opentofu-server.json +31 -19
  83. package/docs/safety-index/artifacts/opentofu-server.md +28 -10
  84. package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
  85. package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
  86. package/docs/safety-index/artifacts/postgres-server.json +330 -0
  87. package/docs/safety-index/artifacts/postgres-server.md +208 -0
  88. package/docs/safety-index/artifacts/promptopia-server.json +96 -19
  89. package/docs/safety-index/artifacts/promptopia-server.md +43 -9
  90. package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
  91. package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
  92. package/docs/safety-index/artifacts/qdrant-server.json +66 -0
  93. package/docs/safety-index/artifacts/qdrant-server.md +106 -0
  94. package/docs/safety-index/artifacts/reddit-server.json +66 -0
  95. package/docs/safety-index/artifacts/reddit-server.md +106 -0
  96. package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
  97. package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
  98. package/docs/safety-index/artifacts/sentry-server.json +66 -0
  99. package/docs/safety-index/artifacts/sentry-server.md +106 -0
  100. package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
  101. package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
  102. package/docs/safety-index/artifacts/slack-server.json +66 -0
  103. package/docs/safety-index/artifacts/slack-server.md +102 -0
  104. package/docs/safety-index/artifacts/sqlite-server.json +67 -0
  105. package/docs/safety-index/artifacts/sqlite-server.md +106 -0
  106. package/docs/safety-index/artifacts/stripe-server.json +66 -0
  107. package/docs/safety-index/artifacts/stripe-server.md +106 -0
  108. package/docs/safety-index/artifacts/supabase-server.json +66 -0
  109. package/docs/safety-index/artifacts/supabase-server.md +102 -0
  110. package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
  111. package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
  112. package/docs/safety-index/artifacts/ui5-mcp-server.json +24 -24
  113. package/docs/safety-index/artifacts/ui5-mcp-server.md +13 -13
  114. package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
  115. package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
  116. package/docs/safety-index/targets.json +535 -0
  117. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T19:49:52.194Z
3
+ Generated at 2026-07-12T23:44:02.967Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -25,20 +25,168 @@ Generated at 2026-07-06T19:49:52.194Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 8 | 4 | 0 | 4 | 0 | 0 | 0 |
28
+ | pass | 9 | 4 | 0 | 5 | 0 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
32
32
  - Safety verdict: **Needs review** — The server is usable, but caveated checks should be reviewed before agents depend on it.
33
- - Top risks: attack-sim: Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low.; schema-quality: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.; security: Found 19 security finding(s): 0 high, 19 medium, 0 low.
33
+ - Top risks: attack-sim: Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low.; runtime-profile: Detected 7 potential egress target(s) and 118 potential state mutation(s) with high confidence.; schema-quality: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.
34
34
  - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
35
  - Failing checks: none
36
- - Partial or flaky checks: security-lite, schema-quality, security, attack-sim
36
+ - Partial or flaky checks: security-lite, runtime-profile, schema-quality, security, attack-sim
37
37
  - Skipped checks: none
38
38
  - Unsupported checks: none
39
- - Suggested next step: Review the caveated checks next: security-lite, schema-quality, security, attack-sim.
39
+ - Suggested next step: Review the caveated checks next: security-lite, runtime-profile, schema-quality, 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
+ ## What Was Not Tested
43
+
44
+ - ℹ️ credential_access: Credential scanning was performed (see security findings)
45
+ - ℹ️ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
46
+
47
+ ## Runtime Profile
48
+
49
+ ### Egress Manifest
50
+
51
+ The following targets were identified as potentially reachable by this server (confidence: **high**):
52
+
53
+ | Target | Protocol | Source | Confidence |
54
+ | --- | --- | --- | --- |
55
+ | url | unknown | tool_schema | high |
56
+ | Source to clone from: HTTP(S) URL, SSH URL (ssh://… or git@host:path), git:// URL, file:// URL, or a bare filesystem path (e.g. /tmp/repo.git). | unknown | description_analysis | medium |
57
+ | git_clone | unknown | description_analysis | low |
58
+ | url | unknown | tool_schema | high |
59
+ | Remote name for add/remove/rename/get-url/set-url operations. | unknown | description_analysis | medium |
60
+ | Remote URL for add/set-url operations. Accepts HTTP(S), SSH (ssh://… or git@host:path), git://, or file:// URLs. | unknown | description_analysis | medium |
61
+ | Set push URL separately (for set-url operation). | unknown | description_analysis | medium |
62
+
63
+ ### State Mutations
64
+
65
+ The following state-modifying operations were identified from tool schemas:
66
+
67
+ | Resource | Operation | Scope | Source |
68
+ | --- | --- | --- | --- |
69
+ | filesystem | write | specific_path | tool_schema |
70
+ | filesystem | write | working_directory | description_analysis |
71
+ | filesystem | write | working_directory | description_analysis |
72
+ | filesystem | write | working_directory | description_analysis |
73
+ | filesystem | write | specific_path | tool_schema |
74
+ | filesystem | write | working_directory | tool_schema |
75
+ | filesystem | write | working_directory | description_analysis |
76
+ | filesystem | write | working_directory | description_analysis |
77
+ | filesystem | write | working_directory | description_analysis |
78
+ | filesystem | write | specific_path | tool_schema |
79
+ | filesystem | write | working_directory | description_analysis |
80
+ | filesystem | write | working_directory | description_analysis |
81
+ | filesystem | write | working_directory | description_analysis |
82
+ | filesystem | write | working_directory | description_analysis |
83
+ | filesystem | write | specific_path | tool_schema |
84
+ | filesystem | write | working_directory | description_analysis |
85
+ | filesystem | write | working_directory | description_analysis |
86
+ | filesystem | write | working_directory | description_analysis |
87
+ | filesystem | write | specific_path | tool_schema |
88
+ | filesystem | write | working_directory | description_analysis |
89
+ | filesystem | write | working_directory | description_analysis |
90
+ | filesystem | write | working_directory | description_analysis |
91
+ | filesystem | write | working_directory | description_analysis |
92
+ | filesystem | write | working_directory | description_analysis |
93
+ | filesystem | write | specific_path | tool_schema |
94
+ | filesystem | write | working_directory | description_analysis |
95
+ | filesystem | write | working_directory | description_analysis |
96
+ | filesystem | write | specific_path | tool_schema |
97
+ | filesystem | write | working_directory | description_analysis |
98
+ | filesystem | write | working_directory | description_analysis |
99
+ | filesystem | write | working_directory | description_analysis |
100
+ | filesystem | write | working_directory | description_analysis |
101
+ | filesystem | write | working_directory | description_analysis |
102
+ | filesystem | write | working_directory | description_analysis |
103
+ | filesystem | write | working_directory | tool_schema |
104
+ | filesystem | write | working_directory | description_analysis |
105
+ | filesystem | write | working_directory | description_analysis |
106
+ | filesystem | write | working_directory | description_analysis |
107
+ | filesystem | write | working_directory | description_analysis |
108
+ | filesystem | write | working_directory | description_analysis |
109
+ | filesystem | write | working_directory | description_analysis |
110
+ | filesystem | write | specific_path | tool_schema |
111
+ | filesystem | write | working_directory | description_analysis |
112
+ | filesystem | write | working_directory | description_analysis |
113
+ | filesystem | write | working_directory | description_analysis |
114
+ | filesystem | write | specific_path | tool_schema |
115
+ | filesystem | write | working_directory | description_analysis |
116
+ | filesystem | write | working_directory | description_analysis |
117
+ | filesystem | write | working_directory | description_analysis |
118
+ | filesystem | write | specific_path | tool_schema |
119
+ | filesystem | write | working_directory | description_analysis |
120
+ | filesystem | write | working_directory | description_analysis |
121
+ | filesystem | write | specific_path | tool_schema |
122
+ | filesystem | write | working_directory | description_analysis |
123
+ | filesystem | write | working_directory | description_analysis |
124
+ | filesystem | write | working_directory | description_analysis |
125
+ | filesystem | write | specific_path | tool_schema |
126
+ | filesystem | write | working_directory | tool_schema |
127
+ | filesystem | write | working_directory | description_analysis |
128
+ | filesystem | write | working_directory | description_analysis |
129
+ | filesystem | write | working_directory | description_analysis |
130
+ | filesystem | write | working_directory | description_analysis |
131
+ | filesystem | write | specific_path | tool_schema |
132
+ | filesystem | write | working_directory | description_analysis |
133
+ | filesystem | write | working_directory | description_analysis |
134
+ | filesystem | write | specific_path | tool_schema |
135
+ | filesystem | write | working_directory | description_analysis |
136
+ | filesystem | write | specific_path | tool_schema |
137
+ | filesystem | write | working_directory | description_analysis |
138
+ | filesystem | write | working_directory | description_analysis |
139
+ | filesystem | write | working_directory | description_analysis |
140
+ | filesystem | write | specific_path | tool_schema |
141
+ | filesystem | write | working_directory | description_analysis |
142
+ | filesystem | write | specific_path | tool_schema |
143
+ | filesystem | write | working_directory | description_analysis |
144
+ | filesystem | write | specific_path | tool_schema |
145
+ | filesystem | write | working_directory | description_analysis |
146
+ | filesystem | write | working_directory | description_analysis |
147
+ | filesystem | write | working_directory | description_analysis |
148
+ | filesystem | write | working_directory | description_analysis |
149
+ | filesystem | write | working_directory | description_analysis |
150
+ | filesystem | write | specific_path | tool_schema |
151
+ | filesystem | write | working_directory | description_analysis |
152
+ | filesystem | write | working_directory | description_analysis |
153
+ | filesystem | write | working_directory | description_analysis |
154
+ | filesystem | write | working_directory | tool_schema |
155
+ | filesystem | write | working_directory | description_analysis |
156
+ | filesystem | write | working_directory | description_analysis |
157
+ | filesystem | write | working_directory | description_analysis |
158
+ | filesystem | write | working_directory | description_analysis |
159
+ | filesystem | write | specific_path | tool_schema |
160
+ | filesystem | write | working_directory | tool_schema |
161
+ | filesystem | write | working_directory | description_analysis |
162
+ | filesystem | write | working_directory | description_analysis |
163
+ | filesystem | write | specific_path | tool_schema |
164
+ | filesystem | write | working_directory | description_analysis |
165
+ | filesystem | write | working_directory | description_analysis |
166
+ | filesystem | write | working_directory | description_analysis |
167
+ | filesystem | write | working_directory | description_analysis |
168
+ | filesystem | write | specific_path | tool_schema |
169
+ | filesystem | write | working_directory | description_analysis |
170
+ | filesystem | write | specific_path | tool_schema |
171
+ | filesystem | write | working_directory | description_analysis |
172
+ | filesystem | write | working_directory | description_analysis |
173
+ | filesystem | write | working_directory | description_analysis |
174
+ | filesystem | write | working_directory | description_analysis |
175
+ | filesystem | write | working_directory | description_analysis |
176
+ | filesystem | write | working_directory | description_analysis |
177
+ | filesystem | write | working_directory | description_analysis |
178
+ | filesystem | write | specific_path | tool_schema |
179
+ | filesystem | write | working_directory | description_analysis |
180
+ | filesystem | write | working_directory | description_analysis |
181
+ | filesystem | write | working_directory | description_analysis |
182
+ | filesystem | write | working_directory | description_analysis |
183
+ | filesystem | write | working_directory | description_analysis |
184
+ | filesystem | write | working_directory | description_analysis |
185
+ | filesystem | write | working_directory | description_analysis |
186
+ | filesystem | write | working_directory | description_analysis |
187
+
188
+ _Analyzed at 2026-07-12T23:44:04.014Z_
189
+
42
190
  ## Regressions and Recoveries
43
191
 
44
192
  _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
@@ -47,14 +195,15 @@ _Use the `diff` command against another run artifact to classify regressions and
47
195
 
48
196
  | Focus | Check | Status | Duration (ms) | Message |
49
197
  | --- | --- | --- | --- | --- |
50
- | healthy | conformance | pass | 35.62 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 0.65 | Advertised capability responded with the minimal expected shape (1 item). |
52
- | healthy | resources | pass | 0.60 | Advertised capability responded with the minimal expected shape (2 items). |
53
- | healthy | tools | pass | 27.61 | Advertised capability responded with the minimal expected shape (28 items). |
54
- | review | attack-sim | partial | 18.08 | Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low. |
55
- | review | schema-quality | partial | 17.43 | Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info. |
56
- | review | security | partial | 16.14 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
57
- | review | security-lite | partial | 0.08 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
198
+ | healthy | conformance | pass | 38.89 | All 7 conformance checks passed. |
199
+ | healthy | prompts | pass | 0.68 | Advertised capability responded with the minimal expected shape (1 item). |
200
+ | healthy | resources | pass | 0.64 | Advertised capability responded with the minimal expected shape (2 items). |
201
+ | healthy | tools | pass | 37.46 | Advertised capability responded with the minimal expected shape (28 items). |
202
+ | review | attack-sim | partial | 19.04 | Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low. |
203
+ | review | runtime-profile | partial | 0.52 | Detected 7 potential egress target(s) and 118 potential state mutation(s) with high confidence. |
204
+ | review | schema-quality | partial | 23.32 | Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info. |
205
+ | review | security | partial | 17.88 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
206
+ | review | security-lite | partial | 0.18 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
58
207
 
59
208
  ## Evidence Snippets
60
209
 
@@ -80,7 +229,7 @@ Summary: Advertised capability responded with the minimal expected shape (1 item
80
229
  - Minimal shape present: `true`
81
230
  - Item count: `1`
82
231
  - Identifiers: git_wrapup
83
- - Diagnostics: {"level":30,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
232
+ - Diagnostics: {"level":30,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
84
233
 
85
234
  ### resources — pass
86
235
 
@@ -92,14 +241,14 @@ Summary: Advertised capability responded with the minimal expected shape (2 item
92
241
  - Minimal shape present: `true`
93
242
  - Item count: `1`
94
243
  - Identifiers: git://working-directory
95
- - Diagnostics: {"level":30,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
244
+ - Diagnostics: {"level":30,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
96
245
  - Endpoint: `resources/templates/list`
97
246
  - Advertised: `true`
98
247
  - Responded: `true`
99
248
  - Minimal shape present: `true`
100
249
  - Item count: `1`
101
250
  - Identifiers: git://working-directory
102
- - Diagnostics: {"level":30,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
251
+ - Diagnostics: {"level":30,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783899843951,"env":"development","version":"2.15.1","pid":24859,"transport":"stdio","requestId":"Z3S39-K4LVB","timestamp":"2026-07-12T23:44:03.946Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
103
252
 
104
253
  ### tools — pass
105
254
 
@@ -125,6 +274,18 @@ Summary: Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low.
125
274
  - Identifiers: git_add, git_branch, git_checkout, git_cherry_pick, git_clean (+14 more)
126
275
  - Diagnostics: [medium] Tool "git_add" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "git_branch" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "git_checkout" combines broad parameters (path) with destructive or non-read-only behavior. (+16 more)
127
276
 
277
+ ### runtime-profile — partial
278
+
279
+ Summary: Detected 7 potential egress target(s) and 118 potential state mutation(s) with high confidence.
280
+
281
+ - Endpoint: `runtime-profile/analyze`
282
+ - Advertised: `true`
283
+ - Responded: `true`
284
+ - Minimal shape present: `true`
285
+ - Item count: `125`
286
+ - Identifiers: none
287
+ - Diagnostics: Egress entries: 7, State mutations: 118, Confidence: high
288
+
128
289
  ### schema-quality — partial
129
290
 
130
291
  Summary: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.
@@ -172,5 +333,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
172
333
 
173
334
  - Artifact type: `run`
174
335
  - Schema version: `1.0.0`
175
- - Run ID: `run_2026-07-06T194952194Z_80b1e6dd`
336
+ - Run ID: `run_2026-07-12T234402967Z_93acfad1`
176
337
  - Gate: `pass`
@@ -0,0 +1,395 @@
1
+ {
2
+ "artifactType": "run",
3
+ "schemaVersion": "1.0.0",
4
+ "gate": "fail",
5
+ "runId": "run_2026-07-12T234429245Z_f8164ad4",
6
+ "createdAt": "2026-07-12T23:44:29.245Z",
7
+ "toolVersion": "1.31.0",
8
+ "target": {
9
+ "targetId": "docker-server",
10
+ "adapter": "local-process",
11
+ "command": "npx",
12
+ "args": [
13
+ "-y",
14
+ "mcp-server-docker"
15
+ ],
16
+ "cwd": ".",
17
+ "metadata": {
18
+ "package": "mcp-server-docker",
19
+ "purpose": "mcp-safety-index",
20
+ "riskClass": "Container orchestration",
21
+ "failureClass": "Container/image boundary",
22
+ "whyItMatters": "Docker MCP servers expose container run, exec, and image management tools — container-level command execution is a high-trust boundary."
23
+ },
24
+ "serverName": "mcp-server-docker",
25
+ "serverVersion": "1.0.0"
26
+ },
27
+ "environment": {
28
+ "platform": "darwin 25.5.0",
29
+ "nodeVersion": "v22.22.1"
30
+ },
31
+ "summary": {
32
+ "total": 9,
33
+ "pass": 3,
34
+ "fail": 3,
35
+ "partial": 1,
36
+ "unsupported": 2,
37
+ "flaky": 0,
38
+ "skipped": 0,
39
+ "gate": "fail"
40
+ },
41
+ "checks": [
42
+ {
43
+ "id": "tools",
44
+ "capability": "tools",
45
+ "status": "pass",
46
+ "durationMs": 0.4344160000036936,
47
+ "message": "Advertised capability responded with the minimal expected shape (1 item).",
48
+ "evidence": [
49
+ {
50
+ "endpoint": "tools/list",
51
+ "advertised": true,
52
+ "responded": true,
53
+ "minimalShapePresent": true,
54
+ "itemCount": 1,
55
+ "identifiers": [
56
+ "run_command"
57
+ ],
58
+ "diagnostics": [
59
+ "Warning: No allowed containers specified in ALLOWED_CONTAINERS environment variable",
60
+ "MCP Server Docker started",
61
+ "Default service: laravel_app",
62
+ "Allowed containers: laravel_app"
63
+ ],
64
+ "schemas": {
65
+ "run_command": {
66
+ "type": "object",
67
+ "properties": {
68
+ "command": {
69
+ "type": "string",
70
+ "description": "The command to execute in the container"
71
+ },
72
+ "service": {
73
+ "type": "string",
74
+ "description": "Docker Compose service name (optional, uses default: laravel_app if not specified)"
75
+ }
76
+ },
77
+ "required": [
78
+ "command"
79
+ ]
80
+ }
81
+ }
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "id": "prompts",
87
+ "capability": "prompts",
88
+ "status": "unsupported",
89
+ "durationMs": 0.0008750000051804818,
90
+ "message": "Prompts are not advertised by the target.",
91
+ "evidence": [
92
+ {
93
+ "endpoint": "prompts/list",
94
+ "advertised": false,
95
+ "responded": false,
96
+ "minimalShapePresent": false,
97
+ "diagnostics": []
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "id": "resources",
103
+ "capability": "resources",
104
+ "status": "unsupported",
105
+ "durationMs": 0.0005840000012540258,
106
+ "message": "Resources are not advertised by the target.",
107
+ "evidence": [
108
+ {
109
+ "endpoint": "resources/list | resources/templates/list",
110
+ "advertised": false,
111
+ "responded": false,
112
+ "minimalShapePresent": false,
113
+ "diagnostics": []
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "id": "security-lite",
119
+ "capability": "security-lite",
120
+ "status": "fail",
121
+ "durationMs": 0.01445899999816902,
122
+ "message": "Found 1 security finding(s): 1 high, 0 medium, 0 low.",
123
+ "evidence": [
124
+ {
125
+ "endpoint": "security/scan-lite",
126
+ "advertised": true,
127
+ "responded": true,
128
+ "minimalShapePresent": true,
129
+ "itemCount": 1,
130
+ "identifiers": [
131
+ "run_command"
132
+ ],
133
+ "diagnostics": [
134
+ "[high] Tool \"run_command\" has parameter \"command\" which may allow arbitrary command execution."
135
+ ],
136
+ "findings": [
137
+ {
138
+ "ruleId": "shell-injection",
139
+ "severity": "high",
140
+ "toolName": "run_command",
141
+ "message": "Tool \"run_command\" has parameter \"command\" which may allow arbitrary command execution."
142
+ }
143
+ ]
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ "id": "runtime-profile",
149
+ "capability": "runtime-profile",
150
+ "status": "partial",
151
+ "durationMs": 0.0400420000005397,
152
+ "message": "Detected 0 potential egress target(s) and 4 potential state mutation(s) with high confidence.",
153
+ "evidence": [
154
+ {
155
+ "endpoint": "runtime-profile/analyze",
156
+ "advertised": true,
157
+ "responded": true,
158
+ "minimalShapePresent": true,
159
+ "itemCount": 4,
160
+ "diagnostics": [
161
+ "Egress entries: 0",
162
+ "State mutations: 4",
163
+ "Confidence: high"
164
+ ],
165
+ "findings": [
166
+ {
167
+ "resource": "network",
168
+ "operation": "execute",
169
+ "scope": "specific_path",
170
+ "source": "tool_schema"
171
+ },
172
+ {
173
+ "resource": "filesystem",
174
+ "operation": "write",
175
+ "scope": "working_directory",
176
+ "source": "description_analysis"
177
+ },
178
+ {
179
+ "resource": "filesystem",
180
+ "operation": "write",
181
+ "scope": "working_directory",
182
+ "source": "description_analysis"
183
+ },
184
+ {
185
+ "resource": "filesystem",
186
+ "operation": "execute",
187
+ "scope": "working_directory",
188
+ "source": "description_analysis"
189
+ }
190
+ ]
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "id": "conformance",
196
+ "capability": "conformance",
197
+ "status": "pass",
198
+ "durationMs": 0.5411660000027041,
199
+ "message": "All 7 conformance checks passed.",
200
+ "evidence": [
201
+ {
202
+ "endpoint": "conformance/check",
203
+ "advertised": true,
204
+ "responded": true,
205
+ "minimalShapePresent": true,
206
+ "itemCount": 7,
207
+ "identifiers": [],
208
+ "diagnostics": [
209
+ "[pass] capabilities-present: Server returned capabilities object.",
210
+ "[pass] server-info: Server provided initialization info.",
211
+ "[pass] tools-capability-match: tools/list returned 1 tool(s).",
212
+ "[pass] prompts-capability-match: Prompts not advertised — endpoint check skipped.",
213
+ "[pass] resources-capability-match: Resources not advertised — endpoint check skipped.",
214
+ "[pass] tool-response-content: No safe tool to invoke — content validation skipped.",
215
+ "[pass] error-handling: Server returned proper error code -32601 for unknown method."
216
+ ]
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "id": "schema-quality",
222
+ "capability": "schema-quality",
223
+ "status": "pass",
224
+ "durationMs": 0.23166700000001583,
225
+ "message": "All 1 item(s) have good schema quality.",
226
+ "evidence": [
227
+ {
228
+ "endpoint": "schema-quality/scan",
229
+ "advertised": true,
230
+ "responded": true,
231
+ "minimalShapePresent": true,
232
+ "itemCount": 0,
233
+ "identifiers": []
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ "id": "security",
239
+ "capability": "security",
240
+ "status": "fail",
241
+ "durationMs": 0.1275000000023283,
242
+ "message": "Found 1 security finding(s): 1 high, 0 medium, 0 low.",
243
+ "evidence": [
244
+ {
245
+ "endpoint": "security/scan",
246
+ "advertised": true,
247
+ "responded": true,
248
+ "minimalShapePresent": true,
249
+ "itemCount": 1,
250
+ "identifiers": [
251
+ "run_command"
252
+ ],
253
+ "diagnostics": [
254
+ "[high] Tool \"run_command\" has parameter \"command\" which may allow arbitrary command execution."
255
+ ],
256
+ "findings": [
257
+ {
258
+ "ruleId": "shell-injection",
259
+ "severity": "high",
260
+ "toolName": "run_command",
261
+ "message": "Tool \"run_command\" has parameter \"command\" which may allow arbitrary command execution."
262
+ }
263
+ ]
264
+ }
265
+ ]
266
+ },
267
+ {
268
+ "id": "attack-sim",
269
+ "capability": "attack-sim",
270
+ "status": "fail",
271
+ "durationMs": 0.21908399999665562,
272
+ "message": "Safe attack simulation found 1 finding(s): 1 high, 0 medium, 0 low.",
273
+ "evidence": [
274
+ {
275
+ "endpoint": "attack-sim/safe",
276
+ "advertised": true,
277
+ "responded": true,
278
+ "minimalShapePresent": true,
279
+ "itemCount": 1,
280
+ "identifiers": [
281
+ "run_command"
282
+ ],
283
+ "diagnostics": [
284
+ "[high] Tool \"run_command\" combines broad parameters (command) with destructive or non-read-only behavior."
285
+ ],
286
+ "findings": [
287
+ {
288
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
289
+ "attackClass": "permission-boundary",
290
+ "severity": "high",
291
+ "itemType": "tool",
292
+ "itemName": "run_command",
293
+ "message": "Tool \"run_command\" combines broad parameters (command) with destructive or non-read-only behavior.",
294
+ "evidence": {
295
+ "broadParams": [
296
+ "command"
297
+ ],
298
+ "description": "Execute a command inside a Docker container service"
299
+ },
300
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
301
+ "recommendedAction": "quarantine"
302
+ }
303
+ ]
304
+ }
305
+ ]
306
+ }
307
+ ],
308
+ "healthScore": {
309
+ "overall": 73,
310
+ "grade": "C",
311
+ "dimensions": [
312
+ {
313
+ "name": "Protocol Compliance",
314
+ "weight": 0.3,
315
+ "score": 100,
316
+ "details": [
317
+ "conformance: pass (100/100)"
318
+ ]
319
+ },
320
+ {
321
+ "name": "Schema Quality",
322
+ "weight": 0.2,
323
+ "score": 100,
324
+ "details": [
325
+ "schema-quality: pass (100/100)"
326
+ ]
327
+ },
328
+ {
329
+ "name": "Security",
330
+ "weight": 0.2,
331
+ "score": 0,
332
+ "details": [
333
+ "security-lite: fail (0/100)",
334
+ "security: fail (0/100)",
335
+ "attack-sim: fail (0/100)"
336
+ ]
337
+ },
338
+ {
339
+ "name": "Reliability",
340
+ "weight": 0.2,
341
+ "score": 67,
342
+ "details": [
343
+ "tools: pass (100/100)",
344
+ "prompts: unsupported (50/100)",
345
+ "resources: unsupported (50/100)"
346
+ ]
347
+ },
348
+ {
349
+ "name": "Performance",
350
+ "weight": 0.1,
351
+ "score": 100,
352
+ "details": [
353
+ "Connect: 694ms",
354
+ "p95 latency: 0ms (3 operations)"
355
+ ]
356
+ }
357
+ ]
358
+ },
359
+ "performanceMetrics": {
360
+ "connectMs": 694.3836250000022,
361
+ "toolsListMs": 0.4344160000036936,
362
+ "promptsListMs": 0.0008750000051804818,
363
+ "resourcesListMs": 0.0005840000012540258
364
+ },
365
+ "runtimeProfile": {
366
+ "stateMutations": [
367
+ {
368
+ "resource": "network",
369
+ "operation": "execute",
370
+ "scope": "specific_path",
371
+ "source": "tool_schema"
372
+ },
373
+ {
374
+ "resource": "filesystem",
375
+ "operation": "write",
376
+ "scope": "working_directory",
377
+ "source": "description_analysis"
378
+ },
379
+ {
380
+ "resource": "filesystem",
381
+ "operation": "write",
382
+ "scope": "working_directory",
383
+ "source": "description_analysis"
384
+ },
385
+ {
386
+ "resource": "filesystem",
387
+ "operation": "execute",
388
+ "scope": "working_directory",
389
+ "source": "description_analysis"
390
+ }
391
+ ],
392
+ "analyzedAt": "2026-07-12T23:44:29.940Z",
393
+ "confidence": "high"
394
+ }
395
+ }