@kryptosai/mcp-observatory 1.29.1 → 1.30.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/README.md +65 -6
- package/README.zh-CN.md +71 -8
- package/dist/src/checks/runtime-profile.d.ts +5 -0
- package/dist/src/checks/runtime-profile.js +214 -0
- package/dist/src/checks/runtime-profile.js.map +1 -0
- package/dist/src/checks/security-rules.js +18 -0
- package/dist/src/checks/security-rules.js.map +1 -1
- package/dist/src/checks/skill-scan.d.ts +46 -0
- package/dist/src/checks/skill-scan.js +665 -0
- package/dist/src/checks/skill-scan.js.map +1 -0
- package/dist/src/cli.js +6 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/enforce.d.ts +12 -0
- package/dist/src/commands/enforce.js +187 -0
- package/dist/src/commands/enforce.js.map +1 -0
- package/dist/src/commands/scan.js +36 -9
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/skill-scan.d.ts +6 -0
- package/dist/src/commands/skill-scan.js +62 -0
- package/dist/src/commands/skill-scan.js.map +1 -0
- package/dist/src/commands/test.js +13 -0
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/discovery.d.ts +15 -1
- package/dist/src/discovery.js +219 -9
- package/dist/src/discovery.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/receipt.d.ts +4 -1
- package/dist/src/receipt.js +85 -0
- package/dist/src/receipt.js.map +1 -1
- package/dist/src/reporters/markdown.js +39 -0
- package/dist/src/reporters/markdown.js.map +1 -1
- package/dist/src/reporters/terminal.d.ts +2 -0
- package/dist/src/reporters/terminal.js +53 -1
- package/dist/src/reporters/terminal.js.map +1 -1
- package/dist/src/runner.js +6 -0
- package/dist/src/runner.js.map +1 -1
- package/dist/src/types.d.ts +26 -1
- package/docs/mcp-server-safety-index.md +13 -11
- package/docs/safety-index/artifacts/github-mcp-server.json +1707 -0
- package/docs/safety-index/artifacts/github-mcp-server.md +169 -0
- package/docs/safety-index/targets.json +17 -0
- package/package.json +2 -2
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-07-08T21:35:18.919Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `github-mcp-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y @modelcontextprotocol/server-github`
|
|
10
|
+
- Server: `github-mcp-server 0.6.2`
|
|
11
|
+
- Platform: `win32 10.0.26200`
|
|
12
|
+
- Node: `v24.15.0`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
**Health Score: 77/100 (C)**
|
|
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 | 67/100 | 20% |
|
|
24
|
+
| Performance | 100/100 | 10% |
|
|
25
|
+
|
|
26
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| pass | 8 | 2 | 0 | 4 | 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: attack-sim: Safe attack simulation found 5 finding(s): 0 high, 5 medium, 0 low.; schema-quality: Found 51 quality finding(s) across 26 item(s): 0 warnings, 51 info.; security: Found 1 security finding(s): 0 high, 1 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, attack-sim
|
|
37
|
+
- Skipped checks: none
|
|
38
|
+
- Unsupported checks: prompts, resources
|
|
39
|
+
- Suggested next step: Review the caveated checks next: security-lite, schema-quality, security, attack-sim.
|
|
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 | 3.17 | All 7 conformance checks passed. |
|
|
51
|
+
| healthy | tools | pass | 4.37 | Advertised capability responded with the minimal expected shape (26 items). |
|
|
52
|
+
| review | attack-sim | partial | 2.75 | Safe attack simulation found 5 finding(s): 0 high, 5 medium, 0 low. |
|
|
53
|
+
| review | schema-quality | partial | 1.84 | Found 51 quality finding(s) across 26 item(s): 0 warnings, 51 info. |
|
|
54
|
+
| review | security | partial | 2.66 | Found 1 security finding(s): 0 high, 1 medium, 0 low. |
|
|
55
|
+
| review | security-lite | partial | 0.13 | Found 1 security finding(s): 0 high, 1 medium, 0 low. |
|
|
56
|
+
| confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
|
|
57
|
+
| confirm intent | resources | unsupported | 0.01 | Resources are not advertised by the target. |
|
|
58
|
+
|
|
59
|
+
## Evidence Snippets
|
|
60
|
+
|
|
61
|
+
### conformance — pass
|
|
62
|
+
|
|
63
|
+
Summary: All 7 conformance checks passed.
|
|
64
|
+
|
|
65
|
+
- Endpoint: `conformance/check`
|
|
66
|
+
- Advertised: `true`
|
|
67
|
+
- Responded: `true`
|
|
68
|
+
- Minimal shape present: `true`
|
|
69
|
+
- Item count: `7`
|
|
70
|
+
- 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 26 tool(s). (+4 more)
|
|
72
|
+
|
|
73
|
+
### tools — pass
|
|
74
|
+
|
|
75
|
+
Summary: Advertised capability responded with the minimal expected shape (26 items).
|
|
76
|
+
|
|
77
|
+
- Endpoint: `tools/list`
|
|
78
|
+
- Advertised: `true`
|
|
79
|
+
- Responded: `true`
|
|
80
|
+
- Minimal shape present: `true`
|
|
81
|
+
- Item count: `26`
|
|
82
|
+
- Identifiers: create_or_update_file, search_repositories, create_repository, get_file_contents, push_files (+21 more)
|
|
83
|
+
- Diagnostics: GitHub MCP Server running on stdio
|
|
84
|
+
|
|
85
|
+
### attack-sim — partial
|
|
86
|
+
|
|
87
|
+
Summary: Safe attack simulation found 5 finding(s): 0 high, 5 medium, 0 low.
|
|
88
|
+
|
|
89
|
+
- Endpoint: `attack-sim/safe`
|
|
90
|
+
- Advertised: `true`
|
|
91
|
+
- Responded: `true`
|
|
92
|
+
- Minimal shape present: `true`
|
|
93
|
+
- Item count: `5`
|
|
94
|
+
- Identifiers: create_or_update_file, create_issue, create_pull_request, update_issue, create_pull_request_review
|
|
95
|
+
- Diagnostics: [medium] Tool "create_or_update_file" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "create_issue" combines broad parameters (body) with destructive or non-read-only behavior., [medium] Tool "create_pull_request" combines broad parameters (body) with destructive or non-read-only behavior. (+2 more)
|
|
96
|
+
|
|
97
|
+
### schema-quality — partial
|
|
98
|
+
|
|
99
|
+
Summary: Found 51 quality finding(s) across 26 item(s): 0 warnings, 51 info.
|
|
100
|
+
|
|
101
|
+
- Endpoint: `schema-quality/scan`
|
|
102
|
+
- Advertised: `true`
|
|
103
|
+
- Responded: `true`
|
|
104
|
+
- Minimal shape present: `true`
|
|
105
|
+
- Item count: `51`
|
|
106
|
+
- Identifiers: create_issue, list_commits, list_issues, update_issue, add_issue_comment (+4 more)
|
|
107
|
+
- Diagnostics: [info] tool "create_issue": Property 'owner' missing description, [info] tool "create_issue": Property 'repo' missing description, [info] tool "create_issue": Property 'title' missing description (+48 more)
|
|
108
|
+
|
|
109
|
+
### security — partial
|
|
110
|
+
|
|
111
|
+
Summary: Found 1 security finding(s): 0 high, 1 medium, 0 low.
|
|
112
|
+
|
|
113
|
+
- Endpoint: `security/scan`
|
|
114
|
+
- Advertised: `true`
|
|
115
|
+
- Responded: `true`
|
|
116
|
+
- Minimal shape present: `true`
|
|
117
|
+
- Item count: `1`
|
|
118
|
+
- Identifiers: create_or_update_file
|
|
119
|
+
- Diagnostics: [medium] Tool "create_or_update_file" accepts filesystem paths and has destructive capabilities.
|
|
120
|
+
|
|
121
|
+
### security-lite — partial
|
|
122
|
+
|
|
123
|
+
Summary: Found 1 security finding(s): 0 high, 1 medium, 0 low.
|
|
124
|
+
|
|
125
|
+
- Endpoint: `security/scan-lite`
|
|
126
|
+
- Advertised: `true`
|
|
127
|
+
- Responded: `true`
|
|
128
|
+
- Minimal shape present: `true`
|
|
129
|
+
- Item count: `1`
|
|
130
|
+
- Identifiers: create_or_update_file
|
|
131
|
+
- Diagnostics: [medium] Tool "create_or_update_file" accepts filesystem paths and has destructive capabilities.
|
|
132
|
+
|
|
133
|
+
### prompts — unsupported
|
|
134
|
+
|
|
135
|
+
Summary: Prompts are not advertised by the target.
|
|
136
|
+
|
|
137
|
+
- Endpoint: `prompts/list`
|
|
138
|
+
- Advertised: `false`
|
|
139
|
+
- Responded: `false`
|
|
140
|
+
- Minimal shape present: `false`
|
|
141
|
+
- Item count: `0`
|
|
142
|
+
- Identifiers: none
|
|
143
|
+
- Diagnostics: none
|
|
144
|
+
|
|
145
|
+
### resources — unsupported
|
|
146
|
+
|
|
147
|
+
Summary: Resources are not advertised by the target.
|
|
148
|
+
|
|
149
|
+
- Endpoint: `resources/list | resources/templates/list`
|
|
150
|
+
- Advertised: `false`
|
|
151
|
+
- Responded: `false`
|
|
152
|
+
- Minimal shape present: `false`
|
|
153
|
+
- Item count: `0`
|
|
154
|
+
- Identifiers: none
|
|
155
|
+
- Diagnostics: none
|
|
156
|
+
|
|
157
|
+
## Reproduction Commands
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm run cli -- run --target <path-to-target-config.json>
|
|
161
|
+
npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Artifact Provenance
|
|
165
|
+
|
|
166
|
+
- Artifact type: `run`
|
|
167
|
+
- Schema version: `1.0.0`
|
|
168
|
+
- Run ID: `run_2026-07-08T213518919Z_6d8ffd44`
|
|
169
|
+
- Gate: `pass`
|
|
@@ -163,6 +163,23 @@
|
|
|
163
163
|
"whyItMatters": "Coding agents often need Git context and can cause real repository changes if tool boundaries are unclear.",
|
|
164
164
|
"reproductionNotes": "Zero-config public package. Keep tool invocation read-only unless a harmless fixture repository is added."
|
|
165
165
|
},
|
|
166
|
+
{
|
|
167
|
+
"id": "github-mcp-server",
|
|
168
|
+
"name": "Official GitHub MCP server",
|
|
169
|
+
"repo": "https://github.com/modelcontextprotocol/servers",
|
|
170
|
+
"packageName": "@modelcontextprotocol/server-github",
|
|
171
|
+
"category": "Developer Tools",
|
|
172
|
+
"command": "npx",
|
|
173
|
+
"args": [
|
|
174
|
+
"-y",
|
|
175
|
+
"@modelcontextprotocol/server-github"
|
|
176
|
+
],
|
|
177
|
+
"timeoutMs": 60000,
|
|
178
|
+
"riskClass": "Repository mutation and PR control",
|
|
179
|
+
"failureClass": "Write/merge tool boundary",
|
|
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
|
+
"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
|
+
},
|
|
166
183
|
{
|
|
167
184
|
"id": "opentofu-server",
|
|
168
185
|
"name": "OpenTofu MCP server",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kryptosai/mcp-observatory",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.30.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",
|
|
@@ -172,11 +172,11 @@
|
|
|
172
172
|
"@types/node": "26.1.0",
|
|
173
173
|
"@typescript-eslint/eslint-plugin": "8.63.0",
|
|
174
174
|
"@typescript-eslint/parser": "8.63.0",
|
|
175
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
175
176
|
"ajv": "8.20.0",
|
|
176
177
|
"eslint": "10.6.0",
|
|
177
178
|
"globals": "17.7.0",
|
|
178
179
|
"tsx": "4.23.0",
|
|
179
|
-
"@vitest/coverage-v8": "4.1.10",
|
|
180
180
|
"typescript": "6.0.3",
|
|
181
181
|
"typescript-eslint": "8.63.0",
|
|
182
182
|
"vitest": "4.1.10"
|