@kryptosai/mcp-observatory 0.23.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.
Files changed (46) hide show
  1. package/README.md +8 -7
  2. package/dist/src/commands/init-ci.d.ts +3 -0
  3. package/dist/src/commands/init-ci.js +24 -12
  4. package/dist/src/commands/init-ci.js.map +1 -1
  5. package/dist/src/reporters/pr-comment.js +6 -2
  6. package/dist/src/reporters/pr-comment.js.map +1 -1
  7. package/docs/certification-campaign-template.md +2 -2
  8. package/docs/mcp-safety-report-latest.md +12 -7
  9. package/docs/mcp-server-safety-index.md +56 -80
  10. package/docs/methodology.md +90 -0
  11. package/docs/metrics-dashboard.md +105 -0
  12. package/docs/paid-pilot-offer.md +21 -5
  13. package/docs/project-case-study.md +12 -8
  14. package/docs/proof.md +28 -15
  15. package/docs/public-post-drafts.md +18 -6
  16. package/docs/publish-readiness.md +1 -5
  17. package/docs/reference-evaluations.md +1 -1
  18. package/docs/safety-index/artifacts/antv-chart-server.json +2765 -0
  19. package/docs/safety-index/artifacts/antv-chart-server.md +156 -0
  20. package/docs/safety-index/artifacts/browsermcp-server.json +416 -0
  21. package/docs/safety-index/artifacts/browsermcp-server.md +163 -0
  22. package/docs/safety-index/artifacts/context7-server.json +286 -0
  23. package/docs/safety-index/artifacts/context7-server.md +163 -0
  24. package/docs/safety-index/artifacts/everything-server.json +482 -0
  25. package/docs/safety-index/artifacts/everything-server.md +163 -0
  26. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +955 -0
  27. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +163 -0
  28. package/docs/safety-index/artifacts/filesystem-server.json +583 -0
  29. package/docs/safety-index/artifacts/filesystem-server.md +156 -0
  30. package/docs/safety-index/artifacts/memory-server.json +469 -0
  31. package/docs/safety-index/artifacts/memory-server.md +156 -0
  32. package/docs/safety-index/artifacts/opentofu-server.json +387 -0
  33. package/docs/safety-index/artifacts/opentofu-server.md +163 -0
  34. package/docs/safety-index/artifacts/playwright-mcp-server.json +919 -0
  35. package/docs/safety-index/artifacts/playwright-mcp-server.md +156 -0
  36. package/docs/safety-index/artifacts/promptopia-server.json +442 -0
  37. package/docs/safety-index/artifacts/promptopia-server.md +156 -0
  38. package/docs/safety-index/artifacts/puppeteer-server.json +377 -0
  39. package/docs/safety-index/artifacts/puppeteer-server.md +163 -0
  40. package/docs/safety-index/artifacts/ref-tools-server.json +262 -0
  41. package/docs/safety-index/artifacts/ref-tools-server.md +156 -0
  42. package/docs/safety-index/artifacts/sequential-thinking-server.json +286 -0
  43. package/docs/safety-index/artifacts/sequential-thinking-server.md +156 -0
  44. package/docs/safety-index/maintainer-note-template.md +25 -0
  45. package/docs/safety-index/targets.json +192 -0
  46. package/package.json +12 -9
@@ -0,0 +1,156 @@
1
+ # MCP Observatory Run Report
2
+
3
+ Generated at 2026-06-24T02:07:22.515Z
4
+
5
+ ## Target and Environment Metadata
6
+
7
+ - Target: `sequential-thinking-server`
8
+ - Adapter: `local-process`
9
+ - Command: `npx -y @modelcontextprotocol/server-sequential-thinking`
10
+ - Server: `sequential-thinking-server 0.2.0`
11
+ - Platform: `darwin 25.5.0`
12
+ - Node: `v22.22.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 | 7 | 5 | 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 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 | 2.25 | All 7 conformance checks passed. |
51
+ | healthy | schema-quality | pass | 0.89 | All 1 item(s) have good schema quality. |
52
+ | healthy | security | pass | 1.13 | No security issues detected. |
53
+ | healthy | security-lite | pass | 0.11 | No security issues detected (lightweight scan). |
54
+ | healthy | tools | pass | 4.48 | Advertised capability responded with the minimal expected shape (1 item). |
55
+ | confirm intent | prompts | unsupported | 0.01 | Prompts are not advertised by the target. |
56
+ | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
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 1 tool(s). (+4 more)
71
+
72
+ ### schema-quality — pass
73
+
74
+ Summary: All 1 item(s) have good schema quality.
75
+
76
+ - Endpoint: `schema-quality/scan`
77
+ - Advertised: `true`
78
+ - Responded: `true`
79
+ - Minimal shape present: `true`
80
+ - Item count: `0`
81
+ - Identifiers: none
82
+ - Diagnostics: none
83
+
84
+ ### security — pass
85
+
86
+ Summary: No security issues detected.
87
+
88
+ - Endpoint: `security/scan`
89
+ - Advertised: `true`
90
+ - Responded: `true`
91
+ - Minimal shape present: `true`
92
+ - Item count: `0`
93
+ - Identifiers: none
94
+ - Diagnostics: none
95
+
96
+ ### security-lite — pass
97
+
98
+ Summary: No security issues detected (lightweight scan).
99
+
100
+ - Endpoint: `security/scan-lite`
101
+ - Advertised: `true`
102
+ - Responded: `true`
103
+ - Minimal shape present: `true`
104
+ - Item count: `0`
105
+ - Identifiers: none
106
+ - Diagnostics: none
107
+
108
+ ### tools — pass
109
+
110
+ Summary: Advertised capability responded with the minimal expected shape (1 item).
111
+
112
+ - Endpoint: `tools/list`
113
+ - Advertised: `true`
114
+ - Responded: `true`
115
+ - Minimal shape present: `true`
116
+ - Item count: `1`
117
+ - Identifiers: sequentialthinking
118
+ - Diagnostics: Sequential Thinking MCP Server running on stdio
119
+
120
+ ### prompts — unsupported
121
+
122
+ Summary: Prompts are not advertised by the target.
123
+
124
+ - Endpoint: `prompts/list`
125
+ - Advertised: `false`
126
+ - Responded: `false`
127
+ - Minimal shape present: `false`
128
+ - Item count: `0`
129
+ - Identifiers: none
130
+ - Diagnostics: none
131
+
132
+ ### resources — unsupported
133
+
134
+ Summary: Resources are not advertised by the target.
135
+
136
+ - Endpoint: `resources/list | resources/templates/list`
137
+ - Advertised: `false`
138
+ - Responded: `false`
139
+ - Minimal shape present: `false`
140
+ - Item count: `0`
141
+ - Identifiers: none
142
+ - Diagnostics: none
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-24T020722515Z_10f2e6a0`
156
+ - Gate: `pass`
@@ -0,0 +1,25 @@
1
+ # Maintainer Note Template
2
+
3
+ Subject: Reproducible MCP readiness report for `<server>`
4
+
5
+ Hi,
6
+
7
+ I ran MCP Observatory against `<server>` as part of the MCP Server Safety Index. This is not a vulnerability report or a drive-by badge request. It is a reproducible compatibility/security-readiness check for MCP servers before agents depend on them.
8
+
9
+ Report:
10
+
11
+ - command: `<command>`
12
+ - verdict: `<verdict>`
13
+ - failure class: `<failure-class>`
14
+ - JSON artifact: `<artifact-link>`
15
+ - Markdown report: `<report-link>`
16
+
17
+ The main thing the report shows is:
18
+
19
+ > `<one-sentence-finding>`
20
+
21
+ If useful, I can open a small PR that adds a read-only GitHub Action for this check. If the published package is not the right target, I can instead use the repo's local build/start command so CI validates pull request code.
22
+
23
+ No account is required. The generated workflow is read-only by default, and strict repos can pin the action to a full commit SHA.
24
+
25
+ Thanks for maintaining the MCP ecosystem.
@@ -0,0 +1,192 @@
1
+ [
2
+ {
3
+ "id": "everything-server",
4
+ "name": "Official everything server",
5
+ "repo": "https://github.com/modelcontextprotocol/servers",
6
+ "packageName": "@modelcontextprotocol/server-everything",
7
+ "category": "Reference",
8
+ "command": "npx",
9
+ "args": ["-y", "@modelcontextprotocol/server-everything"],
10
+ "timeoutMs": 60000,
11
+ "riskClass": "Reference compatibility",
12
+ "failureClass": "Broad protocol surface",
13
+ "whyItMatters": "Exercises tools, prompts, and resources in one official reference server.",
14
+ "reproductionNotes": "Zero-config official package; useful as a broad protocol baseline.",
15
+ "publicProof": "https://github.com/modelcontextprotocol/servers/pull/4392"
16
+ },
17
+ {
18
+ "id": "sequential-thinking-server",
19
+ "name": "Official sequential thinking server",
20
+ "repo": "https://github.com/modelcontextprotocol/servers",
21
+ "packageName": "@modelcontextprotocol/server-sequential-thinking",
22
+ "category": "Reference",
23
+ "command": "npx",
24
+ "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"],
25
+ "timeoutMs": 60000,
26
+ "riskClass": "Reference compatibility",
27
+ "failureClass": "Tool schema clarity",
28
+ "whyItMatters": "Small official tools server that makes schema readability easy to inspect.",
29
+ "reproductionNotes": "Zero-config official package."
30
+ },
31
+ {
32
+ "id": "memory-server",
33
+ "name": "Official memory server",
34
+ "repo": "https://github.com/modelcontextprotocol/servers",
35
+ "packageName": "@modelcontextprotocol/server-memory",
36
+ "category": "Reference / Memory",
37
+ "command": "npx",
38
+ "args": ["-y", "@modelcontextprotocol/server-memory"],
39
+ "timeoutMs": 60000,
40
+ "riskClass": "Agent memory mutation",
41
+ "failureClass": "Persistent state tools",
42
+ "whyItMatters": "Memory tools are agent-facing state; their schemas and write behavior should be visible before use.",
43
+ "reproductionNotes": "Zero-config official package."
44
+ },
45
+ {
46
+ "id": "filesystem-server",
47
+ "name": "Official filesystem server",
48
+ "repo": "https://github.com/modelcontextprotocol/servers",
49
+ "packageName": "@modelcontextprotocol/server-filesystem",
50
+ "category": "Filesystem",
51
+ "command": "npx",
52
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "examples/filesystem-fixture"],
53
+ "timeoutMs": 30000,
54
+ "riskClass": "Filesystem boundary",
55
+ "failureClass": "Sandboxed filesystem access",
56
+ "whyItMatters": "Filesystem tools need harmless test roots and clear read/write boundaries.",
57
+ "reproductionNotes": "Runs against the checked-in harmless fixture directory."
58
+ },
59
+ {
60
+ "id": "context7-server",
61
+ "name": "Context7",
62
+ "repo": "https://github.com/upstash/context7",
63
+ "packageName": "@upstash/context7-mcp",
64
+ "category": "Documentation / Search",
65
+ "command": "npx",
66
+ "args": ["-y", "@upstash/context7-mcp"],
67
+ "timeoutMs": 60000,
68
+ "riskClass": "Untrusted content retrieval",
69
+ "failureClass": "Prompt-injection-sensitive retrieval",
70
+ "whyItMatters": "Documentation retrieval tools can return untrusted text into agent context.",
71
+ "reproductionNotes": "Zero-config public package."
72
+ },
73
+ {
74
+ "id": "promptopia-server",
75
+ "name": "Promptopia",
76
+ "repo": "https://www.npmjs.com/package/promptopia-mcp",
77
+ "packageName": "promptopia-mcp",
78
+ "category": "Prompts",
79
+ "command": "npx",
80
+ "args": ["-y", "promptopia-mcp"],
81
+ "env": {
82
+ "PROMPTS_DIR": "examples/promptopia-prompts"
83
+ },
84
+ "timeoutMs": 30000,
85
+ "riskClass": "Prompt surface",
86
+ "failureClass": "Prompt/resource contract",
87
+ "whyItMatters": "Prompt-serving MCP packages need predictable prompt inventory and startup behavior.",
88
+ "reproductionNotes": "Uses the checked-in prompt fixture through package defaults."
89
+ },
90
+ {
91
+ "id": "ref-tools-server",
92
+ "name": "Ref tools",
93
+ "repo": "https://www.npmjs.com/package/ref-tools-mcp",
94
+ "packageName": "ref-tools-mcp",
95
+ "category": "Developer Tools",
96
+ "command": "npx",
97
+ "args": ["-y", "ref-tools-mcp"],
98
+ "timeoutMs": 60000,
99
+ "riskClass": "Developer reference tooling",
100
+ "failureClass": "Prompt/tool inventory",
101
+ "whyItMatters": "Developer tools become agent dependencies when wired into coding workflows.",
102
+ "reproductionNotes": "Zero-config public package."
103
+ },
104
+ {
105
+ "id": "opentofu-server",
106
+ "name": "OpenTofu MCP server",
107
+ "repo": "https://github.com/opentofu/opentofu-mcp-server",
108
+ "packageName": "@opentofu/opentofu-mcp-server",
109
+ "category": "Infrastructure",
110
+ "command": "npx",
111
+ "args": ["-y", "@opentofu/opentofu-mcp-server"],
112
+ "timeoutMs": 60000,
113
+ "riskClass": "Infrastructure-as-code",
114
+ "failureClass": "Infrastructure tool surface",
115
+ "whyItMatters": "Infrastructure tools can influence production configuration and should have reviewable MCP surfaces.",
116
+ "reproductionNotes": "Zero-config public package."
117
+ },
118
+ {
119
+ "id": "puppeteer-server",
120
+ "name": "Puppeteer MCP server",
121
+ "repo": "https://www.npmjs.com/package/puppeteer-mcp-server",
122
+ "packageName": "puppeteer-mcp-server",
123
+ "category": "Browser Automation",
124
+ "command": "npx",
125
+ "args": ["-y", "puppeteer-mcp-server"],
126
+ "timeoutMs": 60000,
127
+ "securitySuppressions": ["puppeteer_evaluate:shell-injection"],
128
+ "riskClass": "Browser control",
129
+ "failureClass": "Browser/code execution boundary",
130
+ "whyItMatters": "Browser automation gives agents navigation, page state, and sometimes code-evaluation powers.",
131
+ "reproductionNotes": "Intentional browser evaluation is suppressed so remaining findings stay readable."
132
+ },
133
+ {
134
+ "id": "browsermcp-server",
135
+ "name": "BrowserMCP",
136
+ "repo": "https://github.com/BrowserMCP/mcp",
137
+ "packageName": "@browsermcp/mcp",
138
+ "category": "Browser Automation",
139
+ "command": "npx",
140
+ "args": ["-y", "@browsermcp/mcp"],
141
+ "timeoutMs": 60000,
142
+ "riskClass": "Browser control",
143
+ "failureClass": "Browser-control boundary",
144
+ "whyItMatters": "Browser-control servers need visible tool boundaries before agents drive real browsing sessions.",
145
+ "reproductionNotes": "Zero-config public package.",
146
+ "publicProof": "https://github.com/BrowserMCP/mcp/pull/189"
147
+ },
148
+ {
149
+ "id": "playwright-mcp-server",
150
+ "name": "Microsoft Playwright MCP",
151
+ "repo": "https://github.com/microsoft/playwright-mcp",
152
+ "packageName": "@playwright/mcp",
153
+ "category": "Browser Automation",
154
+ "command": "npx",
155
+ "args": ["-y", "@playwright/mcp"],
156
+ "timeoutMs": 60000,
157
+ "riskClass": "Browser control",
158
+ "failureClass": "Browser/code execution boundary",
159
+ "whyItMatters": "Popular browser automation servers need explicit review around navigation, screenshots, and code evaluation.",
160
+ "reproductionNotes": "Zero-config public package; security findings represent policy-review prompts, not a vulnerability claim."
161
+ },
162
+ {
163
+ "id": "antv-chart-server",
164
+ "name": "AntV chart MCP server",
165
+ "repo": "https://github.com/antvis/mcp-server-chart",
166
+ "packageName": "@antv/mcp-server-chart",
167
+ "category": "Visualization",
168
+ "command": "npx",
169
+ "args": ["-y", "@antv/mcp-server-chart"],
170
+ "timeoutMs": 60000,
171
+ "riskClass": "Generated artifacts",
172
+ "failureClass": "Artifact-producing tools",
173
+ "whyItMatters": "Visualization servers produce files or structured outputs agents may pass into workflows.",
174
+ "reproductionNotes": "Zero-config public package.",
175
+ "publicProof": "https://github.com/antvis/mcp-server-chart/pull/312"
176
+ },
177
+ {
178
+ "id": "executeautomation-playwright-server",
179
+ "name": "ExecuteAutomation Playwright MCP",
180
+ "repo": "https://github.com/executeautomation/mcp-playwright",
181
+ "packageName": "@executeautomation/playwright-mcp-server",
182
+ "category": "Browser Automation",
183
+ "command": "npx",
184
+ "args": ["-y", "@executeautomation/playwright-mcp-server"],
185
+ "timeoutMs": 60000,
186
+ "riskClass": "Browser control",
187
+ "failureClass": "Startup/listing reproducibility",
188
+ "whyItMatters": "A public browser automation package that fails basic listing checks shows why reproducible readiness evidence matters.",
189
+ "reproductionNotes": "Evaluated as a public package; current result should be treated as a maintainer conversation starter.",
190
+ "publicProof": "https://github.com/executeautomation/mcp-playwright/pull/225"
191
+ }
192
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kryptosai/mcp-observatory",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "The CI and security gate for MCP servers before agents depend on them.",
5
5
  "mcpName": "io.github.KryptosAI/mcp-observatory",
6
6
  "license": "MIT",
@@ -42,7 +42,13 @@
42
42
  "build": "tsc -p tsconfig.json",
43
43
  "cli": "tsx src/cli.ts",
44
44
  "dashboard:build": "tsx scripts/build-dashboard.ts",
45
+ "metrics:collect": "tsx scripts/metrics-dashboard.ts collect",
46
+ "metrics:build": "tsx scripts/metrics-dashboard.ts build",
47
+ "metrics:refresh": "tsx scripts/metrics-dashboard.ts refresh",
48
+ "metrics:open": "tsx scripts/metrics-dashboard.ts open",
49
+ "metrics:serve": "tsx scripts/metrics-dashboard.ts serve",
45
50
  "integration:real": "tsx scripts/run-real-server-matrix.ts",
51
+ "safety-index": "tsx scripts/run-safety-index.ts",
46
52
  "lint": "eslint .",
47
53
  "prepack": "npm run build",
48
54
  "proof:refresh": "tsx scripts/refresh-proof-artifacts.ts",
@@ -95,18 +101,15 @@
95
101
  },
96
102
  "devDependencies": {
97
103
  "@eslint/js": "10.0.1",
98
- "@semantic-release/changelog": "^6.0.3",
99
- "@semantic-release/git": "^10.0.1",
100
- "@types/node": "25.9.3",
101
- "@typescript-eslint/eslint-plugin": "8.61.1",
102
- "@typescript-eslint/parser": "8.61.1",
104
+ "@types/node": "26.0.0",
105
+ "@typescript-eslint/eslint-plugin": "8.62.0",
106
+ "@typescript-eslint/parser": "8.62.0",
103
107
  "ajv": "8.20.0",
104
108
  "eslint": "10.5.0",
105
- "globals": "17.6.0",
106
- "semantic-release": "^25.0.5",
109
+ "globals": "17.7.0",
107
110
  "tsx": "4.22.4",
108
111
  "typescript": "6.0.3",
109
- "typescript-eslint": "8.61.1",
112
+ "typescript-eslint": "8.62.0",
110
113
  "vitest": "4.1.9"
111
114
  }
112
115
  }