@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.
- package/COMMERCIAL.md +5 -3
- package/PRIVACY.md +5 -2
- package/README.md +28 -13
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/init-ci.d.ts +3 -0
- package/dist/src/commands/init-ci.js +26 -9
- package/dist/src/commands/init-ci.js.map +1 -1
- package/dist/src/commercial.js +2 -2
- package/dist/src/commercial.js.map +1 -1
- package/dist/src/reporters/pr-comment.js +6 -2
- package/dist/src/reporters/pr-comment.js.map +1 -1
- package/dist/src/score.js +1 -1
- package/dist/src/score.js.map +1 -1
- package/dist/src/validate.js +58 -3
- package/dist/src/validate.js.map +1 -1
- package/docs/certification-campaign-template.md +10 -10
- package/docs/certification-distribution.md +16 -0
- package/docs/directory-listing-copy.md +12 -5
- package/docs/distribution-launch.md +5 -5
- package/docs/enterprise-outreach-playbook.md +2 -2
- package/docs/mcp-lock-files.md +63 -0
- package/docs/mcp-safety-report-latest.md +16 -7
- package/docs/mcp-security-field-guide.md +97 -0
- package/docs/mcp-server-safety-index.md +61 -0
- package/docs/methodology.md +90 -0
- package/docs/metrics-dashboard.md +105 -0
- package/docs/paid-pilot-offer.md +74 -0
- package/docs/project-case-study.md +77 -43
- package/docs/proof.md +42 -12
- package/docs/public-post-drafts.md +98 -0
- package/docs/publish-readiness.md +6 -4
- package/docs/reference-evaluations.md +134 -0
- package/docs/safety-index/artifacts/antv-chart-server.json +2765 -0
- package/docs/safety-index/artifacts/antv-chart-server.md +156 -0
- package/docs/safety-index/artifacts/browsermcp-server.json +416 -0
- package/docs/safety-index/artifacts/browsermcp-server.md +163 -0
- package/docs/safety-index/artifacts/context7-server.json +286 -0
- package/docs/safety-index/artifacts/context7-server.md +163 -0
- package/docs/safety-index/artifacts/everything-server.json +482 -0
- package/docs/safety-index/artifacts/everything-server.md +163 -0
- package/docs/safety-index/artifacts/executeautomation-playwright-server.json +955 -0
- package/docs/safety-index/artifacts/executeautomation-playwright-server.md +163 -0
- package/docs/safety-index/artifacts/filesystem-server.json +583 -0
- package/docs/safety-index/artifacts/filesystem-server.md +156 -0
- package/docs/safety-index/artifacts/memory-server.json +469 -0
- package/docs/safety-index/artifacts/memory-server.md +156 -0
- package/docs/safety-index/artifacts/opentofu-server.json +387 -0
- package/docs/safety-index/artifacts/opentofu-server.md +163 -0
- package/docs/safety-index/artifacts/playwright-mcp-server.json +919 -0
- package/docs/safety-index/artifacts/playwright-mcp-server.md +156 -0
- package/docs/safety-index/artifacts/promptopia-server.json +442 -0
- package/docs/safety-index/artifacts/promptopia-server.md +156 -0
- package/docs/safety-index/artifacts/puppeteer-server.json +377 -0
- package/docs/safety-index/artifacts/puppeteer-server.md +163 -0
- package/docs/safety-index/artifacts/ref-tools-server.json +262 -0
- package/docs/safety-index/artifacts/ref-tools-server.md +156 -0
- package/docs/safety-index/artifacts/sequential-thinking-server.json +286 -0
- package/docs/safety-index/artifacts/sequential-thinking-server.md +156 -0
- package/docs/safety-index/maintainer-note-template.md +25 -0
- package/docs/safety-index/targets.json +192 -0
- package/package.json +17 -13
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-06-24T02:07:32.035Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `playwright-mcp-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y @playwright/mcp`
|
|
10
|
+
- Server: `Playwright 1.61.0-alpha-1781023400000`
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
**Health Score: 65/100 (D)**
|
|
17
|
+
|
|
18
|
+
| Dimension | Score | Weight |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| Protocol Compliance | 100/100 | 30% |
|
|
21
|
+
| Schema Quality | 60/100 | 20% |
|
|
22
|
+
| Security | 0/100 | 20% |
|
|
23
|
+
| Reliability | 67/100 | 20% |
|
|
24
|
+
| Performance | 100/100 | 10% |
|
|
25
|
+
|
|
26
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| fail | 7 | 2 | 2 | 1 | 2 | 0 | 0 |
|
|
29
|
+
|
|
30
|
+
## At a Glance
|
|
31
|
+
|
|
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.; security: Found 6 security finding(s): 2 high, 2 medium, 2 low.; security-lite: Found 6 security finding(s): 2 high, 2 medium, 2 low.
|
|
34
|
+
- Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
|
|
35
|
+
- Failing checks: security-lite, security
|
|
36
|
+
- Partial or flaky checks: schema-quality
|
|
37
|
+
- Skipped checks: none
|
|
38
|
+
- Unsupported checks: prompts, resources
|
|
39
|
+
- Suggested next step: Start with the failing checks: security-lite, security.
|
|
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 | 3062.42 | All 7 conformance checks passed. |
|
|
51
|
+
| healthy | tools | pass | 59.04 | Advertised capability responded with the minimal expected shape (23 items). |
|
|
52
|
+
| review | schema-quality | partial | 7.27 | Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info. |
|
|
53
|
+
| confirm intent | prompts | unsupported | 0.01 | Prompts are not advertised by the target. |
|
|
54
|
+
| confirm intent | resources | unsupported | 0.01 | Resources are not advertised by the target. |
|
|
55
|
+
| act now | security | fail | 25.69 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
|
|
56
|
+
| act now | security-lite | fail | 0.25 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
|
|
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 23 tool(s). (+4 more)
|
|
71
|
+
|
|
72
|
+
### tools — pass
|
|
73
|
+
|
|
74
|
+
Summary: Advertised capability responded with the minimal expected shape (23 items).
|
|
75
|
+
|
|
76
|
+
- Endpoint: `tools/list`
|
|
77
|
+
- Advertised: `true`
|
|
78
|
+
- Responded: `true`
|
|
79
|
+
- Minimal shape present: `true`
|
|
80
|
+
- Item count: `23`
|
|
81
|
+
- Identifiers: browser_close, browser_resize, browser_console_messages, browser_handle_dialog, browser_evaluate (+18 more)
|
|
82
|
+
- Diagnostics: none
|
|
83
|
+
|
|
84
|
+
### schema-quality — partial
|
|
85
|
+
|
|
86
|
+
Summary: Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.
|
|
87
|
+
|
|
88
|
+
- Endpoint: `schema-quality/scan`
|
|
89
|
+
- Advertised: `true`
|
|
90
|
+
- Responded: `true`
|
|
91
|
+
- Minimal shape present: `true`
|
|
92
|
+
- Item count: `4`
|
|
93
|
+
- Identifiers: browser_file_upload, browser_run_code_unsafe, browser_snapshot, browser_wait_for
|
|
94
|
+
- 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)
|
|
95
|
+
|
|
96
|
+
### prompts — unsupported
|
|
97
|
+
|
|
98
|
+
Summary: Prompts are not advertised by the target.
|
|
99
|
+
|
|
100
|
+
- Endpoint: `prompts/list`
|
|
101
|
+
- Advertised: `false`
|
|
102
|
+
- Responded: `false`
|
|
103
|
+
- Minimal shape present: `false`
|
|
104
|
+
- Item count: `0`
|
|
105
|
+
- Identifiers: none
|
|
106
|
+
- Diagnostics: none
|
|
107
|
+
|
|
108
|
+
### resources — unsupported
|
|
109
|
+
|
|
110
|
+
Summary: Resources are not advertised by the target.
|
|
111
|
+
|
|
112
|
+
- Endpoint: `resources/list | resources/templates/list`
|
|
113
|
+
- Advertised: `false`
|
|
114
|
+
- Responded: `false`
|
|
115
|
+
- Minimal shape present: `false`
|
|
116
|
+
- Item count: `0`
|
|
117
|
+
- Identifiers: none
|
|
118
|
+
- Diagnostics: none
|
|
119
|
+
|
|
120
|
+
### security — fail
|
|
121
|
+
|
|
122
|
+
Summary: Found 6 security finding(s): 2 high, 2 medium, 2 low.
|
|
123
|
+
|
|
124
|
+
- Endpoint: `security/scan`
|
|
125
|
+
- Advertised: `true`
|
|
126
|
+
- Responded: `true`
|
|
127
|
+
- Minimal shape present: `true`
|
|
128
|
+
- Item count: `6`
|
|
129
|
+
- Identifiers: browser_close, browser_evaluate, browser_navigate_back, browser_run_code_unsafe
|
|
130
|
+
- Diagnostics: [low] Tool "browser_close" has an empty schema but is marked as destructive., [high] Tool "browser_evaluate" name suggests command execution capability., [medium] Tool "browser_evaluate" accepts filesystem paths and has destructive capabilities. (+3 more)
|
|
131
|
+
|
|
132
|
+
### security-lite — fail
|
|
133
|
+
|
|
134
|
+
Summary: Found 6 security finding(s): 2 high, 2 medium, 2 low.
|
|
135
|
+
|
|
136
|
+
- Endpoint: `security/scan-lite`
|
|
137
|
+
- Advertised: `true`
|
|
138
|
+
- Responded: `true`
|
|
139
|
+
- Minimal shape present: `true`
|
|
140
|
+
- Item count: `6`
|
|
141
|
+
- Identifiers: browser_close, browser_evaluate, browser_navigate_back, browser_run_code_unsafe
|
|
142
|
+
- Diagnostics: [low] Tool "browser_close" has an empty schema but is marked as destructive., [high] Tool "browser_evaluate" name suggests command execution capability., [medium] Tool "browser_evaluate" accepts filesystem paths and has destructive capabilities. (+3 more)
|
|
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-24T020732035Z_b86ac3a9`
|
|
156
|
+
- Gate: `fail`
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifactType": "run",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"gate": "pass",
|
|
5
|
+
"runId": "run_2026-06-24T020725699Z_7cde9d35",
|
|
6
|
+
"createdAt": "2026-06-24T02:07:25.699Z",
|
|
7
|
+
"toolVersion": "0.24.0",
|
|
8
|
+
"target": {
|
|
9
|
+
"targetId": "promptopia-server",
|
|
10
|
+
"adapter": "local-process",
|
|
11
|
+
"command": "npx",
|
|
12
|
+
"args": [
|
|
13
|
+
"-y",
|
|
14
|
+
"promptopia-mcp"
|
|
15
|
+
],
|
|
16
|
+
"cwd": ".",
|
|
17
|
+
"metadata": {
|
|
18
|
+
"package": "promptopia-mcp",
|
|
19
|
+
"purpose": "mcp-safety-index",
|
|
20
|
+
"riskClass": "Prompt surface",
|
|
21
|
+
"failureClass": "Prompt/resource contract",
|
|
22
|
+
"whyItMatters": "Prompt-serving MCP packages need predictable prompt inventory and startup behavior."
|
|
23
|
+
},
|
|
24
|
+
"serverName": "promptopia-mcp",
|
|
25
|
+
"serverVersion": "1.1.0"
|
|
26
|
+
},
|
|
27
|
+
"environment": {
|
|
28
|
+
"platform": "darwin 25.5.0",
|
|
29
|
+
"nodeVersion": "v22.22.1"
|
|
30
|
+
},
|
|
31
|
+
"summary": {
|
|
32
|
+
"total": 7,
|
|
33
|
+
"pass": 5,
|
|
34
|
+
"fail": 0,
|
|
35
|
+
"partial": 1,
|
|
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.030083999999988,
|
|
47
|
+
"message": "Advertised capability responded with the minimal expected shape (7 items).",
|
|
48
|
+
"evidence": [
|
|
49
|
+
{
|
|
50
|
+
"endpoint": "tools/list",
|
|
51
|
+
"advertised": true,
|
|
52
|
+
"responded": true,
|
|
53
|
+
"minimalShapePresent": true,
|
|
54
|
+
"itemCount": 7,
|
|
55
|
+
"identifiers": [
|
|
56
|
+
"add_prompt",
|
|
57
|
+
"update_prompt",
|
|
58
|
+
"get_prompt",
|
|
59
|
+
"list_prompts",
|
|
60
|
+
"delete_prompt",
|
|
61
|
+
"apply_prompt",
|
|
62
|
+
"add_multi_message_prompt"
|
|
63
|
+
],
|
|
64
|
+
"diagnostics": [
|
|
65
|
+
"Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts",
|
|
66
|
+
"promptopia-mcp MCP server running (v1.1.0)"
|
|
67
|
+
],
|
|
68
|
+
"schemas": {
|
|
69
|
+
"add_prompt": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"properties": {
|
|
72
|
+
"name": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"description": "Name of the prompt"
|
|
75
|
+
},
|
|
76
|
+
"content": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "Content of the prompt with variables in {{variable}} format"
|
|
79
|
+
},
|
|
80
|
+
"description": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Description of the prompt"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"required": [
|
|
86
|
+
"name",
|
|
87
|
+
"content"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"update_prompt": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"properties": {
|
|
93
|
+
"id": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"description": "ID of the prompt to update"
|
|
96
|
+
},
|
|
97
|
+
"name": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"description": "New name for the prompt"
|
|
100
|
+
},
|
|
101
|
+
"description": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"description": "New description for the prompt"
|
|
104
|
+
},
|
|
105
|
+
"messages": {
|
|
106
|
+
"type": "array",
|
|
107
|
+
"description": "New messages (converts single content to multi-message format)",
|
|
108
|
+
"items": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"properties": {
|
|
111
|
+
"role": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"enum": [
|
|
114
|
+
"user",
|
|
115
|
+
"assistant"
|
|
116
|
+
],
|
|
117
|
+
"description": "Role of the message sender"
|
|
118
|
+
},
|
|
119
|
+
"content": {
|
|
120
|
+
"type": "object",
|
|
121
|
+
"properties": {
|
|
122
|
+
"type": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"enum": [
|
|
125
|
+
"text",
|
|
126
|
+
"image"
|
|
127
|
+
],
|
|
128
|
+
"description": "Type of content"
|
|
129
|
+
},
|
|
130
|
+
"text": {
|
|
131
|
+
"type": "string",
|
|
132
|
+
"description": "Text content (required for text type)"
|
|
133
|
+
},
|
|
134
|
+
"image": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"description": "Image data (required for image type)"
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"required": [
|
|
140
|
+
"type"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"required": [
|
|
145
|
+
"role",
|
|
146
|
+
"content"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"required": [
|
|
152
|
+
"id"
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
"get_prompt": {
|
|
156
|
+
"type": "object",
|
|
157
|
+
"properties": {
|
|
158
|
+
"id": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"description": "ID of the prompt to retrieve"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"required": [
|
|
164
|
+
"id"
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
"list_prompts": {
|
|
168
|
+
"type": "object",
|
|
169
|
+
"properties": {}
|
|
170
|
+
},
|
|
171
|
+
"delete_prompt": {
|
|
172
|
+
"type": "object",
|
|
173
|
+
"properties": {
|
|
174
|
+
"id": {
|
|
175
|
+
"type": "string",
|
|
176
|
+
"description": "ID of the prompt to delete"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"required": [
|
|
180
|
+
"id"
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"apply_prompt": {
|
|
184
|
+
"type": "object",
|
|
185
|
+
"properties": {
|
|
186
|
+
"id": {
|
|
187
|
+
"type": "string",
|
|
188
|
+
"description": "ID of the prompt to apply"
|
|
189
|
+
},
|
|
190
|
+
"variables": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"description": "Object containing variable names and their values"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"required": [
|
|
196
|
+
"id",
|
|
197
|
+
"variables"
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"add_multi_message_prompt": {
|
|
201
|
+
"type": "object",
|
|
202
|
+
"properties": {
|
|
203
|
+
"name": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"description": "Name of the prompt"
|
|
206
|
+
},
|
|
207
|
+
"description": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"description": "Description of the prompt"
|
|
210
|
+
},
|
|
211
|
+
"messages": {
|
|
212
|
+
"type": "array",
|
|
213
|
+
"description": "Array of messages with roles",
|
|
214
|
+
"items": {
|
|
215
|
+
"type": "object",
|
|
216
|
+
"properties": {
|
|
217
|
+
"role": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"enum": [
|
|
220
|
+
"user",
|
|
221
|
+
"assistant"
|
|
222
|
+
],
|
|
223
|
+
"description": "Role of the message sender"
|
|
224
|
+
},
|
|
225
|
+
"content": {
|
|
226
|
+
"type": "object",
|
|
227
|
+
"properties": {
|
|
228
|
+
"type": {
|
|
229
|
+
"type": "string",
|
|
230
|
+
"enum": [
|
|
231
|
+
"text",
|
|
232
|
+
"image"
|
|
233
|
+
],
|
|
234
|
+
"description": "Type of content"
|
|
235
|
+
},
|
|
236
|
+
"text": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"description": "Text content (required for text type)"
|
|
239
|
+
},
|
|
240
|
+
"image": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"description": "Image data (required for image type)"
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
"required": [
|
|
246
|
+
"type"
|
|
247
|
+
]
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"required": [
|
|
251
|
+
"role",
|
|
252
|
+
"content"
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"required": [
|
|
258
|
+
"name",
|
|
259
|
+
"messages"
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": "prompts",
|
|
268
|
+
"capability": "prompts",
|
|
269
|
+
"status": "pass",
|
|
270
|
+
"durationMs": 1.1311249999998836,
|
|
271
|
+
"message": "Advertised capability responded with the minimal expected shape (1 item).",
|
|
272
|
+
"evidence": [
|
|
273
|
+
{
|
|
274
|
+
"endpoint": "prompts/list",
|
|
275
|
+
"advertised": true,
|
|
276
|
+
"responded": true,
|
|
277
|
+
"minimalShapePresent": true,
|
|
278
|
+
"itemCount": 1,
|
|
279
|
+
"identifiers": [
|
|
280
|
+
"demo_welcome"
|
|
281
|
+
],
|
|
282
|
+
"diagnostics": [
|
|
283
|
+
"Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts",
|
|
284
|
+
"promptopia-mcp MCP server running (v1.1.0)"
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"id": "resources",
|
|
291
|
+
"capability": "resources",
|
|
292
|
+
"status": "unsupported",
|
|
293
|
+
"durationMs": 0.004041000000142958,
|
|
294
|
+
"message": "Resources are not advertised by the target.",
|
|
295
|
+
"evidence": [
|
|
296
|
+
{
|
|
297
|
+
"endpoint": "resources/list | resources/templates/list",
|
|
298
|
+
"advertised": false,
|
|
299
|
+
"responded": false,
|
|
300
|
+
"minimalShapePresent": false,
|
|
301
|
+
"diagnostics": []
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"id": "security-lite",
|
|
307
|
+
"capability": "security-lite",
|
|
308
|
+
"status": "pass",
|
|
309
|
+
"durationMs": 0.02937500000007276,
|
|
310
|
+
"message": "No security issues detected (lightweight scan).",
|
|
311
|
+
"evidence": [
|
|
312
|
+
{
|
|
313
|
+
"endpoint": "security/scan-lite",
|
|
314
|
+
"advertised": true,
|
|
315
|
+
"responded": true,
|
|
316
|
+
"minimalShapePresent": true,
|
|
317
|
+
"itemCount": 0
|
|
318
|
+
}
|
|
319
|
+
]
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"id": "conformance",
|
|
323
|
+
"capability": "conformance",
|
|
324
|
+
"status": "pass",
|
|
325
|
+
"durationMs": 1.6614580000004935,
|
|
326
|
+
"message": "All 7 conformance checks passed.",
|
|
327
|
+
"evidence": [
|
|
328
|
+
{
|
|
329
|
+
"endpoint": "conformance/check",
|
|
330
|
+
"advertised": true,
|
|
331
|
+
"responded": true,
|
|
332
|
+
"minimalShapePresent": true,
|
|
333
|
+
"itemCount": 7,
|
|
334
|
+
"identifiers": [],
|
|
335
|
+
"diagnostics": [
|
|
336
|
+
"[pass] capabilities-present: Server returned capabilities object.",
|
|
337
|
+
"[pass] server-info: Server provided initialization info.",
|
|
338
|
+
"[pass] tools-capability-match: tools/list returned 7 tool(s).",
|
|
339
|
+
"[pass] prompts-capability-match: prompts/list returned 1 prompt(s).",
|
|
340
|
+
"[pass] resources-capability-match: Resources not advertised — endpoint check skipped.",
|
|
341
|
+
"[pass] tool-response-content: Tool \"list_prompts\" response has valid content array.",
|
|
342
|
+
"[pass] error-handling: Server returned proper error code -32601 for unknown method."
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"id": "schema-quality",
|
|
349
|
+
"capability": "schema-quality",
|
|
350
|
+
"status": "partial",
|
|
351
|
+
"durationMs": 0.6617910000004485,
|
|
352
|
+
"message": "Found 1 quality finding(s) across 8 item(s): 0 warnings, 1 info.",
|
|
353
|
+
"evidence": [
|
|
354
|
+
{
|
|
355
|
+
"endpoint": "schema-quality/scan",
|
|
356
|
+
"advertised": true,
|
|
357
|
+
"responded": true,
|
|
358
|
+
"minimalShapePresent": true,
|
|
359
|
+
"itemCount": 1,
|
|
360
|
+
"identifiers": [
|
|
361
|
+
"demo_welcome"
|
|
362
|
+
],
|
|
363
|
+
"diagnostics": [
|
|
364
|
+
"[info] prompt \"demo_welcome\": Argument 'name' missing description"
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"id": "security",
|
|
371
|
+
"capability": "security",
|
|
372
|
+
"status": "pass",
|
|
373
|
+
"durationMs": 0.1859999999996944,
|
|
374
|
+
"message": "No security issues detected.",
|
|
375
|
+
"evidence": [
|
|
376
|
+
{
|
|
377
|
+
"endpoint": "security/scan",
|
|
378
|
+
"advertised": true,
|
|
379
|
+
"responded": true,
|
|
380
|
+
"minimalShapePresent": true,
|
|
381
|
+
"itemCount": 0
|
|
382
|
+
}
|
|
383
|
+
]
|
|
384
|
+
}
|
|
385
|
+
],
|
|
386
|
+
"healthScore": {
|
|
387
|
+
"overall": 89,
|
|
388
|
+
"grade": "B",
|
|
389
|
+
"dimensions": [
|
|
390
|
+
{
|
|
391
|
+
"name": "Protocol Compliance",
|
|
392
|
+
"weight": 0.3,
|
|
393
|
+
"score": 100,
|
|
394
|
+
"details": [
|
|
395
|
+
"conformance: pass (100/100)"
|
|
396
|
+
]
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "Schema Quality",
|
|
400
|
+
"weight": 0.2,
|
|
401
|
+
"score": 60,
|
|
402
|
+
"details": [
|
|
403
|
+
"schema-quality: partial (60/100)"
|
|
404
|
+
]
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"name": "Security",
|
|
408
|
+
"weight": 0.2,
|
|
409
|
+
"score": 100,
|
|
410
|
+
"details": [
|
|
411
|
+
"security-lite: pass (100/100)",
|
|
412
|
+
"security: pass (100/100)"
|
|
413
|
+
]
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"name": "Reliability",
|
|
417
|
+
"weight": 0.2,
|
|
418
|
+
"score": 83,
|
|
419
|
+
"details": [
|
|
420
|
+
"tools: pass (100/100)",
|
|
421
|
+
"prompts: pass (100/100)",
|
|
422
|
+
"resources: unsupported (50/100)"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "Performance",
|
|
427
|
+
"weight": 0.1,
|
|
428
|
+
"score": 100,
|
|
429
|
+
"details": [
|
|
430
|
+
"Connect: 829ms",
|
|
431
|
+
"p95 latency: 1ms (3 operations)"
|
|
432
|
+
]
|
|
433
|
+
}
|
|
434
|
+
]
|
|
435
|
+
},
|
|
436
|
+
"performanceMetrics": {
|
|
437
|
+
"connectMs": 829.2160830000003,
|
|
438
|
+
"toolsListMs": 1.030083999999988,
|
|
439
|
+
"promptsListMs": 1.1311249999998836,
|
|
440
|
+
"resourcesListMs": 0.004041000000142958
|
|
441
|
+
}
|
|
442
|
+
}
|