@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.
- package/README.md +4 -10
- package/README.zh-CN.md +4 -10
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/enforce.d.ts +2 -2
- package/dist/src/commands/enforce.js +5 -8
- package/dist/src/commands/enforce.js.map +1 -1
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/test.js +2 -2
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/telemetry.js +2 -1
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/validate.js +5 -6
- package/dist/src/validate.js.map +1 -1
- package/docs/mcp-server-safety-index.md +68 -8
- package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
- package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
- package/docs/safety-index/artifacts/brave-search-server.json +341 -0
- package/docs/safety-index/artifacts/brave-search-server.md +201 -0
- package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
- package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
- package/docs/safety-index/artifacts/clay-server.json +66 -0
- package/docs/safety-index/artifacts/clay-server.md +106 -0
- package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
- package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
- package/docs/safety-index/artifacts/context7-server.json +85 -18
- package/docs/safety-index/artifacts/context7-server.md +52 -11
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
- package/docs/safety-index/artifacts/docker-server.json +395 -0
- package/docs/safety-index/artifacts/docker-server.md +204 -0
- package/docs/safety-index/artifacts/everything-server.json +145 -18
- package/docs/safety-index/artifacts/everything-server.md +56 -11
- package/docs/safety-index/artifacts/exa-server.json +400 -0
- package/docs/safety-index/artifacts/exa-server.md +207 -0
- package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
- package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
- package/docs/safety-index/artifacts/fetch-server.json +66 -0
- package/docs/safety-index/artifacts/fetch-server.md +106 -0
- package/docs/safety-index/artifacts/figma-server.json +1766 -0
- package/docs/safety-index/artifacts/figma-server.md +256 -0
- package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
- package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
- package/docs/safety-index/artifacts/filesystem-server.json +426 -22
- package/docs/safety-index/artifacts/filesystem-server.md +73 -12
- package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
- package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
- package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
- package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
- package/docs/safety-index/artifacts/gitlab-server.json +229 -0
- package/docs/safety-index/artifacts/gitlab-server.md +753 -0
- package/docs/safety-index/artifacts/gmail-server.json +66 -0
- package/docs/safety-index/artifacts/gmail-server.md +106 -0
- package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
- package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
- package/docs/safety-index/artifacts/google-drive-server.json +66 -0
- package/docs/safety-index/artifacts/google-drive-server.md +106 -0
- package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
- package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
- package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
- package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
- package/docs/safety-index/artifacts/huggingface-server.json +66 -0
- package/docs/safety-index/artifacts/huggingface-server.md +106 -0
- package/docs/safety-index/artifacts/jina-server.json +66 -0
- package/docs/safety-index/artifacts/jina-server.md +106 -0
- package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
- package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
- package/docs/safety-index/artifacts/linear-server.json +1494 -0
- package/docs/safety-index/artifacts/linear-server.md +237 -0
- package/docs/safety-index/artifacts/memory-server.json +191 -18
- package/docs/safety-index/artifacts/memory-server.md +51 -9
- package/docs/safety-index/artifacts/mongodb-server.json +66 -0
- package/docs/safety-index/artifacts/mongodb-server.md +106 -0
- package/docs/safety-index/artifacts/neon-server.json +66 -0
- package/docs/safety-index/artifacts/neon-server.md +103 -0
- package/docs/safety-index/artifacts/notion-server.json +7151 -0
- package/docs/safety-index/artifacts/notion-server.md +236 -0
- package/docs/safety-index/artifacts/onesignal-server.json +66 -0
- package/docs/safety-index/artifacts/onesignal-server.md +106 -0
- package/docs/safety-index/artifacts/opentofu-server.json +31 -19
- package/docs/safety-index/artifacts/opentofu-server.md +28 -10
- package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
- package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
- package/docs/safety-index/artifacts/postgres-server.json +330 -0
- package/docs/safety-index/artifacts/postgres-server.md +208 -0
- package/docs/safety-index/artifacts/promptopia-server.json +96 -19
- package/docs/safety-index/artifacts/promptopia-server.md +43 -9
- package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
- package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
- package/docs/safety-index/artifacts/qdrant-server.json +66 -0
- package/docs/safety-index/artifacts/qdrant-server.md +106 -0
- package/docs/safety-index/artifacts/reddit-server.json +66 -0
- package/docs/safety-index/artifacts/reddit-server.md +106 -0
- package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
- package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
- package/docs/safety-index/artifacts/sentry-server.json +66 -0
- package/docs/safety-index/artifacts/sentry-server.md +106 -0
- package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
- package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
- package/docs/safety-index/artifacts/slack-server.json +66 -0
- package/docs/safety-index/artifacts/slack-server.md +102 -0
- package/docs/safety-index/artifacts/sqlite-server.json +67 -0
- package/docs/safety-index/artifacts/sqlite-server.md +106 -0
- package/docs/safety-index/artifacts/stripe-server.json +66 -0
- package/docs/safety-index/artifacts/stripe-server.md +106 -0
- package/docs/safety-index/artifacts/supabase-server.json +66 -0
- package/docs/safety-index/artifacts/supabase-server.md +102 -0
- package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
- package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
- package/docs/safety-index/artifacts/ui5-mcp-server.json +24 -24
- package/docs/safety-index/artifacts/ui5-mcp-server.md +13 -13
- package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
- package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
- package/docs/safety-index/targets.json +535 -0
- package/package.json +1 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# MCP Observatory Run Report
|
|
2
2
|
|
|
3
|
-
Generated at 2026-07-
|
|
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-
|
|
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 |
|
|
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
|
|
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 |
|
|
51
|
-
| healthy | tools | pass | 2.
|
|
52
|
-
| review |
|
|
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.
|
|
56
|
-
| act now | security | fail |
|
|
57
|
-
| act now | security-lite | fail | 0.
|
|
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
|
|
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 (
|
|
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: `
|
|
82
|
-
- Identifiers: browser_close, browser_resize, browser_console_messages, browser_handle_dialog, browser_evaluate (+
|
|
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
|
|
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: `
|
|
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 "
|
|
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-
|
|
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
|
+
}
|