@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,13 +1,13 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T19:49:55.359Z
3
+ Generated at 2026-07-12T23:44:10.399Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
7
7
  - Target: `playwright-mcp-server`
8
8
  - Adapter: `local-process`
9
9
  - Command: `npx -y @playwright/mcp`
10
- - Server: `Playwright 1.62.0-alpha-2026-06-29`
10
+ - Server: `Playwright 1.62.0-alpha-1783623505000`
11
11
  - Platform: `darwin 25.5.0`
12
12
  - Node: `v22.22.1`
13
13
 
@@ -25,20 +25,71 @@ Generated at 2026-07-06T19:49:55.359Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | fail | 8 | 2 | 3 | 1 | 2 | 0 | 0 |
28
+ | fail | 9 | 2 | 3 | 2 | 2 | 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 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.; attack-sim: Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.; security: Found 6 security finding(s): 2 high, 2 medium, 2 low.
33
+ - Top risks: runtime-profile: Detected 7 potential egress target(s) and 21 potential state mutation(s) with high confidence.; schema-quality: Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info.; attack-sim: Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.
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: security-lite, security, attack-sim
36
- - Partial or flaky checks: schema-quality
36
+ - Partial or flaky checks: runtime-profile, schema-quality
37
37
  - Skipped checks: none
38
38
  - Unsupported checks: prompts, resources
39
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
+ ## 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
+ | Data to drop, as a map of MIME type to string value (e.g. {"text/plain": "hello", "text/uri-list": "https://example.com"}). | unknown | description_analysis | medium |
56
+ | url | unknown | tool_schema | high |
57
+ | The URL to navigate to | unknown | description_analysis | medium |
58
+ | browser_navigate | unknown | description_analysis | low |
59
+ | Only return requests whose URL matches this regexp (e.g. "/api/.*user"). | unknown | description_analysis | medium |
60
+ | url | unknown | tool_schema | high |
61
+ | URL to navigate to in the new tab, used for new. | 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 | working_directory | tool_schema |
70
+ | filesystem | write | working_directory | description_analysis |
71
+ | filesystem | write | working_directory | tool_schema |
72
+ | filesystem | write | working_directory | description_analysis |
73
+ | filesystem | write | working_directory | description_analysis |
74
+ | filesystem | write | working_directory | description_analysis |
75
+ | filesystem | write | working_directory | tool_schema |
76
+ | filesystem | write | working_directory | description_analysis |
77
+ | filesystem | write | working_directory | tool_schema |
78
+ | filesystem | write | working_directory | description_analysis |
79
+ | filesystem | write | working_directory | description_analysis |
80
+ | filesystem | execute | working_directory | tool_schema |
81
+ | filesystem | write | working_directory | description_analysis |
82
+ | filesystem | write | working_directory | description_analysis |
83
+ | filesystem | write | working_directory | description_analysis |
84
+ | filesystem | execute | working_directory | description_analysis |
85
+ | filesystem | write | working_directory | tool_schema |
86
+ | filesystem | write | working_directory | description_analysis |
87
+ | filesystem | write | working_directory | tool_schema |
88
+ | filesystem | write | working_directory | description_analysis |
89
+ | filesystem | write | working_directory | description_analysis |
90
+
91
+ _Analyzed at 2026-07-12T23:44:11.239Z_
92
+
42
93
  ## Regressions and Recoveries
43
94
 
44
95
  _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
@@ -47,14 +98,15 @@ _Use the `diff` command against another run artifact to classify regressions and
47
98
 
48
99
  | Focus | Check | Status | Duration (ms) | Message |
49
100
  | --- | --- | --- | --- | --- |
50
- | healthy | conformance | pass | 987.09 | All 7 conformance checks passed. |
51
- | healthy | tools | pass | 2.86 | Advertised capability responded with the minimal expected shape (23 items). |
52
- | review | schema-quality | partial | 1.85 | Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info. |
101
+ | healthy | conformance | pass | 717.02 | All 7 conformance checks passed. |
102
+ | healthy | tools | pass | 2.85 | Advertised capability responded with the minimal expected shape (24 items). |
103
+ | review | runtime-profile | partial | 0.21 | Detected 7 potential egress target(s) and 21 potential state mutation(s) with high confidence. |
104
+ | review | schema-quality | partial | 1.38 | Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info. |
53
105
  | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
54
106
  | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
55
- | act now | attack-sim | fail | 1.00 | Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low. |
56
- | act now | security | fail | 2.53 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
57
- | act now | security-lite | fail | 0.05 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
107
+ | act now | attack-sim | fail | 1.05 | Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low. |
108
+ | act now | security | fail | 0.89 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
109
+ | act now | security-lite | fail | 0.06 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
58
110
 
59
111
  ## Evidence Snippets
60
112
 
@@ -68,31 +120,43 @@ Summary: All 7 conformance checks passed.
68
120
  - Minimal shape present: `true`
69
121
  - Item count: `7`
70
122
  - Identifiers: none
71
- - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 23 tool(s). (+4 more)
123
+ - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 24 tool(s). (+4 more)
72
124
 
73
125
  ### tools — pass
74
126
 
75
- Summary: Advertised capability responded with the minimal expected shape (23 items).
127
+ Summary: Advertised capability responded with the minimal expected shape (24 items).
76
128
 
77
129
  - Endpoint: `tools/list`
78
130
  - Advertised: `true`
79
131
  - Responded: `true`
80
132
  - Minimal shape present: `true`
81
- - Item count: `23`
82
- - Identifiers: browser_close, browser_resize, browser_console_messages, browser_handle_dialog, browser_evaluate (+18 more)
133
+ - Item count: `24`
134
+ - Identifiers: browser_close, browser_resize, browser_console_messages, browser_handle_dialog, browser_evaluate (+19 more)
83
135
  - Diagnostics: none
84
136
 
137
+ ### runtime-profile — partial
138
+
139
+ Summary: Detected 7 potential egress target(s) and 21 potential state mutation(s) with high confidence.
140
+
141
+ - Endpoint: `runtime-profile/analyze`
142
+ - Advertised: `true`
143
+ - Responded: `true`
144
+ - Minimal shape present: `true`
145
+ - Item count: `28`
146
+ - Identifiers: none
147
+ - Diagnostics: Egress entries: 7, State mutations: 21, Confidence: high
148
+
85
149
  ### schema-quality — partial
86
150
 
87
- Summary: Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.
151
+ Summary: Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info.
88
152
 
89
153
  - Endpoint: `schema-quality/scan`
90
154
  - Advertised: `true`
91
155
  - Responded: `true`
92
156
  - Minimal shape present: `true`
93
- - Item count: `4`
94
- - Identifiers: browser_file_upload, browser_run_code_unsafe, browser_snapshot, browser_wait_for
95
- - Diagnostics: [info] tool "browser_file_upload": Has properties but no 'required' array declared, [info] tool "browser_run_code_unsafe": Has properties but no 'required' array declared, [info] tool "browser_snapshot": Has properties but no 'required' array declared (+1 more)
157
+ - Item count: `5`
158
+ - Identifiers: browser_file_upload, browser_find, browser_run_code_unsafe, browser_snapshot, browser_wait_for
159
+ - Diagnostics: [info] tool "browser_file_upload": Has properties but no 'required' array declared, [info] tool "browser_find": Has properties but no 'required' array declared, [info] tool "browser_run_code_unsafe": Has properties but no 'required' array declared (+2 more)
96
160
 
97
161
  ### prompts — unsupported
98
162
 
@@ -165,5 +229,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
165
229
 
166
230
  - Artifact type: `run`
167
231
  - Schema version: `1.0.0`
168
- - Run ID: `run_2026-07-06T194955359Z_d769bb31`
232
+ - Run ID: `run_2026-07-12T234410399Z_1a4faea8`
169
233
  - Gate: `fail`
@@ -0,0 +1,330 @@
1
+ {
2
+ "artifactType": "run",
3
+ "schemaVersion": "1.0.0",
4
+ "gate": "fail",
5
+ "runId": "run_2026-07-12T234429948Z_a99275fd",
6
+ "createdAt": "2026-07-12T23:44:29.948Z",
7
+ "toolVersion": "1.31.0",
8
+ "target": {
9
+ "targetId": "postgres-server",
10
+ "adapter": "local-process",
11
+ "command": "npx",
12
+ "args": [
13
+ "-y",
14
+ "@modelcontextprotocol/server-postgres",
15
+ "postgres://localhost:5432/db"
16
+ ],
17
+ "cwd": ".",
18
+ "metadata": {
19
+ "package": "@modelcontextprotocol/server-postgres",
20
+ "purpose": "mcp-safety-index",
21
+ "riskClass": "Database mutation",
22
+ "failureClass": "SQL query boundary",
23
+ "whyItMatters": "PostgreSQL MCP servers can run arbitrary SQL queries against connected databases — a high-trust data mutation surface."
24
+ },
25
+ "serverName": "example-servers/postgres",
26
+ "serverVersion": "0.1.0"
27
+ },
28
+ "environment": {
29
+ "platform": "darwin 25.5.0",
30
+ "nodeVersion": "v22.22.1"
31
+ },
32
+ "summary": {
33
+ "total": 9,
34
+ "pass": 5,
35
+ "fail": 1,
36
+ "partial": 2,
37
+ "unsupported": 1,
38
+ "flaky": 0,
39
+ "skipped": 0,
40
+ "gate": "fail"
41
+ },
42
+ "checks": [
43
+ {
44
+ "id": "tools",
45
+ "capability": "tools",
46
+ "status": "pass",
47
+ "durationMs": 0.3888340000048629,
48
+ "message": "Advertised capability responded with the minimal expected shape (1 item).",
49
+ "evidence": [
50
+ {
51
+ "endpoint": "tools/list",
52
+ "advertised": true,
53
+ "responded": true,
54
+ "minimalShapePresent": true,
55
+ "itemCount": 1,
56
+ "identifiers": [
57
+ "query"
58
+ ],
59
+ "diagnostics": [],
60
+ "schemas": {
61
+ "query": {
62
+ "type": "object",
63
+ "properties": {
64
+ "sql": {
65
+ "type": "string"
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ ]
72
+ },
73
+ {
74
+ "id": "prompts",
75
+ "capability": "prompts",
76
+ "status": "unsupported",
77
+ "durationMs": 0.0008339999985764734,
78
+ "message": "Prompts are not advertised by the target.",
79
+ "evidence": [
80
+ {
81
+ "endpoint": "prompts/list",
82
+ "advertised": false,
83
+ "responded": false,
84
+ "minimalShapePresent": false,
85
+ "diagnostics": []
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "id": "resources",
91
+ "capability": "resources",
92
+ "status": "fail",
93
+ "durationMs": 6.440833000000566,
94
+ "message": "Advertised capability did not respond successfully.",
95
+ "evidence": [
96
+ {
97
+ "endpoint": "resources/list",
98
+ "advertised": true,
99
+ "responded": false,
100
+ "minimalShapePresent": false,
101
+ "diagnostics": [
102
+ "MCP error -32603: "
103
+ ]
104
+ },
105
+ {
106
+ "endpoint": "resources/templates/list",
107
+ "advertised": true,
108
+ "responded": false,
109
+ "minimalShapePresent": false,
110
+ "diagnostics": [
111
+ "MCP error -32601: Method not found"
112
+ ]
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ "id": "security-lite",
118
+ "capability": "security-lite",
119
+ "status": "pass",
120
+ "durationMs": 0.019625000000814907,
121
+ "message": "No security issues detected (lightweight scan).",
122
+ "evidence": [
123
+ {
124
+ "endpoint": "security/scan-lite",
125
+ "advertised": true,
126
+ "responded": true,
127
+ "minimalShapePresent": true,
128
+ "itemCount": 0
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "id": "runtime-profile",
134
+ "capability": "runtime-profile",
135
+ "status": "pass",
136
+ "durationMs": 0.033833000001322944,
137
+ "message": "Detected 0 potential egress target(s) and 1 potential state mutation(s) with low confidence.",
138
+ "evidence": [
139
+ {
140
+ "endpoint": "runtime-profile/analyze",
141
+ "advertised": true,
142
+ "responded": true,
143
+ "minimalShapePresent": true,
144
+ "itemCount": 1,
145
+ "diagnostics": [
146
+ "Egress entries: 0",
147
+ "State mutations: 1",
148
+ "Confidence: medium"
149
+ ],
150
+ "findings": [
151
+ {
152
+ "resource": "filesystem",
153
+ "operation": "write",
154
+ "scope": "working_directory",
155
+ "source": "description_analysis"
156
+ }
157
+ ]
158
+ }
159
+ ]
160
+ },
161
+ {
162
+ "id": "conformance",
163
+ "capability": "conformance",
164
+ "status": "partial",
165
+ "durationMs": 1.618291999999201,
166
+ "message": "5/7 conformance checks passed, 2 failed.",
167
+ "evidence": [
168
+ {
169
+ "endpoint": "conformance/check",
170
+ "advertised": true,
171
+ "responded": true,
172
+ "minimalShapePresent": false,
173
+ "itemCount": 7,
174
+ "identifiers": [
175
+ "resources-capability-match",
176
+ "tool-response-content"
177
+ ],
178
+ "diagnostics": [
179
+ "[pass] capabilities-present: Server returned capabilities object.",
180
+ "[pass] server-info: Server provided initialization info.",
181
+ "[pass] tools-capability-match: tools/list returned 1 tool(s).",
182
+ "[pass] prompts-capability-match: Prompts not advertised — endpoint check skipped.",
183
+ "[FAIL] resources-capability-match: Advertised resources but resources/list failed: MCP error -32603: ",
184
+ "[FAIL] tool-response-content: Tool response content check failed: MCP error -32603: ",
185
+ "[pass] error-handling: Server returned proper error code -32601 for unknown method."
186
+ ]
187
+ }
188
+ ]
189
+ },
190
+ {
191
+ "id": "schema-quality",
192
+ "capability": "schema-quality",
193
+ "status": "partial",
194
+ "durationMs": 0.6995000000024447,
195
+ "message": "Found 2 quality finding(s) across 1 item(s): 0 warnings, 2 info.",
196
+ "evidence": [
197
+ {
198
+ "endpoint": "schema-quality/scan",
199
+ "advertised": true,
200
+ "responded": true,
201
+ "minimalShapePresent": true,
202
+ "itemCount": 2,
203
+ "identifiers": [
204
+ "query"
205
+ ],
206
+ "diagnostics": [
207
+ "[info] tool \"query\": Has properties but no 'required' array declared",
208
+ "[info] tool \"query\": Property 'sql' missing description"
209
+ ],
210
+ "findings": [
211
+ {
212
+ "itemType": "tool",
213
+ "itemName": "query",
214
+ "issue": "Has properties but no 'required' array declared",
215
+ "severity": "info"
216
+ },
217
+ {
218
+ "itemType": "tool",
219
+ "itemName": "query",
220
+ "issue": "Property 'sql' missing description",
221
+ "severity": "info"
222
+ }
223
+ ]
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "id": "security",
229
+ "capability": "security",
230
+ "status": "pass",
231
+ "durationMs": 0.07745799999975134,
232
+ "message": "No security issues detected.",
233
+ "evidence": [
234
+ {
235
+ "endpoint": "security/scan",
236
+ "advertised": true,
237
+ "responded": true,
238
+ "minimalShapePresent": true,
239
+ "itemCount": 0
240
+ }
241
+ ]
242
+ },
243
+ {
244
+ "id": "attack-sim",
245
+ "capability": "attack-sim",
246
+ "status": "pass",
247
+ "durationMs": 0.9408750000002328,
248
+ "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
249
+ "evidence": [
250
+ {
251
+ "endpoint": "attack-sim/safe",
252
+ "advertised": true,
253
+ "responded": true,
254
+ "minimalShapePresent": true,
255
+ "itemCount": 0,
256
+ "identifiers": []
257
+ }
258
+ ]
259
+ }
260
+ ],
261
+ "healthScore": {
262
+ "overall": 70,
263
+ "grade": "C",
264
+ "dimensions": [
265
+ {
266
+ "name": "Protocol Compliance",
267
+ "weight": 0.3,
268
+ "score": 60,
269
+ "details": [
270
+ "conformance: partial (60/100)"
271
+ ]
272
+ },
273
+ {
274
+ "name": "Schema Quality",
275
+ "weight": 0.2,
276
+ "score": 60,
277
+ "details": [
278
+ "schema-quality: partial (60/100)"
279
+ ]
280
+ },
281
+ {
282
+ "name": "Security",
283
+ "weight": 0.2,
284
+ "score": 100,
285
+ "details": [
286
+ "security-lite: pass (100/100)",
287
+ "security: pass (100/100)",
288
+ "attack-sim: pass (100/100)"
289
+ ]
290
+ },
291
+ {
292
+ "name": "Reliability",
293
+ "weight": 0.2,
294
+ "score": 50,
295
+ "details": [
296
+ "tools: pass (100/100)",
297
+ "prompts: unsupported (50/100)",
298
+ "resources: fail (0/100)"
299
+ ]
300
+ },
301
+ {
302
+ "name": "Performance",
303
+ "weight": 0.1,
304
+ "score": 100,
305
+ "details": [
306
+ "Connect: 759ms",
307
+ "p95 latency: 6ms (3 operations)"
308
+ ]
309
+ }
310
+ ]
311
+ },
312
+ "performanceMetrics": {
313
+ "connectMs": 759.3523330000025,
314
+ "toolsListMs": 0.3888340000048629,
315
+ "promptsListMs": 0.0008339999985764734,
316
+ "resourcesListMs": 6.440833000000566
317
+ },
318
+ "runtimeProfile": {
319
+ "stateMutations": [
320
+ {
321
+ "resource": "filesystem",
322
+ "operation": "write",
323
+ "scope": "working_directory",
324
+ "source": "description_analysis"
325
+ }
326
+ ],
327
+ "analyzedAt": "2026-07-12T23:44:30.715Z",
328
+ "confidence": "medium"
329
+ }
330
+ }