@kryptosai/mcp-observatory 1.28.1 → 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
package/CONTRIBUTORS.md CHANGED
@@ -7,7 +7,7 @@ Official GitHub profile achievements are platform-controlled; this project does
7
7
  See the full recognition path in [MCP Observatory Contributors](./docs/contributor-recognition.md).
8
8
 
9
9
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
10
- [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-)
10
+ [![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-)
11
11
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
12
12
 
13
13
  ## Contributors
@@ -19,6 +19,9 @@ See the full recognition path in [MCP Observatory Contributors](./docs/contribut
19
19
  <tbody>
20
20
  <tr>
21
21
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/KryptosAI"><img src="https://avatars.githubusercontent.com/u/140749029?s=100" width="100px;" alt="William Weishuhn"/><br /><sub><b>William Weishuhn</b></sub></a><br /><a href="https://github.com/KryptosAI/mcp-observatory/commits?author=KryptosAI" title="Code">💻</a> <a href="https://github.com/KryptosAI/mcp-observatory/commits?author=KryptosAI" title="Documentation">📖</a> <a href="#ideas-KryptosAI" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-KryptosAI" title="Maintenance">🚧</a> <a href="https://github.com/KryptosAI/mcp-observatory/commits?author=KryptosAI" title="Tests">⚠️</a></td>
22
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/leemeo3"><img src="https://avatars.githubusercontent.com/u/leemeo3?s=100" width="100px;" alt="Lee Sang Hoon"/><br /><sub><b>Lee Sang Hoon</b></sub></a><br /><a href="https://github.com/KryptosAI/mcp-observatory/commits?author=leemeo3" title="Code">💻</a> <a href="https://github.com/KryptosAI/mcp-observatory/commits?author=leemeo3" title="Documentation">📖</a> <a href="https://github.com/KryptosAI/mcp-observatory/commits?author=leemeo3" title="Tests">⚠️</a> <a href="#infra-leemeo3" title="Infrastructure (Hosting, Build-Tools, etc)">🏗</a></td>
23
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/sansynx"><img src="https://avatars.githubusercontent.com/u/sansynx?s=100" width="100px;" alt="Sanath"/><br /><sub><b>Sanath</b></sub></a><br /><a href="https://github.com/KryptosAI/mcp-observatory/commits?author=sansynx" title="Code">💻</a> <a href="https://github.com/KryptosAI/mcp-observatory/commits?author=sansynx" title="Tests">⚠️</a></td>
24
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/tanishxdev"><img src="https://avatars.githubusercontent.com/u/117829203?s=100" width="100px;" alt="Tanish Kumar"/><br /><sub><b>Tanish Kumar</b></sub></a><br /><a href="https://github.com/KryptosAI/mcp-observatory/commits?author=tanishxdev" title="Code">💻</a></td>
22
25
  </tr>
23
26
  </tbody>
24
27
  </table>
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ > 🇨🇳 中文文档: [README.zh-CN.md](README.zh-CN.md) | 欢迎中国开发者贡献!
2
+
1
3
  # MCP Observatory
2
4
 
3
5
  ```
@@ -12,22 +14,40 @@
12
14
 
13
15
  [![CI](https://github.com/KryptosAI/mcp-observatory/actions/workflows/ci.yml/badge.svg)](https://github.com/KryptosAI/mcp-observatory/actions/workflows/ci.yml)
14
16
  [![CodeQL](https://github.com/KryptosAI/mcp-observatory/actions/workflows/codeql.yml/badge.svg)](https://github.com/KryptosAI/mcp-observatory/actions/workflows/codeql.yml)
15
- [![Coverage](https://github.com/KryptosAI/mcp-observatory/actions/workflows/coverage.yml/badge.svg)](https://github.com/KryptosAI/mcp-observatory/actions/workflows/coverage.yml)
17
+ [![Coverage Workflow](https://github.com/KryptosAI/mcp-observatory/actions/workflows/coverage.yml/badge.svg)](https://github.com/KryptosAI/mcp-observatory/actions/workflows/coverage.yml)
18
+ [![npm](https://img.shields.io/npm/v/@kryptosai/mcp-observatory)](https://www.npmjs.com/package/@kryptosai/mcp-observatory)
19
+ [![GitHub stars](https://img.shields.io/github/stars/KryptosAI/mcp-observatory?style=flat)](https://github.com/KryptosAI/mcp-observatory/stargazers)
20
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
21
+
22
+ <details>
23
+ <summary>More badges</summary>
24
+
16
25
  [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/KryptosAI/mcp-observatory/badge)](https://securityscorecards.dev/viewer/?uri=github.com/KryptosAI/mcp-observatory)
17
26
  [![Dependabot](https://img.shields.io/badge/dependabot-enabled-025e8c?logo=dependabot)](./.github/dependabot.yml)
18
27
  [![npm provenance workflow](https://img.shields.io/badge/npm%20provenance-workflow-blue)](./.github/workflows/release.yml)
19
- [![npm](https://img.shields.io/npm/v/@kryptosai/mcp-observatory)](https://www.npmjs.com/package/@kryptosai/mcp-observatory)
20
28
  [![npm weekly downloads](https://img.shields.io/npm/dw/@kryptosai/mcp-observatory)](https://www.npmjs.com/package/@kryptosai/mcp-observatory)
21
- [![GitHub stars](https://img.shields.io/github/stars/KryptosAI/mcp-observatory?style=flat)](https://github.com/KryptosAI/mcp-observatory/stargazers)
22
- [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
23
29
  [![Node >= 20](https://img.shields.io/badge/node-%3E%3D20-339933)](./package.json)
24
30
  [![Smithery](https://smithery.ai/badge/@kryptosai/mcp-observatory)](https://smithery.ai/server/@kryptosai/mcp-observatory)
25
31
  [![mcp-observatory MCP server](https://glama.ai/mcp/servers/KryptosAI/mcp-observatory/badges/score.svg)](https://glama.ai/mcp/servers/KryptosAI/mcp-observatory)
26
- [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](./CONTRIBUTORS.md)
32
+ [![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](./CONTRIBUTORS.md)
33
+ [![Gitee Stars](https://gitee.com/williamweishuhn/mcp-observatory/badge/star.svg)](https://gitee.com/williamweishuhn/mcp-observatory)
34
+ [![Gitee Forks](https://gitee.com/williamweishuhn/mcp-observatory/badge/fork.svg)](https://gitee.com/williamweishuhn/mcp-observatory)
35
+ [![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-blue)](https://registry.modelcontextprotocol.io)
36
+ [![MCP Market](https://img.shields.io/badge/MCP_Market-premium-gold)](https://mcpmarket.com)
37
+ [![MCP Hub China](https://img.shields.io/badge/MCP_Hub_China-listed-red)](https://mcp-hub.cn)
38
+ [![OpenTools](https://img.shields.io/badge/OpenTools-listed-green)](https://opentools.ai)
39
+ [![Gitee](https://img.shields.io/badge/Gitee-镜像-orange)](https://gitee.com/williamweishuhn/mcp-observatory)
40
+
41
+ </details>
27
42
 
28
- **MCP Observatory is a security release gate for MCP servers. It helps teams validate MCP servers before deployment into sensitive, regulated, or mission-critical agentic AI environments.**
43
+ **MCP Observatory maps the risk graph of agent toolchains before agents depend on them.** It helps teams validate MCP servers before deployment into sensitive, regulated, or mission-critical agentic AI environments.
29
44
 
30
- Agents should not depend on tools nobody tests. MCP Observatory turns a local MCP check into release-gate evidence maintainers and security teams already understand: profile-mapped audit reports, normalized findings, SARIF for GitHub Code Scanning, GitHub Actions gates, schema drift detection, trust status output, score badges, and agent-accessible diagnostics.
45
+ <p align="center">
46
+ <img src="docs/demo.gif" alt="MCP Observatory demo" width="700"/>
47
+ </p>
48
+
49
+
50
+ Agents should not depend on tools nobody tests. MCP Observatory turns a local MCP check into portable receipts, risk graphs, release-gate evidence, SARIF for GitHub Code Scanning, GitHub Actions gates, schema drift detection, trust status output, score badges, and agent-accessible diagnostics.
31
51
 
32
52
  ```bash
33
53
  npx @kryptosai/mcp-observatory audit npx -y my-mcp-server --profile nsa-mcp --format markdown --output mcp-audit.md
@@ -59,7 +79,7 @@ The `nsa-mcp` profile is not an official certification. It maps MCP Observatory
59
79
 
60
80
  ## Try It
61
81
 
62
- Run a buyer-ready MCP security audit:
82
+ Run the public evidence loop: generate a receipt, map it into a risk graph, add CI/SARIF, then request a private fleet review when the server matters to production.
63
83
 
64
84
  ```bash
65
85
  npx @kryptosai/mcp-observatory audit npx -y my-mcp-server --profile nsa-mcp --format markdown --output report.md
@@ -78,6 +98,7 @@ Emit the portable trust record:
78
98
  ```bash
79
99
  npx @kryptosai/mcp-observatory audit npx -y my-mcp-server --profile nsa-mcp --format json --output report.json --receipt receipt.json
80
100
  npx @kryptosai/mcp-observatory receipt npx -y my-mcp-server --profile nsa-mcp --format markdown --output receipt.md
101
+ npx @kryptosai/mcp-observatory risk-graph --input receipt.json --json mcp-risk-graph.json --output mcp-risk-graph.md --html mcp-risk-graph.html
81
102
  ```
82
103
 
83
104
  Then make the evidence repeatable in CI:
@@ -86,7 +107,7 @@ Then make the evidence repeatable in CI:
86
107
  npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y my-mcp-server" --sarif
87
108
  ```
88
109
 
89
- See the [government and enterprise pilot brief](./docs/government-enterprise-pilot.md), [public guidance crosswalk](./docs/public-guidance-crosswalk.md), [procurement one-pager](./docs/procurement-one-pager.md), [security due diligence packet](./docs/security-due-diligence.md), [NSA-MCP audit CI guide](./docs/nsa-mcp-audit-ci.md), [example NSA-MCP audit report](./docs/examples/nsa-mcp-audit-report.md), [MCP Receipts](./docs/mcp-receipts.md), [MCP Attack Simulator](./docs/mcp-attack-simulator.md), [Tool-call receipts](./docs/tool-call-receipts.md), [MCP Receipt Graph](./docs/receipt-graph.md), [launch page](./docs/launch.md), [GitHub Code Scanning demo](./docs/code-scanning-demo.md), [GitHub Code Scanning for MCP servers](./docs/github-code-scanning-for-mcp.md), [sample safety reports](./docs/mcp-server-safety-index.md), and [reference evaluations](./docs/reference-evaluations.md).
110
+ See the [government and enterprise pilot brief](./docs/government-enterprise-pilot.md), [public guidance crosswalk](./docs/public-guidance-crosswalk.md), [procurement one-pager](./docs/procurement-one-pager.md), [security due diligence packet](./docs/security-due-diligence.md), [NSA-MCP audit CI guide](./docs/nsa-mcp-audit-ci.md), [example NSA-MCP audit report](./docs/examples/nsa-mcp-audit-report.md), [MCP Receipts](./docs/mcp-receipts.md), [MCP Attack Simulator](./docs/mcp-attack-simulator.md), [Tool-call receipts](./docs/tool-call-receipts.md), [MCP Risk Graph](./docs/receipt-graph.md), [private fleet risk graph pilot](./docs/private-mcp-fleet-risk-graph.md), [launch page](./docs/launch.md), [GitHub Code Scanning demo](./docs/code-scanning-demo.md), [GitHub Code Scanning for MCP servers](./docs/github-code-scanning-for-mcp.md), [sample safety reports](./docs/mcp-server-safety-index.md), and [reference evaluations](./docs/reference-evaluations.md).
90
111
 
91
112
  Want a receipt for a server your agent depends on? Comment on [Drop an MCP server, get a receipt #146](https://github.com/KryptosAI/mcp-observatory/issues/146) or use the [structured receipt request form](https://github.com/KryptosAI/mcp-observatory/issues/new?template=tool-call-receipt-request.yml). Public requests can become Safety Index entries, delta receipts, SARIF evidence, and maintainer CI conversations.
92
113
 
@@ -100,7 +121,7 @@ Want a receipt for a server your agent depends on? Comment on [Drop an MCP serve
100
121
  | Attack simulation output | [MCP Attack Simulator](./docs/mcp-attack-simulator.md) |
101
122
  | MCP receipts | [Portable trust receipts](./docs/mcp-receipts.md) |
102
123
  | Tool-call receipts | [Receipt standard](./docs/tool-call-receipts.md) for reproducible MCP evidence |
103
- | Receipt graph | [Server-to-evidence map](./docs/receipt-graph.md) for agent trust decisions |
124
+ | Risk graph | [Server-to-evidence map](./docs/receipt-graph.md) for agent toolchain trust decisions |
104
125
  | SARIF / Code Scanning output | [GitHub Code Scanning demo](./docs/code-scanning-demo.md) |
105
126
  | Real MCP server evaluations | [MCP Server Safety Index](./docs/mcp-server-safety-index.md) |
106
127
  | Reference reports | [Reference evaluations](./docs/reference-evaluations.md) |
@@ -169,6 +190,7 @@ Observatory gives maintainers and teams:
169
190
  - **One-command CI setup** with `setup-ci --all`
170
191
  - **Profile-mapped audits** with `audit --profile nsa-mcp`
171
192
  - **MCP receipts** that package target, evidence, verdict, action, and reproduction commands
193
+ - **MCP risk graphs** that group servers by capability boundary, receipt state, CI posture, and recommended action
172
194
  - **Action receipts** that say `allow`, `gate`, `rerun`, `quarantine`, or `escalate`
173
195
  - **GitHub PR comments** for compatibility, drift, and security findings
174
196
  - **GitHub Code Scanning SARIF** for normalized MCP findings
@@ -177,7 +199,7 @@ Observatory gives maintainers and teams:
177
199
  - **MCP server mode** so agents can inspect other MCP servers directly
178
200
  - **Production support path** for hosted history, private repo reporting, certification, support, and fleet visibility
179
201
 
180
- See the [launch page](./docs/launch.md), [GitHub Code Scanning for MCP servers](./docs/github-code-scanning-for-mcp.md), [Code Scanning demo](./docs/code-scanning-demo.md), [target gallery](./docs/target-gallery.md), [target registry](./docs/target-registry.md), [target contribution guide](./docs/target-contribution-guide.md), [MCP Observatory Contributors](./docs/contributor-recognition.md), [Agent Task Pack](./docs/agent-tasks.md), [MCP Receipts](./docs/mcp-receipts.md), [Tool-call receipts](./docs/tool-call-receipts.md), [MCP Receipt Graph](./docs/receipt-graph.md), [`setup-ci --doctor`](./docs/setup-ci-doctor.md), [MCP server security field guide](./docs/mcp-security-field-guide.md), [Safety Methodology](./docs/methodology.md), [MCP Server Safety Index](./docs/mcp-server-safety-index.md), [June 2026 safety field report](./docs/mcp-safety-field-report-2026-06.md), [reference evaluations](./docs/reference-evaluations.md), [MCP lock files](./docs/mcp-lock-files.md), [public proof](./docs/proof.md), [campaign attribution](./docs/campaign-attribution.md), [local metrics dashboard](./docs/metrics-dashboard.md), [open core boundary](./docs/commercial-boundary.md), [MCP Attack Simulation Evidence Pack](./docs/attack-simulation-pilot.md), and [commercial support](./COMMERCIAL.md).
202
+ See the [launch page](./docs/launch.md), [GitHub Code Scanning for MCP servers](./docs/github-code-scanning-for-mcp.md), [Code Scanning demo](./docs/code-scanning-demo.md), [target gallery](./docs/target-gallery.md), [target registry](./docs/target-registry.md), [target contribution guide](./docs/target-contribution-guide.md), [MCP Observatory Contributors](./docs/contributor-recognition.md), [Agent Task Pack](./docs/agent-tasks.md), [MCP Receipts](./docs/mcp-receipts.md), [Tool-call receipts](./docs/tool-call-receipts.md), [MCP Risk Graph](./docs/receipt-graph.md), [`setup-ci --doctor`](./docs/setup-ci-doctor.md), [MCP server security field guide](./docs/mcp-security-field-guide.md), [Safety Methodology](./docs/methodology.md), [MCP Server Safety Index](./docs/mcp-server-safety-index.md), [June 2026 safety field report](./docs/mcp-safety-field-report-2026-06.md), [reference evaluations](./docs/reference-evaluations.md), [MCP lock files](./docs/mcp-lock-files.md), [public proof](./docs/proof.md), [campaign attribution](./docs/campaign-attribution.md), [local metrics dashboard](./docs/metrics-dashboard.md), [open core boundary](./docs/commercial-boundary.md), [MCP Attack Simulation Evidence Pack](./docs/attack-simulation-pilot.md), [Private MCP Fleet Risk Graph](./docs/private-mcp-fleet-risk-graph.md), and [commercial support](./COMMERCIAL.md).
181
203
 
182
204
  ## For Security And Platform Teams
183
205
 
@@ -187,12 +209,26 @@ MCP Observatory gives security and platform teams MCP server CI, schema drift de
187
209
 
188
210
  ## Production Support
189
211
 
190
- Local OSS use stays free under MIT. Teams running MCP in production can use the [MCP Attack Simulation Evidence Pack](./docs/attack-simulation-pilot.md) for safe-mode attack simulation, SARIF/Code Scanning setup, CI rollout, private evidence reporting, and owner-ready remediation notes. Attack simulation packages start at `$15,000`; narrow readiness reviews start at `$2,500`.
212
+ Local OSS use stays free under MIT. Teams running MCP in production can use the [Private MCP Fleet Risk Graph](./docs/private-mcp-fleet-risk-graph.md) and [MCP Attack Simulation Evidence Pack](./docs/attack-simulation-pilot.md) for safe-mode attack simulation, SARIF/Code Scanning setup, CI rollout, private evidence reporting, and owner-ready remediation notes. Private fleet risk graph pilots start at `$50,000`; attack simulation packages start at `$15,000`; narrow readiness reviews start at `$2,500`.
191
213
 
192
214
  The open source repo is the public evidence engine. Private telemetry intelligence, company/account prioritization, commercial ranking weights, hosted fleet workflows, and buyer-specific evidence packs stay outside the OSS package; see the [open core boundary](./docs/commercial-boundary.md).
193
215
 
194
216
  Run `npx @kryptosai/mcp-observatory cloud`, open a pilot request from the issue chooser, or see [COMMERCIAL.md](./COMMERCIAL.md). Also see [privacy and telemetry](./PRIVACY.md), [campaign attribution](./docs/campaign-attribution.md), and [terms for production use](./TERMS.md).
195
217
 
218
+ ## How It Compares
219
+
220
+ | Feature | mcp-observatory | Snyk agent-scan | Cisco mcp-scanner | agent-shield |
221
+ |---|---|---|---|---|
222
+ | MCP-native | ✓ | ✓ | ✓ | ✓ |
223
+ | Attack simulation | ✓ | ✗ | ✗ | ✗ |
224
+ | Schema drift detection | ✓ | ✗ | ✗ | ✗ |
225
+ | Record/replay/verify | ✓ | ✗ | ✗ | ✗ |
226
+ | Health scoring (0-100) | ✓ | ✗ | ✗ | ✗ |
227
+ | SARIF output | ✓ | ✓ | ✓ | ✓ |
228
+ | CI/CD native (setup-ci) | ✓ | ✓ | ✓ | ✓ |
229
+ | Safety index (17+ servers) | ✓ | ✗ | ✗ | ✗ |
230
+ | Runtime enforcement via mcp-seatbelt | ✓ | ✗ | ✗ | ✗ |
231
+
196
232
  ## Quick Start
197
233
 
198
234
  Scan every MCP server in your Claude config:
@@ -252,6 +288,7 @@ Or add it manually to your config:
252
288
  | `setup-ci` / `init-ci` | Create a GitHub Action and badge snippet for MCP compatibility/security checks |
253
289
  | `setup-ci --sarif` | Generate a workflow that uploads normalized findings to GitHub Code Scanning |
254
290
  | `setup-ci --doctor` | Inspect whether the repository has a complete CI adoption kit |
291
+ | `risk-graph --input <path>` | Merge receipts and run artifacts into JSON, Markdown, and HTML MCP risk graphs |
255
292
  | `--no-attack-sim` | Opt out of the default safe attack simulation on `scan` or `test` |
256
293
  | `ci-report` | Generate CI report for GitHub issue creation |
257
294
  | `enterprise-report` | Generate a static production/security report from run artifacts |
@@ -319,6 +356,42 @@ When you run `scan`, it looks for MCP configs in:
319
356
  - `%APPDATA%/Claude/claude_desktop_config.json` (Claude Desktop, Windows)
320
357
  - `.claude.json` and `.mcp.json` (current directory)
321
358
 
359
+ ## Architecture
360
+
361
+ ```
362
+ ┌─────────────────────────┐
363
+ │ MCP Observatory CLI │
364
+ │ npx @kryptosai/mcp- │
365
+ │ observatory scan │
366
+ └───────────┬─────────────┘
367
+
368
+ ┌───────────▼─────────────┐
369
+ │ Config Discovery │
370
+ │ (Claude, Cursor, etc.) │
371
+ └───────────┬─────────────┘
372
+
373
+ ┌─────────────────┼─────────────────┐
374
+ ▼ ▼ ▼
375
+ ┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
376
+ │ Security Scan │ │ Attack Sim │ │ Schema Drift │
377
+ │ (shell, creds) │ │ (tool poison)│ │ (version diff) │
378
+ └────────┬────────┘ └──────┬───────┘ └────────┬─────────┘
379
+ │ │ │
380
+ └─────────────────┼───────────────────┘
381
+
382
+ ┌─────────────────────┐
383
+ │ Health Score │
384
+ │ (0-100 + verdict) │
385
+ └──────────┬──────────┘
386
+
387
+ ┌────────────────┼────────────────┐
388
+ ▼ ▼ ▼
389
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
390
+ │ SARIF │ │ Markdown │ │ CI Gateway │
391
+ │ (Code Scan) │ │ Report │ │ (setup-ci) │
392
+ └──────────────┘ └──────────────┘ └──────────────┘
393
+ ```
394
+
322
395
  ## CI / GitHub Action
323
396
 
324
397
  Add Observatory to your MCP server's CI pipeline:
@@ -539,7 +612,6 @@ Target configs support `${VAR}`, `$VAR`, and `env:VAR` references in `authToken`
539
612
  | Response snapshot diffs | ✅ | — | — | — |
540
613
  | Benchmarking / latency | — | — | ✅ | — |
541
614
  | Jest integration | — | — | — | ✅ |
542
- | MCP proxy mode | — | ✅ | — | — |
543
615
  | **Works as MCP server** | **✅** | — | — | — |
544
616
 
545
617
  Each tool has strengths. Observatory focuses on regression detection and CI-friendly workflows. mcp-recorder is great as a transparent proxy. MCPBench is the go-to for performance benchmarking. mcp-jest is ideal if you're already in a Jest workflow.
@@ -560,9 +632,32 @@ The record/replay/verify pattern is inspired by:
560
632
  - Custom WebSocket transports (e.g., BrowserTools MCP) are not supported
561
633
  - A few servers time out or close before init — see [known issues](./docs/known-issues.md) and [compatibility](./docs/compatibility.md)
562
634
 
635
+ ## Works with mcp-seatbelt
636
+
637
+ Scan before you trust. Enforce at runtime with [mcp-seatbelt](https://github.com/KryptosAI/mcp-seatbelt) — an MCP proxy that consumes Observatory receipts and blocks out-of-contract tool calls in production. Observatory validates; seatbelt enforces.
638
+
639
+ ## Contributors ✨
640
+
641
+ Thanks to these amazing people who have contributed:
642
+
643
+ - [leemeo3](https://github.com/leemeo3) — 3 Safety Index targets (Git, Chrome DevTools, Filesystem MCP)
644
+ - [albatrossflyon-coder](https://github.com/albatrossflyon-coder) — GitHub MCP Safety Index (#201)
645
+ - [tanishxdev](https://github.com/tanishxdev) — Legacy CLI deprecation warnings (#187)
646
+ - [sansynx](https://github.com/sansynx) — CLI format validation (#182)
647
+
648
+ [See all contributors →](CONTRIBUTORS.md)
649
+
563
650
  ## Contributing
564
651
 
565
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines. The fastest way to contribute is to add a real passing target with a distinct capability shape, a clearer report surface, or a cleaner startup diagnosis.
652
+ We welcome contributors! This project follows a [Contributor Covenant Code of Conduct](./CODE_OF_CONDUCT.md). The fastest way to get involved:
653
+
654
+ [![good first issue](https://img.shields.io/github/issues-search/KryptosAI/mcp-observatory?query=is%3Aopen%20label%3A%22good%20first%20issue%22&label=good%20first%20issue&color=green)](https://github.com/KryptosAI/mcp-observatory/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
655
+
656
+ ```bash
657
+ git clone https://github.com/KryptosAI/mcp-observatory.git && cd mcp-observatory && npm install && npm test
658
+ ```
659
+
660
+ The most common first contribution is adding an MCP server to the Safety Index (10-15 minutes). See [CONTRIBUTING.md](CONTRIBUTING.md) for full guidelines, code standards, and the contributor recognition ladder.
566
661
 
567
662
  ---
568
663