@kryptosai/mcp-observatory 1.31.0 → 1.32.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 (46) hide show
  1. package/PRIVACY.md +16 -0
  2. package/README.md +1 -1
  3. package/dist/src/cli.js +3 -1
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/commands/diff.js +24 -2
  6. package/dist/src/commands/diff.js.map +1 -1
  7. package/dist/src/commands/telemetry.js +41 -1
  8. package/dist/src/commands/telemetry.js.map +1 -1
  9. package/dist/src/diff.d.ts +5 -2
  10. package/dist/src/diff.js +23 -2
  11. package/dist/src/diff.js.map +1 -1
  12. package/dist/src/index.d.ts +1 -0
  13. package/dist/src/index.js +1 -0
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/permission-delta.d.ts +2 -0
  16. package/dist/src/permission-delta.js +99 -0
  17. package/dist/src/permission-delta.js.map +1 -0
  18. package/dist/src/reporters/common.d.ts +1 -0
  19. package/dist/src/reporters/common.js +3 -1
  20. package/dist/src/reporters/common.js.map +1 -1
  21. package/dist/src/reporters/html.js +30 -1
  22. package/dist/src/reporters/html.js.map +1 -1
  23. package/dist/src/reporters/markdown.js +21 -2
  24. package/dist/src/reporters/markdown.js.map +1 -1
  25. package/dist/src/reporters/pr-comment.js +1 -1
  26. package/dist/src/reporters/pr-comment.js.map +1 -1
  27. package/dist/src/reporters/terminal.js +9 -3
  28. package/dist/src/reporters/terminal.js.map +1 -1
  29. package/dist/src/risk-taxonomy.d.ts +16 -0
  30. package/dist/src/risk-taxonomy.js +95 -0
  31. package/dist/src/risk-taxonomy.js.map +1 -0
  32. package/dist/src/schema-diff.d.ts +2 -1
  33. package/dist/src/schema-diff.js +28 -3
  34. package/dist/src/schema-diff.js.map +1 -1
  35. package/dist/src/telemetry.d.ts +17 -0
  36. package/dist/src/telemetry.js +69 -2
  37. package/dist/src/telemetry.js.map +1 -1
  38. package/dist/src/types.d.ts +15 -0
  39. package/dist/src/validate.js +45 -2
  40. package/dist/src/validate.js.map +1 -1
  41. package/docs/mcp-server-safety-index.md +13 -11
  42. package/docs/safety-index/artifacts/ui5-mcp-server.json +842 -0
  43. package/docs/safety-index/artifacts/ui5-mcp-server.md +232 -0
  44. package/docs/safety-index/targets.json +17 -0
  45. package/package.json +1 -1
  46. package/schemas/run-artifact.schema.json +56 -1
@@ -0,0 +1,232 @@
1
+ # MCP Observatory Run Report
2
+
3
+ Generated at 2026-07-09T15:15:05.224Z
4
+
5
+ ## Target and Environment Metadata
6
+
7
+ - Target: `ui5-mcp-server`
8
+ - Adapter: `local-process`
9
+ - Command: `npx -y @ui5/mcp-server`
10
+ - Server: `UI5 0.2.14`
11
+ - Platform: `darwin 24.0.0`
12
+ - Node: `v25.8.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 | 9 | 7 | 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 setup-ci --all --command "npx -y <server-package>"`
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: **medium**):
52
+
53
+ | Target | Protocol | Source | Confidence |
54
+ | --- | --- | --- | --- |
55
+ | Whether to include supplementary information in the output. This includes UI5 API reference and documentation resources. When calling the tool multiple times for the same file or project, refrain from requesting additional context every time. | unknown | description_analysis | medium |
56
+ | run_ui5_linter | unknown | description_analysis | low |
57
+ | get_api_reference | unknown | description_analysis | low |
58
+ | OData V4 service URL parameter; public artifact redacts local URL examples from the upstream tool description. | unknown | description_analysis | medium |
59
+
60
+ ### State Mutations
61
+
62
+ The following state-modifying operations were identified from tool schemas:
63
+
64
+ | Resource | Operation | Scope | Source |
65
+ | --- | --- | --- | --- |
66
+ | filesystem | write | working_directory | description_analysis |
67
+ | filesystem | write | working_directory | description_analysis |
68
+ | filesystem | write | working_directory | description_analysis |
69
+ | filesystem | write | working_directory | description_analysis |
70
+ | filesystem | execute | working_directory | description_analysis |
71
+ | filesystem | write | working_directory | description_analysis |
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 | description_analysis |
76
+ | filesystem | write | working_directory | description_analysis |
77
+ | filesystem | write | working_directory | description_analysis |
78
+ | filesystem | write | working_directory | description_analysis |
79
+ | filesystem | write | working_directory | description_analysis |
80
+ | filesystem | write | working_directory | description_analysis |
81
+ | filesystem | write | working_directory | description_analysis |
82
+ | filesystem | write | working_directory | description_analysis |
83
+ | filesystem | write | working_directory | description_analysis |
84
+ | filesystem | write | working_directory | description_analysis |
85
+ | filesystem | write | working_directory | description_analysis |
86
+ | filesystem | write | working_directory | description_analysis |
87
+ | filesystem | write | working_directory | description_analysis |
88
+ | filesystem | execute | working_directory | description_analysis |
89
+
90
+ _Analyzed at 2026-07-09T15:15:06.521Z_
91
+
92
+ ## Regressions and Recoveries
93
+
94
+ _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
95
+
96
+ ## Full Capability Status Table
97
+
98
+ | Focus | Check | Status | Duration (ms) | Message |
99
+ | --- | --- | --- | --- | --- |
100
+ | healthy | attack-sim | pass | 3.89 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
101
+ | healthy | conformance | pass | 11.03 | All 7 conformance checks passed. |
102
+ | healthy | runtime-profile | pass | 0.20 | Detected 4 potential egress target(s) and 23 potential state mutation(s) with low confidence. |
103
+ | healthy | schema-quality | pass | 7.39 | All 10 item(s) have good schema quality. |
104
+ | healthy | security | pass | 3.97 | No security issues detected. |
105
+ | healthy | security-lite | pass | 0.05 | No security issues detected (lightweight scan). |
106
+ | healthy | tools | pass | 6.68 | Advertised capability responded with the minimal expected shape (10 items). |
107
+ | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
108
+ | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
109
+
110
+ ## Evidence Snippets
111
+
112
+ ### attack-sim — pass
113
+
114
+ Summary: Safe attack simulation found no high-risk MCP attack-readiness findings.
115
+
116
+ - Endpoint: `attack-sim/safe`
117
+ - Advertised: `true`
118
+ - Responded: `true`
119
+ - Minimal shape present: `true`
120
+ - Item count: `0`
121
+ - Identifiers: none
122
+ - Diagnostics: none
123
+
124
+ ### conformance — pass
125
+
126
+ Summary: All 7 conformance checks passed.
127
+
128
+ - Endpoint: `conformance/check`
129
+ - Advertised: `true`
130
+ - Responded: `true`
131
+ - Minimal shape present: `true`
132
+ - Item count: `7`
133
+ - Identifiers: none
134
+ - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 10 tool(s). (+4 more)
135
+
136
+ ### runtime-profile — pass
137
+
138
+ Summary: Detected 4 potential egress target(s) and 23 potential state mutation(s) with low confidence.
139
+
140
+ - Endpoint: `runtime-profile/analyze`
141
+ - Advertised: `true`
142
+ - Responded: `true`
143
+ - Minimal shape present: `true`
144
+ - Item count: `27`
145
+ - Identifiers: none
146
+ - Diagnostics: Egress entries: 4, State mutations: 23, Confidence: medium
147
+
148
+ ### schema-quality — pass
149
+
150
+ Summary: All 10 item(s) have good schema quality.
151
+
152
+ - Endpoint: `schema-quality/scan`
153
+ - Advertised: `true`
154
+ - Responded: `true`
155
+ - Minimal shape present: `true`
156
+ - Item count: `0`
157
+ - Identifiers: none
158
+ - Diagnostics: none
159
+
160
+ ### security — pass
161
+
162
+ Summary: No security issues detected.
163
+
164
+ - Endpoint: `security/scan`
165
+ - Advertised: `true`
166
+ - Responded: `true`
167
+ - Minimal shape present: `true`
168
+ - Item count: `0`
169
+ - Identifiers: none
170
+ - Diagnostics: none
171
+
172
+ ### security-lite — pass
173
+
174
+ Summary: No security issues detected (lightweight scan).
175
+
176
+ - Endpoint: `security/scan-lite`
177
+ - Advertised: `true`
178
+ - Responded: `true`
179
+ - Minimal shape present: `true`
180
+ - Item count: `0`
181
+ - Identifiers: none
182
+ - Diagnostics: none
183
+
184
+ ### tools — pass
185
+
186
+ Summary: Advertised capability responded with the minimal expected shape (10 items).
187
+
188
+ - Endpoint: `tools/list`
189
+ - Advertised: `true`
190
+ - Responded: `true`
191
+ - Minimal shape present: `true`
192
+ - Item count: `10`
193
+ - Identifiers: get_guidelines, run_ui5_linter, get_api_reference, get_project_info, create_ui5_app (+5 more)
194
+ - Diagnostics: none
195
+
196
+ ### prompts — unsupported
197
+
198
+ Summary: Prompts are not advertised by the target.
199
+
200
+ - Endpoint: `prompts/list`
201
+ - Advertised: `false`
202
+ - Responded: `false`
203
+ - Minimal shape present: `false`
204
+ - Item count: `0`
205
+ - Identifiers: none
206
+ - Diagnostics: none
207
+
208
+ ### resources — unsupported
209
+
210
+ Summary: Resources are not advertised by the target.
211
+
212
+ - Endpoint: `resources/list | resources/templates/list`
213
+ - Advertised: `false`
214
+ - Responded: `false`
215
+ - Minimal shape present: `false`
216
+ - Item count: `0`
217
+ - Identifiers: none
218
+ - Diagnostics: none
219
+
220
+ ## Reproduction Commands
221
+
222
+ ```bash
223
+ npm run cli -- run --target <path-to-target-config.json>
224
+ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
225
+ ```
226
+
227
+ ## Artifact Provenance
228
+
229
+ - Artifact type: `run`
230
+ - Schema version: `1.0.0`
231
+ - Run ID: `run_2026-07-09T151505224Z_052ab101`
232
+ - Gate: `pass`
@@ -180,6 +180,23 @@
180
180
  "whyItMatters": "Exposes 26 tools to agents, including file writes, branch creation, issue/PR creation, and PR merges across any repo a token can reach — high-stakes write access that needs a visible boundary before an agent is trusted with it.",
181
181
  "reproductionNotes": "Zero-config package; tool listing succeeds without a real GitHub token, so this check is safe to run in CI. Note: npm currently flags this package as deprecated/no longer supported by the publisher — treat this target as compatibility evidence, not an endorsement of the package's maintenance status."
182
182
  },
183
+ {
184
+ "id": "ui5-mcp-server",
185
+ "name": "UI5 MCP Server",
186
+ "repo": "https://github.com/UI5/mcp-server",
187
+ "packageName": "@ui5/mcp-server",
188
+ "category": "Developer Tools",
189
+ "command": "npx",
190
+ "args": [
191
+ "-y",
192
+ "@ui5/mcp-server"
193
+ ],
194
+ "timeoutMs": 60000,
195
+ "riskClass": "UI5 project scaffolding and analysis",
196
+ "failureClass": "Framework tooling boundary",
197
+ "whyItMatters": "UI5 agents can scaffold applications, run UI5-specific analysis, and fetch framework guidance, so teams need reproducible evidence before trusting the tool surface.",
198
+ "reproductionNotes": "Zero-config public package; tool listing works without private credentials or a project fixture."
199
+ },
183
200
  {
184
201
  "id": "opentofu-server",
185
202
  "name": "OpenTofu MCP server",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kryptosai/mcp-observatory",
3
- "version": "1.31.0",
3
+ "version": "1.32.0",
4
4
  "description": "GitHub-native CI, SARIF, Code Scanning, and security gates for MCP servers before agents depend on them.",
5
5
  "mcpName": "io.github.KryptosAI/mcp-observatory",
6
6
  "license": "MIT",
@@ -32,6 +32,11 @@
32
32
  },
33
33
  "healthScore": { "$ref": "#/definitions/healthScore" },
34
34
  "performanceMetrics": { "$ref": "#/definitions/performanceMetrics" },
35
+ "runtimeProfile": { "$ref": "#/definitions/runtimeProfile" },
36
+ "notObserved": {
37
+ "type": "array",
38
+ "items": { "$ref": "#/definitions/notObserved" }
39
+ },
35
40
  "fatalError": { "type": "string" }
36
41
  },
37
42
  "definitions": {
@@ -51,7 +56,8 @@
51
56
  "security-lite",
52
57
  "attack-sim",
53
58
  "conformance",
54
- "schema-quality"
59
+ "schema-quality",
60
+ "runtime-profile"
55
61
  ]
56
62
  },
57
63
  "evidenceSummary": {
@@ -206,6 +212,55 @@
206
212
  "additionalProperties": { "type": "number", "minimum": 0 }
207
213
  }
208
214
  }
215
+ },
216
+ "egressEntry": {
217
+ "type": "object",
218
+ "additionalProperties": false,
219
+ "required": ["target", "protocol", "source", "confidence"],
220
+ "properties": {
221
+ "target": { "type": "string" },
222
+ "protocol": { "type": "string" },
223
+ "source": { "type": "string" },
224
+ "confidence": { "type": "string", "enum": ["high", "medium", "low"] }
225
+ }
226
+ },
227
+ "stateMutation": {
228
+ "type": "object",
229
+ "additionalProperties": false,
230
+ "required": ["resource", "operation", "scope", "source"],
231
+ "properties": {
232
+ "resource": { "type": "string" },
233
+ "operation": { "type": "string" },
234
+ "scope": { "type": "string" },
235
+ "source": { "type": "string" }
236
+ }
237
+ },
238
+ "runtimeProfile": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": ["analyzedAt", "confidence"],
242
+ "properties": {
243
+ "egress": {
244
+ "type": "array",
245
+ "items": { "$ref": "#/definitions/egressEntry" }
246
+ },
247
+ "stateMutations": {
248
+ "type": "array",
249
+ "items": { "$ref": "#/definitions/stateMutation" }
250
+ },
251
+ "analyzedAt": { "type": "string" },
252
+ "confidence": { "type": "string", "enum": ["high", "medium", "low"] }
253
+ }
254
+ },
255
+ "notObserved": {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "required": ["category", "detail", "severity"],
259
+ "properties": {
260
+ "category": { "type": "string" },
261
+ "detail": { "type": "string" },
262
+ "severity": { "type": "string", "enum": ["info", "warning"] }
263
+ }
209
264
  }
210
265
  }
211
266
  }