@kryptosai/mcp-observatory 0.22.0 → 0.24.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 (62) hide show
  1. package/COMMERCIAL.md +5 -3
  2. package/PRIVACY.md +5 -2
  3. package/README.md +28 -13
  4. package/dist/src/cli.js +1 -1
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/commands/init-ci.d.ts +3 -0
  7. package/dist/src/commands/init-ci.js +26 -9
  8. package/dist/src/commands/init-ci.js.map +1 -1
  9. package/dist/src/commercial.js +2 -2
  10. package/dist/src/commercial.js.map +1 -1
  11. package/dist/src/reporters/pr-comment.js +6 -2
  12. package/dist/src/reporters/pr-comment.js.map +1 -1
  13. package/dist/src/score.js +1 -1
  14. package/dist/src/score.js.map +1 -1
  15. package/dist/src/validate.js +58 -3
  16. package/dist/src/validate.js.map +1 -1
  17. package/docs/certification-campaign-template.md +10 -10
  18. package/docs/certification-distribution.md +16 -0
  19. package/docs/directory-listing-copy.md +12 -5
  20. package/docs/distribution-launch.md +5 -5
  21. package/docs/enterprise-outreach-playbook.md +2 -2
  22. package/docs/mcp-lock-files.md +63 -0
  23. package/docs/mcp-safety-report-latest.md +16 -7
  24. package/docs/mcp-security-field-guide.md +97 -0
  25. package/docs/mcp-server-safety-index.md +61 -0
  26. package/docs/methodology.md +90 -0
  27. package/docs/metrics-dashboard.md +105 -0
  28. package/docs/paid-pilot-offer.md +74 -0
  29. package/docs/project-case-study.md +77 -43
  30. package/docs/proof.md +42 -12
  31. package/docs/public-post-drafts.md +98 -0
  32. package/docs/publish-readiness.md +6 -4
  33. package/docs/reference-evaluations.md +134 -0
  34. package/docs/safety-index/artifacts/antv-chart-server.json +2765 -0
  35. package/docs/safety-index/artifacts/antv-chart-server.md +156 -0
  36. package/docs/safety-index/artifacts/browsermcp-server.json +416 -0
  37. package/docs/safety-index/artifacts/browsermcp-server.md +163 -0
  38. package/docs/safety-index/artifacts/context7-server.json +286 -0
  39. package/docs/safety-index/artifacts/context7-server.md +163 -0
  40. package/docs/safety-index/artifacts/everything-server.json +482 -0
  41. package/docs/safety-index/artifacts/everything-server.md +163 -0
  42. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +955 -0
  43. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +163 -0
  44. package/docs/safety-index/artifacts/filesystem-server.json +583 -0
  45. package/docs/safety-index/artifacts/filesystem-server.md +156 -0
  46. package/docs/safety-index/artifacts/memory-server.json +469 -0
  47. package/docs/safety-index/artifacts/memory-server.md +156 -0
  48. package/docs/safety-index/artifacts/opentofu-server.json +387 -0
  49. package/docs/safety-index/artifacts/opentofu-server.md +163 -0
  50. package/docs/safety-index/artifacts/playwright-mcp-server.json +919 -0
  51. package/docs/safety-index/artifacts/playwright-mcp-server.md +156 -0
  52. package/docs/safety-index/artifacts/promptopia-server.json +442 -0
  53. package/docs/safety-index/artifacts/promptopia-server.md +156 -0
  54. package/docs/safety-index/artifacts/puppeteer-server.json +377 -0
  55. package/docs/safety-index/artifacts/puppeteer-server.md +163 -0
  56. package/docs/safety-index/artifacts/ref-tools-server.json +262 -0
  57. package/docs/safety-index/artifacts/ref-tools-server.md +156 -0
  58. package/docs/safety-index/artifacts/sequential-thinking-server.json +286 -0
  59. package/docs/safety-index/artifacts/sequential-thinking-server.md +156 -0
  60. package/docs/safety-index/maintainer-note-template.md +25 -0
  61. package/docs/safety-index/targets.json +192 -0
  62. package/package.json +17 -13
@@ -0,0 +1,156 @@
1
+ # MCP Observatory Run Report
2
+
3
+ Generated at 2026-06-24T02:07:41.323Z
4
+
5
+ ## Target and Environment Metadata
6
+
7
+ - Target: `antv-chart-server`
8
+ - Adapter: `local-process`
9
+ - Command: `npx -y @antv/mcp-server-chart`
10
+ - Server: `mcp-server-chart 0.8.x`
11
+ - Platform: `darwin 25.5.0`
12
+ - Node: `v22.22.1`
13
+
14
+ ## Executive Summary
15
+
16
+ **Health Score: 93/100 (A)**
17
+
18
+ | Dimension | Score | Weight |
19
+ | --- | --- | --- |
20
+ | Protocol Compliance | 100/100 | 30% |
21
+ | Schema Quality | 100/100 | 20% |
22
+ | Security | 100/100 | 20% |
23
+ | Reliability | 67/100 | 20% |
24
+ | Performance | 100/100 | 10% |
25
+
26
+ | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
+ | --- | --- | --- | --- | --- | --- | --- | --- |
28
+ | pass | 7 | 5 | 0 | 0 | 2 | 0 | 0 |
29
+
30
+ ## At a Glance
31
+
32
+ - Safety verdict: **Needs review** — The server is usable, but caveated checks should be reviewed before agents depend on it.
33
+ - Top risks: No high-priority risks detected.
34
+ - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
+ - Failing checks: none
36
+ - Partial or flaky checks: none
37
+ - Skipped checks: none
38
+ - Unsupported checks: prompts, resources
39
+ - Suggested next step: Confirm that unsupported capabilities are intentional for this target: prompts, resources.
40
+ - CI next step: `Add CI: npx @kryptosai/mcp-observatory init-ci --all --command "npx -y <server-package>"`
41
+
42
+ ## Regressions and Recoveries
43
+
44
+ _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
45
+
46
+ ## Full Capability Status Table
47
+
48
+ | Focus | Check | Status | Duration (ms) | Message |
49
+ | --- | --- | --- | --- | --- |
50
+ | healthy | conformance | pass | 2.82 | All 7 conformance checks passed. |
51
+ | healthy | schema-quality | pass | 1.45 | All 27 item(s) have good schema quality. |
52
+ | healthy | security | pass | 1.53 | No security issues detected. |
53
+ | healthy | security-lite | pass | 0.12 | No security issues detected (lightweight scan). |
54
+ | healthy | tools | pass | 2.67 | Advertised capability responded with the minimal expected shape (27 items). |
55
+ | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
56
+ | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
57
+
58
+ ## Evidence Snippets
59
+
60
+ ### conformance — pass
61
+
62
+ Summary: All 7 conformance checks passed.
63
+
64
+ - Endpoint: `conformance/check`
65
+ - Advertised: `true`
66
+ - Responded: `true`
67
+ - Minimal shape present: `true`
68
+ - Item count: `7`
69
+ - Identifiers: none
70
+ - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 27 tool(s). (+4 more)
71
+
72
+ ### schema-quality — pass
73
+
74
+ Summary: All 27 item(s) have good schema quality.
75
+
76
+ - Endpoint: `schema-quality/scan`
77
+ - Advertised: `true`
78
+ - Responded: `true`
79
+ - Minimal shape present: `true`
80
+ - Item count: `0`
81
+ - Identifiers: none
82
+ - Diagnostics: none
83
+
84
+ ### security — pass
85
+
86
+ Summary: No security issues detected.
87
+
88
+ - Endpoint: `security/scan`
89
+ - Advertised: `true`
90
+ - Responded: `true`
91
+ - Minimal shape present: `true`
92
+ - Item count: `0`
93
+ - Identifiers: none
94
+ - Diagnostics: none
95
+
96
+ ### security-lite — pass
97
+
98
+ Summary: No security issues detected (lightweight scan).
99
+
100
+ - Endpoint: `security/scan-lite`
101
+ - Advertised: `true`
102
+ - Responded: `true`
103
+ - Minimal shape present: `true`
104
+ - Item count: `0`
105
+ - Identifiers: none
106
+ - Diagnostics: none
107
+
108
+ ### tools — pass
109
+
110
+ Summary: Advertised capability responded with the minimal expected shape (27 items).
111
+
112
+ - Endpoint: `tools/list`
113
+ - Advertised: `true`
114
+ - Responded: `true`
115
+ - Minimal shape present: `true`
116
+ - Item count: `27`
117
+ - Identifiers: generate_area_chart, generate_bar_chart, generate_boxplot_chart, generate_column_chart, generate_district_map (+22 more)
118
+ - Diagnostics: [MCP-Server-Chart] 2026-06-24T02:07:44.865Z ℹ️ setting up tool handlers..., [MCP-Server-Chart] 2026-06-24T02:07:44.867Z ℹ️ tool handlers set up, [MCP-Server-Chart] 2026-06-24T02:07:44.868Z ✅ Stdio MCP Server started
119
+
120
+ ### prompts — unsupported
121
+
122
+ Summary: Prompts are not advertised by the target.
123
+
124
+ - Endpoint: `prompts/list`
125
+ - Advertised: `false`
126
+ - Responded: `false`
127
+ - Minimal shape present: `false`
128
+ - Item count: `0`
129
+ - Identifiers: none
130
+ - Diagnostics: none
131
+
132
+ ### resources — unsupported
133
+
134
+ Summary: Resources are not advertised by the target.
135
+
136
+ - Endpoint: `resources/list | resources/templates/list`
137
+ - Advertised: `false`
138
+ - Responded: `false`
139
+ - Minimal shape present: `false`
140
+ - Item count: `0`
141
+ - Identifiers: none
142
+ - Diagnostics: none
143
+
144
+ ## Reproduction Commands
145
+
146
+ ```bash
147
+ npm run cli -- run --target <path-to-target-config.json>
148
+ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
149
+ ```
150
+
151
+ ## Artifact Provenance
152
+
153
+ - Artifact type: `run`
154
+ - Schema version: `1.0.0`
155
+ - Run ID: `run_2026-06-24T020741323Z_41a77db3`
156
+ - Gate: `pass`
@@ -0,0 +1,416 @@
1
+ {
2
+ "artifactType": "run",
3
+ "schemaVersion": "1.0.0",
4
+ "gate": "pass",
5
+ "runId": "run_2026-06-24T020731112Z_2e7853f8",
6
+ "createdAt": "2026-06-24T02:07:31.112Z",
7
+ "toolVersion": "0.24.0",
8
+ "target": {
9
+ "targetId": "browsermcp-server",
10
+ "adapter": "local-process",
11
+ "command": "npx",
12
+ "args": [
13
+ "-y",
14
+ "@browsermcp/mcp"
15
+ ],
16
+ "cwd": ".",
17
+ "metadata": {
18
+ "package": "@browsermcp/mcp",
19
+ "purpose": "mcp-safety-index",
20
+ "riskClass": "Browser control",
21
+ "failureClass": "Browser-control boundary",
22
+ "whyItMatters": "Browser-control servers need visible tool boundaries before agents drive real browsing sessions."
23
+ },
24
+ "serverName": "Browser MCP",
25
+ "serverVersion": "0.1.3"
26
+ },
27
+ "environment": {
28
+ "platform": "darwin 25.5.0",
29
+ "nodeVersion": "v22.22.1"
30
+ },
31
+ "summary": {
32
+ "total": 7,
33
+ "pass": 6,
34
+ "fail": 0,
35
+ "partial": 0,
36
+ "unsupported": 1,
37
+ "flaky": 0,
38
+ "skipped": 0,
39
+ "gate": "pass"
40
+ },
41
+ "checks": [
42
+ {
43
+ "id": "tools",
44
+ "capability": "tools",
45
+ "status": "pass",
46
+ "durationMs": 1.2612079999998969,
47
+ "message": "Advertised capability responded with the minimal expected shape (12 items).",
48
+ "evidence": [
49
+ {
50
+ "endpoint": "tools/list",
51
+ "advertised": true,
52
+ "responded": true,
53
+ "minimalShapePresent": true,
54
+ "itemCount": 12,
55
+ "identifiers": [
56
+ "browser_navigate",
57
+ "browser_go_back",
58
+ "browser_go_forward",
59
+ "browser_snapshot",
60
+ "browser_click",
61
+ "browser_hover",
62
+ "browser_type",
63
+ "browser_select_option",
64
+ "browser_press_key",
65
+ "browser_wait",
66
+ "browser_get_console_logs",
67
+ "browser_screenshot"
68
+ ],
69
+ "diagnostics": [],
70
+ "schemas": {
71
+ "browser_navigate": {
72
+ "type": "object",
73
+ "properties": {
74
+ "url": {
75
+ "type": "string",
76
+ "description": "The URL to navigate to"
77
+ }
78
+ },
79
+ "required": [
80
+ "url"
81
+ ],
82
+ "additionalProperties": false,
83
+ "$schema": "http://json-schema.org/draft-07/schema#"
84
+ },
85
+ "browser_go_back": {
86
+ "type": "object",
87
+ "properties": {},
88
+ "additionalProperties": false,
89
+ "$schema": "http://json-schema.org/draft-07/schema#"
90
+ },
91
+ "browser_go_forward": {
92
+ "type": "object",
93
+ "properties": {},
94
+ "additionalProperties": false,
95
+ "$schema": "http://json-schema.org/draft-07/schema#"
96
+ },
97
+ "browser_snapshot": {
98
+ "type": "object",
99
+ "properties": {},
100
+ "additionalProperties": false,
101
+ "$schema": "http://json-schema.org/draft-07/schema#"
102
+ },
103
+ "browser_click": {
104
+ "type": "object",
105
+ "properties": {
106
+ "element": {
107
+ "type": "string",
108
+ "description": "Human-readable element description used to obtain permission to interact with the element"
109
+ },
110
+ "ref": {
111
+ "type": "string",
112
+ "description": "Exact target element reference from the page snapshot"
113
+ }
114
+ },
115
+ "required": [
116
+ "element",
117
+ "ref"
118
+ ],
119
+ "additionalProperties": false,
120
+ "$schema": "http://json-schema.org/draft-07/schema#"
121
+ },
122
+ "browser_hover": {
123
+ "type": "object",
124
+ "properties": {
125
+ "element": {
126
+ "type": "string",
127
+ "description": "Human-readable element description used to obtain permission to interact with the element"
128
+ },
129
+ "ref": {
130
+ "type": "string",
131
+ "description": "Exact target element reference from the page snapshot"
132
+ }
133
+ },
134
+ "required": [
135
+ "element",
136
+ "ref"
137
+ ],
138
+ "additionalProperties": false,
139
+ "$schema": "http://json-schema.org/draft-07/schema#"
140
+ },
141
+ "browser_type": {
142
+ "type": "object",
143
+ "properties": {
144
+ "element": {
145
+ "type": "string",
146
+ "description": "Human-readable element description used to obtain permission to interact with the element"
147
+ },
148
+ "ref": {
149
+ "type": "string",
150
+ "description": "Exact target element reference from the page snapshot"
151
+ },
152
+ "text": {
153
+ "type": "string",
154
+ "description": "Text to type into the element"
155
+ },
156
+ "submit": {
157
+ "type": "boolean",
158
+ "description": "Whether to submit entered text (press Enter after)"
159
+ }
160
+ },
161
+ "required": [
162
+ "element",
163
+ "ref",
164
+ "text",
165
+ "submit"
166
+ ],
167
+ "additionalProperties": false,
168
+ "$schema": "http://json-schema.org/draft-07/schema#"
169
+ },
170
+ "browser_select_option": {
171
+ "type": "object",
172
+ "properties": {
173
+ "element": {
174
+ "type": "string",
175
+ "description": "Human-readable element description used to obtain permission to interact with the element"
176
+ },
177
+ "ref": {
178
+ "type": "string",
179
+ "description": "Exact target element reference from the page snapshot"
180
+ },
181
+ "values": {
182
+ "type": "array",
183
+ "items": {
184
+ "type": "string"
185
+ },
186
+ "description": "Array of values to select in the dropdown. This can be a single value or multiple values."
187
+ }
188
+ },
189
+ "required": [
190
+ "element",
191
+ "ref",
192
+ "values"
193
+ ],
194
+ "additionalProperties": false,
195
+ "$schema": "http://json-schema.org/draft-07/schema#"
196
+ },
197
+ "browser_press_key": {
198
+ "type": "object",
199
+ "properties": {
200
+ "key": {
201
+ "type": "string",
202
+ "description": "Name of the key to press or a character to generate, such as `ArrowLeft` or `a`"
203
+ }
204
+ },
205
+ "required": [
206
+ "key"
207
+ ],
208
+ "additionalProperties": false,
209
+ "$schema": "http://json-schema.org/draft-07/schema#"
210
+ },
211
+ "browser_wait": {
212
+ "type": "object",
213
+ "properties": {
214
+ "time": {
215
+ "type": "number",
216
+ "description": "The time to wait in seconds"
217
+ }
218
+ },
219
+ "required": [
220
+ "time"
221
+ ],
222
+ "additionalProperties": false,
223
+ "$schema": "http://json-schema.org/draft-07/schema#"
224
+ },
225
+ "browser_get_console_logs": {
226
+ "type": "object",
227
+ "properties": {},
228
+ "additionalProperties": false,
229
+ "$schema": "http://json-schema.org/draft-07/schema#"
230
+ },
231
+ "browser_screenshot": {
232
+ "type": "object",
233
+ "properties": {},
234
+ "additionalProperties": false,
235
+ "$schema": "http://json-schema.org/draft-07/schema#"
236
+ }
237
+ }
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "id": "prompts",
243
+ "capability": "prompts",
244
+ "status": "unsupported",
245
+ "durationMs": 0.0015829999993002275,
246
+ "message": "Prompts are not advertised by the target.",
247
+ "evidence": [
248
+ {
249
+ "endpoint": "prompts/list",
250
+ "advertised": false,
251
+ "responded": false,
252
+ "minimalShapePresent": false,
253
+ "diagnostics": []
254
+ }
255
+ ]
256
+ },
257
+ {
258
+ "id": "resources",
259
+ "capability": "resources",
260
+ "status": "pass",
261
+ "durationMs": 0.675042000000758,
262
+ "message": "Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported.",
263
+ "evidence": [
264
+ {
265
+ "endpoint": "resources/list",
266
+ "advertised": true,
267
+ "responded": true,
268
+ "minimalShapePresent": true,
269
+ "itemCount": 0,
270
+ "identifiers": [],
271
+ "diagnostics": []
272
+ },
273
+ {
274
+ "endpoint": "resources/templates/list",
275
+ "advertised": true,
276
+ "responded": false,
277
+ "minimalShapePresent": false,
278
+ "diagnostics": [
279
+ "MCP error -32601: Method not found"
280
+ ]
281
+ }
282
+ ]
283
+ },
284
+ {
285
+ "id": "security-lite",
286
+ "capability": "security-lite",
287
+ "status": "pass",
288
+ "durationMs": 0.03508300000066811,
289
+ "message": "No security issues detected (lightweight scan).",
290
+ "evidence": [
291
+ {
292
+ "endpoint": "security/scan-lite",
293
+ "advertised": true,
294
+ "responded": true,
295
+ "minimalShapePresent": true,
296
+ "itemCount": 0
297
+ }
298
+ ]
299
+ },
300
+ {
301
+ "id": "conformance",
302
+ "capability": "conformance",
303
+ "status": "pass",
304
+ "durationMs": 2.116834000000381,
305
+ "message": "All 7 conformance checks passed.",
306
+ "evidence": [
307
+ {
308
+ "endpoint": "conformance/check",
309
+ "advertised": true,
310
+ "responded": true,
311
+ "minimalShapePresent": true,
312
+ "itemCount": 7,
313
+ "identifiers": [],
314
+ "diagnostics": [
315
+ "[pass] capabilities-present: Server returned capabilities object.",
316
+ "[pass] server-info: Server provided initialization info.",
317
+ "[pass] tools-capability-match: tools/list returned 12 tool(s).",
318
+ "[pass] prompts-capability-match: Prompts not advertised — endpoint check skipped.",
319
+ "[pass] resources-capability-match: resources/list returned 0 resource(s).",
320
+ "[pass] tool-response-content: Tool \"browser_go_back\" response has valid content array.",
321
+ "[pass] error-handling: Server returned proper error code -32601 for unknown method."
322
+ ]
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "id": "schema-quality",
328
+ "capability": "schema-quality",
329
+ "status": "pass",
330
+ "durationMs": 0.5424579999998969,
331
+ "message": "All 12 item(s) have good schema quality.",
332
+ "evidence": [
333
+ {
334
+ "endpoint": "schema-quality/scan",
335
+ "advertised": true,
336
+ "responded": true,
337
+ "minimalShapePresent": true,
338
+ "itemCount": 0,
339
+ "identifiers": []
340
+ }
341
+ ]
342
+ },
343
+ {
344
+ "id": "security",
345
+ "capability": "security",
346
+ "status": "pass",
347
+ "durationMs": 0.24799999999959255,
348
+ "message": "No security issues detected.",
349
+ "evidence": [
350
+ {
351
+ "endpoint": "security/scan",
352
+ "advertised": true,
353
+ "responded": true,
354
+ "minimalShapePresent": true,
355
+ "itemCount": 0
356
+ }
357
+ ]
358
+ }
359
+ ],
360
+ "healthScore": {
361
+ "overall": 97,
362
+ "grade": "A",
363
+ "dimensions": [
364
+ {
365
+ "name": "Protocol Compliance",
366
+ "weight": 0.3,
367
+ "score": 100,
368
+ "details": [
369
+ "conformance: pass (100/100)"
370
+ ]
371
+ },
372
+ {
373
+ "name": "Schema Quality",
374
+ "weight": 0.2,
375
+ "score": 100,
376
+ "details": [
377
+ "schema-quality: pass (100/100)"
378
+ ]
379
+ },
380
+ {
381
+ "name": "Security",
382
+ "weight": 0.2,
383
+ "score": 100,
384
+ "details": [
385
+ "security-lite: pass (100/100)",
386
+ "security: pass (100/100)"
387
+ ]
388
+ },
389
+ {
390
+ "name": "Reliability",
391
+ "weight": 0.2,
392
+ "score": 83,
393
+ "details": [
394
+ "tools: pass (100/100)",
395
+ "prompts: unsupported (50/100)",
396
+ "resources: pass (100/100)"
397
+ ]
398
+ },
399
+ {
400
+ "name": "Performance",
401
+ "weight": 0.1,
402
+ "score": 100,
403
+ "details": [
404
+ "Connect: 903ms",
405
+ "p95 latency: 1ms (3 operations)"
406
+ ]
407
+ }
408
+ ]
409
+ },
410
+ "performanceMetrics": {
411
+ "connectMs": 902.8017089999994,
412
+ "toolsListMs": 1.2612079999998969,
413
+ "promptsListMs": 0.0015829999993002275,
414
+ "resourcesListMs": 0.675042000000758
415
+ }
416
+ }