@kryptosai/mcp-observatory 1.28.2 → 1.28.3

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 (134) hide show
  1. package/CONTRIBUTORS.md +4 -1
  2. package/README.md +109 -14
  3. package/README.zh-CN.md +654 -0
  4. package/dist/src/adapters/http.js +13 -4
  5. package/dist/src/adapters/http.js.map +1 -1
  6. package/dist/src/checks/runtime-profile.d.ts +5 -0
  7. package/dist/src/checks/runtime-profile.js +214 -0
  8. package/dist/src/checks/runtime-profile.js.map +1 -0
  9. package/dist/src/checks/security-rules.js +18 -0
  10. package/dist/src/checks/security-rules.js.map +1 -1
  11. package/dist/src/checks/security.js +33 -65
  12. package/dist/src/checks/security.js.map +1 -1
  13. package/dist/src/checks/skill-scan.d.ts +46 -0
  14. package/dist/src/checks/skill-scan.js +665 -0
  15. package/dist/src/checks/skill-scan.js.map +1 -0
  16. package/dist/src/cli.js +15 -2
  17. package/dist/src/cli.js.map +1 -1
  18. package/dist/src/commands/enforce.d.ts +12 -0
  19. package/dist/src/commands/enforce.js +187 -0
  20. package/dist/src/commands/enforce.js.map +1 -0
  21. package/dist/src/commands/helpers.d.ts +2 -1
  22. package/dist/src/commands/helpers.js +9 -1
  23. package/dist/src/commands/helpers.js.map +1 -1
  24. package/dist/src/commands/legacy.js +3 -0
  25. package/dist/src/commands/legacy.js.map +1 -1
  26. package/dist/src/commands/risk-graph.d.ts +2 -0
  27. package/dist/src/commands/risk-graph.js +64 -0
  28. package/dist/src/commands/risk-graph.js.map +1 -0
  29. package/dist/src/commands/scan.js +36 -9
  30. package/dist/src/commands/scan.js.map +1 -1
  31. package/dist/src/commands/score.js.map +1 -1
  32. package/dist/src/commands/skill-scan.d.ts +6 -0
  33. package/dist/src/commands/skill-scan.js +62 -0
  34. package/dist/src/commands/skill-scan.js.map +1 -0
  35. package/dist/src/commands/test.js +13 -0
  36. package/dist/src/commands/test.js.map +1 -1
  37. package/dist/src/commands/watch.js +13 -8
  38. package/dist/src/commands/watch.js.map +1 -1
  39. package/dist/src/discovery.d.ts +15 -1
  40. package/dist/src/discovery.js +251 -35
  41. package/dist/src/discovery.js.map +1 -1
  42. package/dist/src/index.d.ts +3 -1
  43. package/dist/src/index.js +3 -1
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/receipt.d.ts +4 -1
  46. package/dist/src/receipt.js +85 -0
  47. package/dist/src/receipt.js.map +1 -1
  48. package/dist/src/reporters/markdown.js +39 -0
  49. package/dist/src/reporters/markdown.js.map +1 -1
  50. package/dist/src/reporters/terminal.d.ts +2 -0
  51. package/dist/src/reporters/terminal.js +55 -2
  52. package/dist/src/reporters/terminal.js.map +1 -1
  53. package/dist/src/risk-graph.d.ts +64 -0
  54. package/dist/src/risk-graph.js +452 -0
  55. package/dist/src/risk-graph.js.map +1 -0
  56. package/dist/src/runner.js +6 -0
  57. package/dist/src/runner.js.map +1 -1
  58. package/dist/src/server.d.ts +1 -3
  59. package/dist/src/server.js +29 -645
  60. package/dist/src/server.js.map +1 -1
  61. package/dist/src/storage.js +13 -9
  62. package/dist/src/storage.js.map +1 -1
  63. package/dist/src/telemetry.d.ts +7 -0
  64. package/dist/src/telemetry.js.map +1 -1
  65. package/dist/src/tools/check-server.d.ts +27 -0
  66. package/dist/src/tools/check-server.js +46 -0
  67. package/dist/src/tools/check-server.js.map +1 -0
  68. package/dist/src/tools/ci-report.d.ts +21 -0
  69. package/dist/src/tools/ci-report.js +38 -0
  70. package/dist/src/tools/ci-report.js.map +1 -0
  71. package/dist/src/tools/diff-runs.d.ts +28 -0
  72. package/dist/src/tools/diff-runs.js +39 -0
  73. package/dist/src/tools/diff-runs.js.map +1 -0
  74. package/dist/src/tools/get-history.d.ts +21 -0
  75. package/dist/src/tools/get-history.js +37 -0
  76. package/dist/src/tools/get-history.js.map +1 -0
  77. package/dist/src/tools/get-last-run.d.ts +21 -0
  78. package/dist/src/tools/get-last-run.js +47 -0
  79. package/dist/src/tools/get-last-run.js.map +1 -0
  80. package/dist/src/tools/helpers.d.ts +8 -0
  81. package/dist/src/tools/helpers.js +32 -0
  82. package/dist/src/tools/helpers.js.map +1 -0
  83. package/dist/src/tools/lock-verify.d.ts +21 -0
  84. package/dist/src/tools/lock-verify.js +47 -0
  85. package/dist/src/tools/lock-verify.js.map +1 -0
  86. package/dist/src/tools/record.d.ts +23 -0
  87. package/dist/src/tools/record.js +48 -0
  88. package/dist/src/tools/record.js.map +1 -0
  89. package/dist/src/tools/replay.d.ts +21 -0
  90. package/dist/src/tools/replay.js +54 -0
  91. package/dist/src/tools/replay.js.map +1 -0
  92. package/dist/src/tools/scan.d.ts +18 -0
  93. package/dist/src/tools/scan.js +43 -0
  94. package/dist/src/tools/scan.js.map +1 -0
  95. package/dist/src/tools/score-server.d.ts +23 -0
  96. package/dist/src/tools/score-server.js +53 -0
  97. package/dist/src/tools/score-server.js.map +1 -0
  98. package/dist/src/tools/suggest-servers.d.ts +21 -0
  99. package/dist/src/tools/suggest-servers.js +114 -0
  100. package/dist/src/tools/suggest-servers.js.map +1 -0
  101. package/dist/src/tools/verify-tool.d.ts +25 -0
  102. package/dist/src/tools/verify-tool.js +48 -0
  103. package/dist/src/tools/verify-tool.js.map +1 -0
  104. package/dist/src/tools/watch.d.ts +23 -0
  105. package/dist/src/tools/watch.js +67 -0
  106. package/dist/src/tools/watch.js.map +1 -0
  107. package/dist/src/types.d.ts +26 -1
  108. package/dist/src/utils/security.d.ts +3 -0
  109. package/dist/src/utils/security.js +37 -0
  110. package/dist/src/utils/security.js.map +1 -0
  111. package/dist/src/validate.d.ts +1 -0
  112. package/dist/src/validate.js +119 -35
  113. package/dist/src/validate.js.map +1 -1
  114. package/docs/agent-tasks.md +1 -1
  115. package/docs/commercial-boundary.md +9 -1
  116. package/docs/contributor-recognition.md +2 -0
  117. package/docs/demo.svg +1 -59
  118. package/docs/mcp-receipts.md +9 -0
  119. package/docs/mcp-server-safety-index.md +21 -16
  120. package/docs/metrics-dashboard.md +17 -1
  121. package/docs/private-mcp-fleet-risk-graph.md +69 -0
  122. package/docs/receipt-graph.md +118 -31
  123. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +1745 -0
  124. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +169 -0
  125. package/docs/safety-index/artifacts/filesystem-mcp-server.json +786 -0
  126. package/docs/safety-index/artifacts/filesystem-mcp-server.md +169 -0
  127. package/docs/safety-index/artifacts/github-mcp-server.json +1707 -0
  128. package/docs/safety-index/artifacts/github-mcp-server.md +169 -0
  129. package/docs/safety-index/mcp-risk-graph.html +167 -0
  130. package/docs/safety-index/mcp-risk-graph.json +669 -0
  131. package/docs/safety-index/mcp-risk-graph.md +47 -0
  132. package/docs/safety-index/targets.json +57 -0
  133. package/docs/sample-private-fleet-risk-graph.md +90 -0
  134. package/package.json +21 -11
@@ -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`
@@ -0,0 +1,167 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>MCP Risk Graph</title>
7
+ <style>
8
+ body { margin: 0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #172033; background: #f7f9fc; }
9
+ header { padding: 28px 32px 18px; background: #ffffff; border-bottom: 1px solid #d8e0ea; }
10
+ h1 { margin: 0 0 8px; font-size: 32px; letter-spacing: 0; }
11
+ main { padding: 24px 32px 40px; }
12
+ .summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 20px; }
13
+ .card, table { background: #ffffff; border: 1px solid #d8e0ea; border-radius: 8px; }
14
+ .card { padding: 16px; }
15
+ .card span { display: block; color: #667085; font-size: 13px; }
16
+ .card strong { display: block; margin-top: 6px; font-size: 24px; }
17
+ table { width: 100%; border-collapse: collapse; overflow: hidden; }
18
+ th, td { padding: 11px 12px; border-bottom: 1px solid #e5ebf2; text-align: left; vertical-align: top; font-size: 14px; }
19
+ th { color: #475467; background: #f0f4f8; font-size: 12px; text-transform: uppercase; }
20
+ code { font-size: 12px; white-space: normal; }
21
+ .pill { display: inline-block; padding: 3px 8px; border-radius: 999px; background: #e8eef6; font-size: 12px; }
22
+ .critical, .high { background: #fee2e2; color: #991b1b; }
23
+ .medium { background: #fef3c7; color: #92400e; }
24
+ .low { background: #dcfce7; color: #166534; }
25
+ </style>
26
+ </head>
27
+ <body>
28
+ <header>
29
+ <h1>MCP Risk Graph</h1>
30
+ <p>MCP Observatory maps the risk graph of agent toolchains before agents depend on them.</p>
31
+ </header>
32
+ <main>
33
+ <section class="summary">
34
+ <article class="card"><span>Servers</span><strong>15</strong></article>
35
+ <article class="card"><span>Capability boundaries</span><strong>5</strong></article>
36
+ <article class="card"><span>Highest risk</span><strong>high</strong></article>
37
+ <article class="card"><span>Generated</span><strong>2026-07-06</strong></article>
38
+ </section>
39
+ <table>
40
+ <thead><tr><th>Server</th><th>Boundary</th><th>Risk</th><th>Action</th><th>Receipt</th><th>CI command</th><th>Evidence</th></tr></thead>
41
+ <tbody>
42
+ <tr>
43
+ <td><strong>@cyanheads/git-mcp-server</strong><br><small>@cyanheads/git-mcp-server</small></td>
44
+ <td><span class="pill">filesystem</span></td>
45
+ <td><span class="pill medium">medium</span></td>
46
+ <td>gate</td>
47
+ <td>not_generated</td>
48
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @cyanheads/git-mcp-server&quot; --sarif --schedule weekly</code></td>
49
+ <td><code>run-artifact:docs/safety-index/artifacts/cyanheads-git-mcp-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/cyanheads-git-mcp-server.json</code></td>
50
+ </tr><tr>
51
+ <td><strong>Browser MCP</strong><br><small>@browsermcp/mcp</small></td>
52
+ <td><span class="pill">browser</span></td>
53
+ <td><span class="pill low">low</span></td>
54
+ <td>allow</td>
55
+ <td>not_generated</td>
56
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @browsermcp/mcp&quot; --sarif --schedule weekly</code></td>
57
+ <td><code>run-artifact:docs/safety-index/artifacts/browsermcp-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/browsermcp-server.json</code></td>
58
+ </tr><tr>
59
+ <td><strong>Context7</strong><br><small>@upstash/context7-mcp</small></td>
60
+ <td><span class="pill">unknown</span></td>
61
+ <td><span class="pill medium">medium</span></td>
62
+ <td>gate</td>
63
+ <td>not_generated</td>
64
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @upstash/context7-mcp&quot; --sarif --schedule weekly</code></td>
65
+ <td><code>run-artifact:docs/safety-index/artifacts/context7-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/context7-server.json</code></td>
66
+ </tr><tr>
67
+ <td><strong>example-servers/puppeteer</strong><br><small>puppeteer-mcp-server</small></td>
68
+ <td><span class="pill">browser</span></td>
69
+ <td><span class="pill high">high</span></td>
70
+ <td>quarantine</td>
71
+ <td>not_generated</td>
72
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y puppeteer-mcp-server&quot; --sarif --schedule weekly</code></td>
73
+ <td><code>run-artifact:docs/safety-index/artifacts/puppeteer-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/puppeteer-server.json</code></td>
74
+ </tr><tr>
75
+ <td><strong>kubernetes</strong><br><small>mcp-server-kubernetes</small></td>
76
+ <td><span class="pill">infra-cloud</span></td>
77
+ <td><span class="pill high">high</span></td>
78
+ <td>quarantine</td>
79
+ <td>not_generated</td>
80
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y mcp-server-kubernetes&quot; --sarif --schedule weekly</code></td>
81
+ <td><code>run-artifact:docs/safety-index/artifacts/kubernetes-server.attack.json</code><br><code>attack-sim:docs/safety-index/artifacts/kubernetes-server.attack.json</code><br><code>run-artifact:docs/safety-index/artifacts/kubernetes-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/kubernetes-server.json</code></td>
82
+ </tr><tr>
83
+ <td><strong>mcp-server-chart</strong><br><small>@antv/mcp-server-chart</small></td>
84
+ <td><span class="pill">unknown</span></td>
85
+ <td><span class="pill low">low</span></td>
86
+ <td>allow</td>
87
+ <td>not_generated</td>
88
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @antv/mcp-server-chart&quot; --sarif --schedule weekly</code></td>
89
+ <td><code>run-artifact:docs/safety-index/artifacts/antv-chart-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/antv-chart-server.json</code></td>
90
+ </tr><tr>
91
+ <td><strong>mcp-servers/everything</strong><br><small>@modelcontextprotocol/server-everything</small></td>
92
+ <td><span class="pill">filesystem</span></td>
93
+ <td><span class="pill low">low</span></td>
94
+ <td>allow</td>
95
+ <td>not_generated</td>
96
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @modelcontextprotocol/server-everything&quot; --sarif --schedule weekly</code></td>
97
+ <td><code>run-artifact:docs/safety-index/artifacts/everything-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/everything-server.json</code></td>
98
+ </tr><tr>
99
+ <td><strong>memory-server</strong><br><small>@modelcontextprotocol/server-memory</small></td>
100
+ <td><span class="pill">memory</span></td>
101
+ <td><span class="pill low">low</span></td>
102
+ <td>allow</td>
103
+ <td>not_generated</td>
104
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @modelcontextprotocol/server-memory&quot; --sarif --schedule weekly</code></td>
105
+ <td><code>run-artifact:docs/safety-index/artifacts/memory-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/memory-server.json</code></td>
106
+ </tr><tr>
107
+ <td><strong>opentofu</strong><br><small>@opentofu/opentofu-mcp-server</small></td>
108
+ <td><span class="pill">infra-cloud</span></td>
109
+ <td><span class="pill medium">medium</span></td>
110
+ <td>gate</td>
111
+ <td>not_generated</td>
112
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @opentofu/opentofu-mcp-server&quot; --sarif --schedule weekly</code></td>
113
+ <td><code>run-artifact:docs/safety-index/artifacts/opentofu-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/opentofu-server.json</code></td>
114
+ </tr><tr>
115
+ <td><strong>Playwright</strong><br><small>@playwright/mcp</small></td>
116
+ <td><span class="pill">browser</span></td>
117
+ <td><span class="pill high">high</span></td>
118
+ <td>quarantine</td>
119
+ <td>not_generated</td>
120
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @playwright/mcp&quot; --sarif --schedule weekly</code></td>
121
+ <td><code>run-artifact:docs/safety-index/artifacts/playwright-mcp-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/playwright-mcp-server.json</code></td>
122
+ </tr><tr>
123
+ <td><strong>playwright-mcp</strong><br><small>@executeautomation/playwright-mcp-server</small></td>
124
+ <td><span class="pill">browser</span></td>
125
+ <td><span class="pill high">high</span></td>
126
+ <td>quarantine</td>
127
+ <td>not_generated</td>
128
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @executeautomation/playwright-mcp-server&quot; --sarif --schedule weekly</code></td>
129
+ <td><code>run-artifact:docs/safety-index/artifacts/executeautomation-playwright-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/executeautomation-playwright-server.json</code></td>
130
+ </tr><tr>
131
+ <td><strong>promptopia-mcp</strong><br><small>promptopia-mcp</small></td>
132
+ <td><span class="pill">filesystem</span></td>
133
+ <td><span class="pill low">low</span></td>
134
+ <td>allow</td>
135
+ <td>not_generated</td>
136
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y promptopia-mcp&quot; --sarif --schedule weekly</code></td>
137
+ <td><code>run-artifact:docs/safety-index/artifacts/promptopia-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/promptopia-server.json</code></td>
138
+ </tr><tr>
139
+ <td><strong>Ref</strong><br><small>ref-tools-mcp</small></td>
140
+ <td><span class="pill">unknown</span></td>
141
+ <td><span class="pill low">low</span></td>
142
+ <td>allow</td>
143
+ <td>not_generated</td>
144
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y ref-tools-mcp&quot; --sarif --schedule weekly</code></td>
145
+ <td><code>run-artifact:docs/safety-index/artifacts/ref-tools-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/ref-tools-server.json</code></td>
146
+ </tr><tr>
147
+ <td><strong>secure-filesystem-server</strong><br><small>@modelcontextprotocol/server-filesystem</small></td>
148
+ <td><span class="pill">filesystem</span></td>
149
+ <td><span class="pill medium">medium</span></td>
150
+ <td>gate</td>
151
+ <td>not_generated</td>
152
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @modelcontextprotocol/server-filesystem examples/filesystem-fixture&quot; --sarif --schedule weekly</code></td>
153
+ <td><code>run-artifact:docs/safety-index/artifacts/filesystem-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/filesystem-server.json</code></td>
154
+ </tr><tr>
155
+ <td><strong>sequential-thinking-server</strong><br><small>@modelcontextprotocol/server-sequential-thinking</small></td>
156
+ <td><span class="pill">unknown</span></td>
157
+ <td><span class="pill low">low</span></td>
158
+ <td>allow</td>
159
+ <td>not_generated</td>
160
+ <td><code>mcp-observatory setup-ci --all --command &quot;npx -y @modelcontextprotocol/server-sequential-thinking&quot; --sarif --schedule weekly</code></td>
161
+ <td><code>run-artifact:docs/safety-index/artifacts/sequential-thinking-server.json</code><br><code>attack-sim:docs/safety-index/artifacts/sequential-thinking-server.json</code></td>
162
+ </tr>
163
+ </tbody>
164
+ </table>
165
+ </main>
166
+ </body>
167
+ </html>