@kryptosai/mcp-observatory 0.27.0 → 0.28.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 +6 -1
- package/CONTRIBUTORS.md +39 -0
- package/README.md +57 -18
- package/dist/src/adapters/http.js +1 -5
- package/dist/src/adapters/http.js.map +1 -1
- package/dist/src/cassette.js +3 -2
- package/dist/src/cassette.js.map +1 -1
- package/dist/src/checks/attack-sim.d.ts +18 -0
- package/dist/src/checks/attack-sim.js +304 -0
- package/dist/src/checks/attack-sim.js.map +1 -0
- package/dist/src/ci-issue.js +4 -3
- package/dist/src/ci-issue.js.map +1 -1
- package/dist/src/cli.js +17 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/attack-sim.d.ts +2 -0
- package/dist/src/commands/attack-sim.js +168 -0
- package/dist/src/commands/attack-sim.js.map +1 -0
- package/dist/src/commands/init-ci.d.ts +1 -0
- package/dist/src/commands/init-ci.js +8 -3
- package/dist/src/commands/init-ci.js.map +1 -1
- package/dist/src/commands/legacy.js +6 -1
- package/dist/src/commands/legacy.js.map +1 -1
- package/dist/src/commands/scan.js +7 -1
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/serve.js +9 -1
- package/dist/src/commands/serve.js.map +1 -1
- package/dist/src/commands/setup-ci-conversion.d.ts +1 -0
- package/dist/src/commands/setup-ci-conversion.js +1 -0
- package/dist/src/commands/setup-ci-conversion.js.map +1 -1
- package/dist/src/commands/telemetry.js +20 -14
- package/dist/src/commands/telemetry.js.map +1 -1
- package/dist/src/commands/test.js +13 -1
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/findings.js +41 -1
- package/dist/src/findings.js.map +1 -1
- package/dist/src/history.js +3 -2
- package/dist/src/history.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrations/smithery.js +5 -1
- package/dist/src/integrations/smithery.js.map +1 -1
- package/dist/src/reporters/attack-sim.d.ts +2 -0
- package/dist/src/reporters/attack-sim.js +84 -0
- package/dist/src/reporters/attack-sim.js.map +1 -0
- package/dist/src/reporters/pr-comment.js +20 -6
- package/dist/src/reporters/pr-comment.js.map +1 -1
- package/dist/src/runner.d.ts +3 -0
- package/dist/src/runner.js +5 -0
- package/dist/src/runner.js.map +1 -1
- package/dist/src/score.js +1 -1
- package/dist/src/score.js.map +1 -1
- package/dist/src/storage.js +3 -2
- package/dist/src/storage.js.map +1 -1
- package/dist/src/telemetry.d.ts +3 -0
- package/dist/src/telemetry.js +17 -1
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/utils/files.d.ts +1 -0
- package/dist/src/utils/files.js +21 -0
- package/dist/src/utils/files.js.map +1 -0
- package/dist/src/utils/ids.js +18 -5
- package/dist/src/utils/ids.js.map +1 -1
- package/dist/src/utils/url.d.ts +2 -0
- package/dist/src/utils/url.js +15 -0
- package/dist/src/utils/url.js.map +1 -0
- package/dist/src/validate.js +1 -1
- package/dist/src/validate.js.map +1 -1
- package/docs/agent-ecosystem-promotion-plan.md +244 -0
- package/docs/agent-tasks.md +95 -0
- package/docs/automatic-ci-integration.md +33 -0
- package/docs/campaign-attribution.md +58 -0
- package/docs/code-scanning-demo.md +57 -0
- package/docs/contributor-proof-cards/README.md +33 -0
- package/docs/contributor-recognition.md +92 -0
- package/docs/feishu-lark-mcp.md +1 -1
- package/docs/github-code-scanning-for-mcp.md +1 -1
- package/docs/launch.md +64 -0
- package/docs/mcp-attack-simulator.md +57 -0
- package/docs/mcp-server-safety-index.md +18 -12
- package/docs/proof.md +5 -2
- package/docs/receipt-graph.md +54 -0
- package/docs/safety-index/artifacts/antv-chart-server.json +21 -21
- package/docs/safety-index/artifacts/antv-chart-server.md +10 -10
- package/docs/safety-index/artifacts/browsermcp-server.json +17 -17
- package/docs/safety-index/artifacts/browsermcp-server.md +10 -10
- package/docs/safety-index/artifacts/context7-server.json +17 -17
- package/docs/safety-index/artifacts/context7-server.md +10 -10
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +2014 -0
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +163 -0
- package/docs/safety-index/artifacts/everything-server.json +131 -56
- package/docs/safety-index/artifacts/everything-server.md +24 -24
- package/docs/safety-index/artifacts/executeautomation-playwright-server.json +26 -18
- package/docs/safety-index/artifacts/executeautomation-playwright-server.md +10 -10
- package/docs/safety-index/artifacts/filesystem-server.json +128 -20
- package/docs/safety-index/artifacts/filesystem-server.md +10 -10
- package/docs/safety-index/artifacts/kubernetes-server.attack.json +1559 -0
- package/docs/safety-index/artifacts/kubernetes-server.attack.md +43 -0
- package/docs/safety-index/artifacts/kubernetes-server.attack.sarif +2857 -0
- package/docs/safety-index/artifacts/kubernetes-server.json +1348 -0
- package/docs/safety-index/artifacts/kubernetes-server.md +150 -0
- package/docs/safety-index/artifacts/memory-server.json +75 -32
- package/docs/safety-index/artifacts/memory-server.md +35 -28
- package/docs/safety-index/artifacts/opentofu-server.json +25 -17
- package/docs/safety-index/artifacts/opentofu-server.md +11 -11
- package/docs/safety-index/artifacts/playwright-mcp-server.json +56 -20
- package/docs/safety-index/artifacts/playwright-mcp-server.md +12 -12
- package/docs/safety-index/artifacts/promptopia-server.json +28 -20
- package/docs/safety-index/artifacts/promptopia-server.md +11 -11
- package/docs/safety-index/artifacts/puppeteer-server.json +42 -30
- package/docs/safety-index/artifacts/puppeteer-server.md +28 -28
- package/docs/safety-index/artifacts/ref-tools-server.json +17 -17
- package/docs/safety-index/artifacts/ref-tools-server.md +9 -9
- package/docs/safety-index/artifacts/sequential-thinking-server.json +20 -21
- package/docs/safety-index/artifacts/sequential-thinking-server.md +10 -10
- package/docs/safety-index/targets.json +90 -14
- package/docs/setup-ci-doctor.md +2 -0
- package/docs/target-gallery.md +49 -0
- package/docs/target-registry.md +5 -1
- package/docs/tool-call-receipts.md +116 -0
- package/package.json +20 -2
- package/schemas/run-artifact.schema.json +1 -0
- package/scripts/postinstall.mjs +123 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-07-06T01:46:58.742Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `cyanheads-git-mcp-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y @cyanheads/git-mcp-server`
|
|
10
|
+
- Server: `@cyanheads/git-mcp-server 2.15.1`
|
|
11
|
+
- Platform: `darwin 24.0.0`
|
|
12
|
+
- Node: `v25.8.1`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
**Health Score: 84/100 (B)**
|
|
17
|
+
|
|
18
|
+
| Dimension | Score | Weight |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| Protocol Compliance | 100/100 | 30% |
|
|
21
|
+
| Schema Quality | 60/100 | 20% |
|
|
22
|
+
| Security | 60/100 | 20% |
|
|
23
|
+
| Reliability | 100/100 | 20% |
|
|
24
|
+
| Performance | 100/100 | 10% |
|
|
25
|
+
|
|
26
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| pass | 7 | 4 | 0 | 3 | 0 | 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: schema-quality: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.; security: Found 19 security finding(s): 0 high, 19 medium, 0 low.; security-lite: Found 19 security finding(s): 0 high, 19 medium, 0 low.
|
|
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: security-lite, schema-quality, security
|
|
37
|
+
- Skipped checks: none
|
|
38
|
+
- Unsupported checks: none
|
|
39
|
+
- Suggested next step: Review the caveated checks next: security-lite, schema-quality, security.
|
|
40
|
+
- CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-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 | 43.66 | All 7 conformance checks passed. |
|
|
51
|
+
| healthy | prompts | pass | 0.77 | Advertised capability responded with the minimal expected shape (1 item). |
|
|
52
|
+
| healthy | resources | pass | 0.70 | Advertised capability responded with the minimal expected shape (2 items). |
|
|
53
|
+
| healthy | tools | pass | 33.99 | Advertised capability responded with the minimal expected shape (28 items). |
|
|
54
|
+
| review | schema-quality | partial | 21.67 | Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info. |
|
|
55
|
+
| review | security | partial | 27.04 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
|
|
56
|
+
| review | security-lite | partial | 0.10 | Found 19 security finding(s): 0 high, 19 medium, 0 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 28 tool(s). (+4 more)
|
|
71
|
+
|
|
72
|
+
### prompts — pass
|
|
73
|
+
|
|
74
|
+
Summary: Advertised capability responded with the minimal expected shape (1 item).
|
|
75
|
+
|
|
76
|
+
- Endpoint: `prompts/list`
|
|
77
|
+
- Advertised: `true`
|
|
78
|
+
- Responded: `true`
|
|
79
|
+
- Minimal shape present: `true`
|
|
80
|
+
- Item count: `1`
|
|
81
|
+
- Identifiers: git_wrapup
|
|
82
|
+
- Diagnostics: {"level":30,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
|
|
83
|
+
|
|
84
|
+
### resources — pass
|
|
85
|
+
|
|
86
|
+
Summary: Advertised capability responded with the minimal expected shape (2 items).
|
|
87
|
+
|
|
88
|
+
- Endpoint: `resources/list`
|
|
89
|
+
- Advertised: `true`
|
|
90
|
+
- Responded: `true`
|
|
91
|
+
- Minimal shape present: `true`
|
|
92
|
+
- Item count: `1`
|
|
93
|
+
- Identifiers: git://working-directory
|
|
94
|
+
- Diagnostics: {"level":30,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
|
|
95
|
+
- Endpoint: `resources/templates/list`
|
|
96
|
+
- Advertised: `true`
|
|
97
|
+
- Responded: `true`
|
|
98
|
+
- Minimal shape present: `true`
|
|
99
|
+
- Item count: `1`
|
|
100
|
+
- Identifiers: git://working-directory
|
|
101
|
+
- Diagnostics: {"level":30,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
|
|
102
|
+
|
|
103
|
+
### tools — pass
|
|
104
|
+
|
|
105
|
+
Summary: Advertised capability responded with the minimal expected shape (28 items).
|
|
106
|
+
|
|
107
|
+
- Endpoint: `tools/list`
|
|
108
|
+
- Advertised: `true`
|
|
109
|
+
- Responded: `true`
|
|
110
|
+
- Minimal shape present: `true`
|
|
111
|
+
- Item count: `28`
|
|
112
|
+
- Identifiers: git_add, git_blame, git_branch, git_changelog_analyze, git_checkout (+23 more)
|
|
113
|
+
- Diagnostics: none
|
|
114
|
+
|
|
115
|
+
### schema-quality — partial
|
|
116
|
+
|
|
117
|
+
Summary: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.
|
|
118
|
+
|
|
119
|
+
- Endpoint: `schema-quality/scan`
|
|
120
|
+
- Advertised: `true`
|
|
121
|
+
- Responded: `true`
|
|
122
|
+
- Minimal shape present: `true`
|
|
123
|
+
- Item count: `17`
|
|
124
|
+
- Identifiers: git_add, git_branch, git_clean, git_diff, git_fetch (+12 more)
|
|
125
|
+
- Diagnostics: [info] tool "git_add": Has properties but no 'required' array declared, [info] tool "git_branch": Has properties but no 'required' array declared, [info] tool "git_clean": Has properties but no 'required' array declared (+14 more)
|
|
126
|
+
|
|
127
|
+
### security — partial
|
|
128
|
+
|
|
129
|
+
Summary: Found 19 security finding(s): 0 high, 19 medium, 0 low.
|
|
130
|
+
|
|
131
|
+
- Endpoint: `security/scan`
|
|
132
|
+
- Advertised: `true`
|
|
133
|
+
- Responded: `true`
|
|
134
|
+
- Minimal shape present: `true`
|
|
135
|
+
- Item count: `19`
|
|
136
|
+
- Identifiers: git_add, git_branch, git_checkout, git_cherry_pick, git_clean (+14 more)
|
|
137
|
+
- Diagnostics: [medium] Tool "git_add" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_branch" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_checkout" accepts filesystem paths and has destructive capabilities. (+16 more)
|
|
138
|
+
|
|
139
|
+
### security-lite — partial
|
|
140
|
+
|
|
141
|
+
Summary: Found 19 security finding(s): 0 high, 19 medium, 0 low.
|
|
142
|
+
|
|
143
|
+
- Endpoint: `security/scan-lite`
|
|
144
|
+
- Advertised: `true`
|
|
145
|
+
- Responded: `true`
|
|
146
|
+
- Minimal shape present: `true`
|
|
147
|
+
- Item count: `19`
|
|
148
|
+
- Identifiers: git_add, git_branch, git_checkout, git_cherry_pick, git_clean (+14 more)
|
|
149
|
+
- Diagnostics: [medium] Tool "git_add" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_branch" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_checkout" accepts filesystem paths and has destructive capabilities. (+16 more)
|
|
150
|
+
|
|
151
|
+
## Reproduction Commands
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npm run cli -- run --target <path-to-target-config.json>
|
|
155
|
+
npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Artifact Provenance
|
|
159
|
+
|
|
160
|
+
- Artifact type: `run`
|
|
161
|
+
- Schema version: `1.0.0`
|
|
162
|
+
- Run ID: `run_2026-07-06T014658742Z_9d713d02`
|
|
163
|
+
- Gate: `pass`
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"artifactType": "run",
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"gate": "pass",
|
|
5
|
-
"runId": "run_2026-
|
|
6
|
-
"createdAt": "2026-
|
|
7
|
-
"toolVersion": "0.
|
|
5
|
+
"runId": "run_2026-07-06T014650996Z_273c0c65",
|
|
6
|
+
"createdAt": "2026-07-06T01:46:50.997Z",
|
|
7
|
+
"toolVersion": "0.26.1",
|
|
8
8
|
"target": {
|
|
9
9
|
"targetId": "everything-server",
|
|
10
10
|
"adapter": "local-process",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"serverVersion": "2.0.0"
|
|
26
26
|
},
|
|
27
27
|
"environment": {
|
|
28
|
-
"platform": "darwin
|
|
29
|
-
"nodeVersion": "
|
|
28
|
+
"platform": "darwin 24.0.0",
|
|
29
|
+
"nodeVersion": "v25.8.1"
|
|
30
30
|
},
|
|
31
31
|
"summary": {
|
|
32
32
|
"total": 7,
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"id": "tools",
|
|
44
44
|
"capability": "tools",
|
|
45
45
|
"status": "pass",
|
|
46
|
-
"durationMs": 7.
|
|
46
|
+
"durationMs": 7.431291999999985,
|
|
47
47
|
"message": "Advertised capability responded with the minimal expected shape (13 items).",
|
|
48
48
|
"evidence": [
|
|
49
49
|
{
|
|
@@ -82,7 +82,6 @@
|
|
|
82
82
|
"required": [
|
|
83
83
|
"message"
|
|
84
84
|
],
|
|
85
|
-
"additionalProperties": false,
|
|
86
85
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
87
86
|
},
|
|
88
87
|
"get-annotated-message": {
|
|
@@ -98,15 +97,14 @@
|
|
|
98
97
|
"description": "Type of message to demonstrate different annotation patterns"
|
|
99
98
|
},
|
|
100
99
|
"includeImage": {
|
|
101
|
-
"type": "boolean",
|
|
102
100
|
"default": false,
|
|
103
|
-
"description": "Whether to include an example image"
|
|
101
|
+
"description": "Whether to include an example image",
|
|
102
|
+
"type": "boolean"
|
|
104
103
|
}
|
|
105
104
|
},
|
|
106
105
|
"required": [
|
|
107
106
|
"messageType"
|
|
108
107
|
],
|
|
109
|
-
"additionalProperties": false,
|
|
110
108
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
111
109
|
},
|
|
112
110
|
"get-env": {
|
|
@@ -118,34 +116,32 @@
|
|
|
118
116
|
"type": "object",
|
|
119
117
|
"properties": {
|
|
120
118
|
"count": {
|
|
119
|
+
"default": 3,
|
|
120
|
+
"description": "Number of resource links to return (1-10)",
|
|
121
121
|
"type": "number",
|
|
122
122
|
"minimum": 1,
|
|
123
|
-
"maximum": 10
|
|
124
|
-
"default": 3,
|
|
125
|
-
"description": "Number of resource links to return (1-10)"
|
|
123
|
+
"maximum": 10
|
|
126
124
|
}
|
|
127
125
|
},
|
|
128
|
-
"additionalProperties": false,
|
|
129
126
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
130
127
|
},
|
|
131
128
|
"get-resource-reference": {
|
|
132
129
|
"type": "object",
|
|
133
130
|
"properties": {
|
|
134
131
|
"resourceType": {
|
|
132
|
+
"default": "Text",
|
|
135
133
|
"type": "string",
|
|
136
134
|
"enum": [
|
|
137
135
|
"Text",
|
|
138
136
|
"Blob"
|
|
139
|
-
]
|
|
140
|
-
"default": "Text"
|
|
137
|
+
]
|
|
141
138
|
},
|
|
142
139
|
"resourceId": {
|
|
143
|
-
"type": "number",
|
|
144
140
|
"default": 1,
|
|
145
|
-
"description": "ID of the text resource to fetch"
|
|
141
|
+
"description": "ID of the text resource to fetch",
|
|
142
|
+
"type": "number"
|
|
146
143
|
}
|
|
147
144
|
},
|
|
148
|
-
"additionalProperties": false,
|
|
149
145
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
150
146
|
},
|
|
151
147
|
"get-structured-content": {
|
|
@@ -164,7 +160,6 @@
|
|
|
164
160
|
"required": [
|
|
165
161
|
"location"
|
|
166
162
|
],
|
|
167
|
-
"additionalProperties": false,
|
|
168
163
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
169
164
|
},
|
|
170
165
|
"get-sum": {
|
|
@@ -183,7 +178,6 @@
|
|
|
183
178
|
"a",
|
|
184
179
|
"b"
|
|
185
180
|
],
|
|
186
|
-
"additionalProperties": false,
|
|
187
181
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
188
182
|
},
|
|
189
183
|
"get-tiny-image": {
|
|
@@ -195,27 +189,26 @@
|
|
|
195
189
|
"type": "object",
|
|
196
190
|
"properties": {
|
|
197
191
|
"name": {
|
|
192
|
+
"default": "README.md.gz",
|
|
198
193
|
"type": "string",
|
|
199
|
-
"description": "Name of the output file"
|
|
200
|
-
"default": "README.md.gz"
|
|
194
|
+
"description": "Name of the output file"
|
|
201
195
|
},
|
|
202
196
|
"data": {
|
|
197
|
+
"default": "https://raw.githubusercontent.com/modelcontextprotocol/servers/refs/heads/main/README.md",
|
|
203
198
|
"type": "string",
|
|
204
199
|
"format": "uri",
|
|
205
|
-
"description": "URL or data URI of the file content to compress"
|
|
206
|
-
"default": "https://raw.githubusercontent.com/modelcontextprotocol/servers/refs/heads/main/README.md"
|
|
200
|
+
"description": "URL or data URI of the file content to compress"
|
|
207
201
|
},
|
|
208
202
|
"outputType": {
|
|
203
|
+
"default": "resourceLink",
|
|
204
|
+
"description": "How the resulting gzipped file should be returned. 'resourceLink' returns a link to a resource that can be read later, 'resource' returns a full resource object.",
|
|
209
205
|
"type": "string",
|
|
210
206
|
"enum": [
|
|
211
207
|
"resourceLink",
|
|
212
208
|
"resource"
|
|
213
|
-
]
|
|
214
|
-
"default": "resourceLink",
|
|
215
|
-
"description": "How the resulting gzipped file should be returned. 'resourceLink' returns a link to a resource that can be read later, 'resource' returns a full resource object."
|
|
209
|
+
]
|
|
216
210
|
}
|
|
217
211
|
},
|
|
218
|
-
"additionalProperties": false,
|
|
219
212
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
220
213
|
},
|
|
221
214
|
"toggle-simulated-logging": {
|
|
@@ -232,17 +225,16 @@
|
|
|
232
225
|
"type": "object",
|
|
233
226
|
"properties": {
|
|
234
227
|
"duration": {
|
|
235
|
-
"type": "number",
|
|
236
228
|
"default": 10,
|
|
237
|
-
"description": "Duration of the operation in seconds"
|
|
229
|
+
"description": "Duration of the operation in seconds",
|
|
230
|
+
"type": "number"
|
|
238
231
|
},
|
|
239
232
|
"steps": {
|
|
240
|
-
"type": "number",
|
|
241
233
|
"default": 5,
|
|
242
|
-
"description": "Number of steps in the operation"
|
|
234
|
+
"description": "Number of steps in the operation",
|
|
235
|
+
"type": "number"
|
|
243
236
|
}
|
|
244
237
|
},
|
|
245
|
-
"additionalProperties": false,
|
|
246
238
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
247
239
|
},
|
|
248
240
|
"simulate-research-query": {
|
|
@@ -253,15 +245,14 @@
|
|
|
253
245
|
"description": "The research topic to investigate"
|
|
254
246
|
},
|
|
255
247
|
"ambiguous": {
|
|
256
|
-
"type": "boolean",
|
|
257
248
|
"default": false,
|
|
258
|
-
"description": "Simulate an ambiguous query that requires clarification (triggers input_required status)"
|
|
249
|
+
"description": "Simulate an ambiguous query that requires clarification (triggers input_required status)",
|
|
250
|
+
"type": "boolean"
|
|
259
251
|
}
|
|
260
252
|
},
|
|
261
253
|
"required": [
|
|
262
254
|
"topic"
|
|
263
255
|
],
|
|
264
|
-
"additionalProperties": false,
|
|
265
256
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
266
257
|
}
|
|
267
258
|
}
|
|
@@ -272,7 +263,7 @@
|
|
|
272
263
|
"id": "prompts",
|
|
273
264
|
"capability": "prompts",
|
|
274
265
|
"status": "pass",
|
|
275
|
-
"durationMs": 0.
|
|
266
|
+
"durationMs": 0.8740839999999253,
|
|
276
267
|
"message": "Advertised capability responded with the minimal expected shape (4 items).",
|
|
277
268
|
"evidence": [
|
|
278
269
|
{
|
|
@@ -297,7 +288,7 @@
|
|
|
297
288
|
"id": "resources",
|
|
298
289
|
"capability": "resources",
|
|
299
290
|
"status": "pass",
|
|
300
|
-
"durationMs": 1.
|
|
291
|
+
"durationMs": 1.2153749999999945,
|
|
301
292
|
"message": "Advertised capability responded with the minimal expected shape (9 items).",
|
|
302
293
|
"evidence": [
|
|
303
294
|
{
|
|
@@ -339,15 +330,37 @@
|
|
|
339
330
|
"id": "security-lite",
|
|
340
331
|
"capability": "security-lite",
|
|
341
332
|
"status": "pass",
|
|
342
|
-
"durationMs": 0.
|
|
343
|
-
"message": "
|
|
333
|
+
"durationMs": 0.5052909999999429,
|
|
334
|
+
"message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
|
|
344
335
|
"evidence": [
|
|
345
336
|
{
|
|
346
337
|
"endpoint": "security/scan-lite",
|
|
347
338
|
"advertised": true,
|
|
348
339
|
"responded": true,
|
|
349
340
|
"minimalShapePresent": true,
|
|
350
|
-
"itemCount":
|
|
341
|
+
"itemCount": 2,
|
|
342
|
+
"identifiers": [
|
|
343
|
+
"toggle-simulated-logging",
|
|
344
|
+
"toggle-subscriber-updates"
|
|
345
|
+
],
|
|
346
|
+
"diagnostics": [
|
|
347
|
+
"[low] Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive.",
|
|
348
|
+
"[low] Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
|
|
349
|
+
],
|
|
350
|
+
"findings": [
|
|
351
|
+
{
|
|
352
|
+
"ruleId": "permissive-schema",
|
|
353
|
+
"severity": "low",
|
|
354
|
+
"toolName": "toggle-simulated-logging",
|
|
355
|
+
"message": "Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive."
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"ruleId": "permissive-schema",
|
|
359
|
+
"severity": "low",
|
|
360
|
+
"toolName": "toggle-subscriber-updates",
|
|
361
|
+
"message": "Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
|
|
362
|
+
}
|
|
363
|
+
]
|
|
351
364
|
}
|
|
352
365
|
]
|
|
353
366
|
},
|
|
@@ -355,7 +368,7 @@
|
|
|
355
368
|
"id": "conformance",
|
|
356
369
|
"capability": "conformance",
|
|
357
370
|
"status": "pass",
|
|
358
|
-
"durationMs":
|
|
371
|
+
"durationMs": 5.802541000000019,
|
|
359
372
|
"message": "All 7 conformance checks passed.",
|
|
360
373
|
"evidence": [
|
|
361
374
|
{
|
|
@@ -381,27 +394,67 @@
|
|
|
381
394
|
"id": "schema-quality",
|
|
382
395
|
"capability": "schema-quality",
|
|
383
396
|
"status": "partial",
|
|
384
|
-
"durationMs":
|
|
385
|
-
"message": "Found
|
|
397
|
+
"durationMs": 4.454166999999984,
|
|
398
|
+
"message": "Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.",
|
|
386
399
|
"evidence": [
|
|
387
400
|
{
|
|
388
401
|
"endpoint": "schema-quality/scan",
|
|
389
402
|
"advertised": true,
|
|
390
403
|
"responded": true,
|
|
391
404
|
"minimalShapePresent": true,
|
|
392
|
-
"itemCount":
|
|
405
|
+
"itemCount": 6,
|
|
393
406
|
"identifiers": [
|
|
394
407
|
"get-resource-links",
|
|
395
408
|
"get-resource-reference",
|
|
396
409
|
"gzip-file-as-resource",
|
|
397
|
-
"trigger-long-running-operation"
|
|
410
|
+
"trigger-long-running-operation",
|
|
411
|
+
"args-prompt"
|
|
398
412
|
],
|
|
399
413
|
"diagnostics": [
|
|
400
414
|
"[info] tool \"get-resource-links\": Has properties but no 'required' array declared",
|
|
401
415
|
"[info] tool \"get-resource-reference\": Has properties but no 'required' array declared",
|
|
402
416
|
"[info] tool \"get-resource-reference\": Property 'resourceType' missing description",
|
|
403
417
|
"[info] tool \"gzip-file-as-resource\": Has properties but no 'required' array declared",
|
|
404
|
-
"[info] tool \"trigger-long-running-operation\": Has properties but no 'required' array declared"
|
|
418
|
+
"[info] tool \"trigger-long-running-operation\": Has properties but no 'required' array declared",
|
|
419
|
+
"[info] prompt \"args-prompt\": Argument 'state' missing description"
|
|
420
|
+
],
|
|
421
|
+
"findings": [
|
|
422
|
+
{
|
|
423
|
+
"itemType": "tool",
|
|
424
|
+
"itemName": "get-resource-links",
|
|
425
|
+
"issue": "Has properties but no 'required' array declared",
|
|
426
|
+
"severity": "info"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"itemType": "tool",
|
|
430
|
+
"itemName": "get-resource-reference",
|
|
431
|
+
"issue": "Has properties but no 'required' array declared",
|
|
432
|
+
"severity": "info"
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"itemType": "tool",
|
|
436
|
+
"itemName": "get-resource-reference",
|
|
437
|
+
"issue": "Property 'resourceType' missing description",
|
|
438
|
+
"severity": "info"
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"itemType": "tool",
|
|
442
|
+
"itemName": "gzip-file-as-resource",
|
|
443
|
+
"issue": "Has properties but no 'required' array declared",
|
|
444
|
+
"severity": "info"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"itemType": "tool",
|
|
448
|
+
"itemName": "trigger-long-running-operation",
|
|
449
|
+
"issue": "Has properties but no 'required' array declared",
|
|
450
|
+
"severity": "info"
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"itemType": "prompt",
|
|
454
|
+
"itemName": "args-prompt",
|
|
455
|
+
"issue": "Argument 'state' missing description",
|
|
456
|
+
"severity": "info"
|
|
457
|
+
}
|
|
405
458
|
]
|
|
406
459
|
}
|
|
407
460
|
]
|
|
@@ -410,15 +463,37 @@
|
|
|
410
463
|
"id": "security",
|
|
411
464
|
"capability": "security",
|
|
412
465
|
"status": "pass",
|
|
413
|
-
"durationMs":
|
|
414
|
-
"message": "
|
|
466
|
+
"durationMs": 1.5368330000000014,
|
|
467
|
+
"message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
|
|
415
468
|
"evidence": [
|
|
416
469
|
{
|
|
417
470
|
"endpoint": "security/scan",
|
|
418
471
|
"advertised": true,
|
|
419
472
|
"responded": true,
|
|
420
473
|
"minimalShapePresent": true,
|
|
421
|
-
"itemCount":
|
|
474
|
+
"itemCount": 2,
|
|
475
|
+
"identifiers": [
|
|
476
|
+
"toggle-simulated-logging",
|
|
477
|
+
"toggle-subscriber-updates"
|
|
478
|
+
],
|
|
479
|
+
"diagnostics": [
|
|
480
|
+
"[low] Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive.",
|
|
481
|
+
"[low] Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
|
|
482
|
+
],
|
|
483
|
+
"findings": [
|
|
484
|
+
{
|
|
485
|
+
"ruleId": "permissive-schema",
|
|
486
|
+
"severity": "low",
|
|
487
|
+
"toolName": "toggle-simulated-logging",
|
|
488
|
+
"message": "Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive."
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"ruleId": "permissive-schema",
|
|
492
|
+
"severity": "low",
|
|
493
|
+
"toolName": "toggle-subscriber-updates",
|
|
494
|
+
"message": "Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
|
|
495
|
+
}
|
|
496
|
+
]
|
|
422
497
|
}
|
|
423
498
|
]
|
|
424
499
|
}
|
|
@@ -467,16 +542,16 @@
|
|
|
467
542
|
"weight": 0.1,
|
|
468
543
|
"score": 100,
|
|
469
544
|
"details": [
|
|
470
|
-
"Connect:
|
|
545
|
+
"Connect: 761ms",
|
|
471
546
|
"p95 latency: 7ms (3 operations)"
|
|
472
547
|
]
|
|
473
548
|
}
|
|
474
549
|
]
|
|
475
550
|
},
|
|
476
551
|
"performanceMetrics": {
|
|
477
|
-
"connectMs":
|
|
478
|
-
"toolsListMs": 7.
|
|
479
|
-
"promptsListMs": 0.
|
|
480
|
-
"resourcesListMs": 1.
|
|
552
|
+
"connectMs": 760.63275,
|
|
553
|
+
"toolsListMs": 7.431291999999985,
|
|
554
|
+
"promptsListMs": 0.8740839999999253,
|
|
555
|
+
"resourcesListMs": 1.2153749999999945
|
|
481
556
|
}
|
|
482
557
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MCP Observatory Run Report
|
|
2
2
|
|
|
3
|
-
Generated at 2026-
|
|
3
|
+
Generated at 2026-07-06T01:46:50.997Z
|
|
4
4
|
|
|
5
5
|
## Target and Environment Metadata
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ Generated at 2026-06-24T02:07:21.282Z
|
|
|
8
8
|
- Adapter: `local-process`
|
|
9
9
|
- Command: `npx -y @modelcontextprotocol/server-everything`
|
|
10
10
|
- Server: `mcp-servers/everything 2.0.0`
|
|
11
|
-
- Platform: `darwin
|
|
12
|
-
- Node: `
|
|
11
|
+
- Platform: `darwin 24.0.0`
|
|
12
|
+
- Node: `v25.8.1`
|
|
13
13
|
|
|
14
14
|
## Executive Summary
|
|
15
15
|
|
|
@@ -30,7 +30,7 @@ Generated at 2026-06-24T02:07:21.282Z
|
|
|
30
30
|
## At a Glance
|
|
31
31
|
|
|
32
32
|
- Safety verdict: **Needs review** — The server is usable, but caveated checks should be reviewed before agents depend on it.
|
|
33
|
-
- Top risks: schema-quality: Found
|
|
33
|
+
- Top risks: schema-quality: Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.
|
|
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: none
|
|
36
36
|
- Partial or flaky checks: schema-quality
|
|
@@ -47,13 +47,13 @@ _Use the `diff` command against another run artifact to classify regressions and
|
|
|
47
47
|
|
|
48
48
|
| Focus | Check | Status | Duration (ms) | Message |
|
|
49
49
|
| --- | --- | --- | --- | --- |
|
|
50
|
-
| healthy | conformance | pass |
|
|
51
|
-
| healthy | prompts | pass | 0.
|
|
52
|
-
| healthy | resources | pass | 1.
|
|
53
|
-
| healthy | security | pass |
|
|
54
|
-
| healthy | security-lite | pass | 0.
|
|
55
|
-
| healthy | tools | pass | 7.
|
|
56
|
-
| review | schema-quality | partial |
|
|
50
|
+
| healthy | conformance | pass | 5.80 | All 7 conformance checks passed. |
|
|
51
|
+
| healthy | prompts | pass | 0.87 | Advertised capability responded with the minimal expected shape (4 items). |
|
|
52
|
+
| healthy | resources | pass | 1.22 | Advertised capability responded with the minimal expected shape (9 items). |
|
|
53
|
+
| healthy | security | pass | 1.54 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
|
|
54
|
+
| healthy | security-lite | pass | 0.51 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
|
|
55
|
+
| healthy | tools | pass | 7.43 | Advertised capability responded with the minimal expected shape (13 items). |
|
|
56
|
+
| review | schema-quality | partial | 4.45 | Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info. |
|
|
57
57
|
|
|
58
58
|
## Evidence Snippets
|
|
59
59
|
|
|
@@ -102,27 +102,27 @@ Summary: Advertised capability responded with the minimal expected shape (9 item
|
|
|
102
102
|
|
|
103
103
|
### security — pass
|
|
104
104
|
|
|
105
|
-
Summary:
|
|
105
|
+
Summary: Found 2 security finding(s): 0 high, 0 medium, 2 low.
|
|
106
106
|
|
|
107
107
|
- Endpoint: `security/scan`
|
|
108
108
|
- Advertised: `true`
|
|
109
109
|
- Responded: `true`
|
|
110
110
|
- Minimal shape present: `true`
|
|
111
|
-
- Item count: `
|
|
112
|
-
- Identifiers:
|
|
113
|
-
- Diagnostics:
|
|
111
|
+
- Item count: `2`
|
|
112
|
+
- Identifiers: toggle-simulated-logging, toggle-subscriber-updates
|
|
113
|
+
- Diagnostics: [low] Tool "toggle-simulated-logging" has an empty schema but is marked as destructive., [low] Tool "toggle-subscriber-updates" has an empty schema but is marked as destructive.
|
|
114
114
|
|
|
115
115
|
### security-lite — pass
|
|
116
116
|
|
|
117
|
-
Summary:
|
|
117
|
+
Summary: Found 2 security finding(s): 0 high, 0 medium, 2 low.
|
|
118
118
|
|
|
119
119
|
- Endpoint: `security/scan-lite`
|
|
120
120
|
- Advertised: `true`
|
|
121
121
|
- Responded: `true`
|
|
122
122
|
- Minimal shape present: `true`
|
|
123
|
-
- Item count: `
|
|
124
|
-
- Identifiers:
|
|
125
|
-
- Diagnostics:
|
|
123
|
+
- Item count: `2`
|
|
124
|
+
- Identifiers: toggle-simulated-logging, toggle-subscriber-updates
|
|
125
|
+
- Diagnostics: [low] Tool "toggle-simulated-logging" has an empty schema but is marked as destructive., [low] Tool "toggle-subscriber-updates" has an empty schema but is marked as destructive.
|
|
126
126
|
|
|
127
127
|
### tools — pass
|
|
128
128
|
|
|
@@ -138,15 +138,15 @@ Summary: Advertised capability responded with the minimal expected shape (13 ite
|
|
|
138
138
|
|
|
139
139
|
### schema-quality — partial
|
|
140
140
|
|
|
141
|
-
Summary: Found
|
|
141
|
+
Summary: Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.
|
|
142
142
|
|
|
143
143
|
- Endpoint: `schema-quality/scan`
|
|
144
144
|
- Advertised: `true`
|
|
145
145
|
- Responded: `true`
|
|
146
146
|
- Minimal shape present: `true`
|
|
147
|
-
- Item count: `
|
|
148
|
-
- Identifiers: get-resource-links, get-resource-reference, gzip-file-as-resource, trigger-long-running-operation
|
|
149
|
-
- Diagnostics: [info] tool "get-resource-links": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Property 'resourceType' missing description (+
|
|
147
|
+
- Item count: `6`
|
|
148
|
+
- Identifiers: get-resource-links, get-resource-reference, gzip-file-as-resource, trigger-long-running-operation, args-prompt
|
|
149
|
+
- Diagnostics: [info] tool "get-resource-links": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Property 'resourceType' missing description (+3 more)
|
|
150
150
|
|
|
151
151
|
## Reproduction Commands
|
|
152
152
|
|
|
@@ -159,5 +159,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
|
159
159
|
|
|
160
160
|
- Artifact type: `run`
|
|
161
161
|
- Schema version: `1.0.0`
|
|
162
|
-
- Run ID: `run_2026-
|
|
162
|
+
- Run ID: `run_2026-07-06T014650996Z_273c0c65`
|
|
163
163
|
- Gate: `pass`
|