@kryptosai/mcp-observatory 1.28.2 → 1.29.1

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 (101) hide show
  1. package/CONTRIBUTORS.md +4 -1
  2. package/README.md +45 -9
  3. package/README.zh-CN.md +591 -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/security.js +33 -65
  7. package/dist/src/checks/security.js.map +1 -1
  8. package/dist/src/cli.js +9 -1
  9. package/dist/src/cli.js.map +1 -1
  10. package/dist/src/commands/helpers.d.ts +2 -1
  11. package/dist/src/commands/helpers.js +9 -1
  12. package/dist/src/commands/helpers.js.map +1 -1
  13. package/dist/src/commands/legacy.js +3 -0
  14. package/dist/src/commands/legacy.js.map +1 -1
  15. package/dist/src/commands/risk-graph.d.ts +2 -0
  16. package/dist/src/commands/risk-graph.js +64 -0
  17. package/dist/src/commands/risk-graph.js.map +1 -0
  18. package/dist/src/commands/score.js.map +1 -1
  19. package/dist/src/commands/watch.js +13 -8
  20. package/dist/src/commands/watch.js.map +1 -1
  21. package/dist/src/discovery.js +32 -26
  22. package/dist/src/discovery.js.map +1 -1
  23. package/dist/src/reporters/terminal.js +2 -1
  24. package/dist/src/reporters/terminal.js.map +1 -1
  25. package/dist/src/risk-graph.d.ts +64 -0
  26. package/dist/src/risk-graph.js +452 -0
  27. package/dist/src/risk-graph.js.map +1 -0
  28. package/dist/src/server.d.ts +1 -3
  29. package/dist/src/server.js +29 -645
  30. package/dist/src/server.js.map +1 -1
  31. package/dist/src/storage.js +13 -9
  32. package/dist/src/storage.js.map +1 -1
  33. package/dist/src/telemetry.d.ts +7 -0
  34. package/dist/src/telemetry.js.map +1 -1
  35. package/dist/src/tools/check-server.d.ts +27 -0
  36. package/dist/src/tools/check-server.js +46 -0
  37. package/dist/src/tools/check-server.js.map +1 -0
  38. package/dist/src/tools/ci-report.d.ts +21 -0
  39. package/dist/src/tools/ci-report.js +38 -0
  40. package/dist/src/tools/ci-report.js.map +1 -0
  41. package/dist/src/tools/diff-runs.d.ts +28 -0
  42. package/dist/src/tools/diff-runs.js +39 -0
  43. package/dist/src/tools/diff-runs.js.map +1 -0
  44. package/dist/src/tools/get-history.d.ts +21 -0
  45. package/dist/src/tools/get-history.js +37 -0
  46. package/dist/src/tools/get-history.js.map +1 -0
  47. package/dist/src/tools/get-last-run.d.ts +21 -0
  48. package/dist/src/tools/get-last-run.js +47 -0
  49. package/dist/src/tools/get-last-run.js.map +1 -0
  50. package/dist/src/tools/helpers.d.ts +8 -0
  51. package/dist/src/tools/helpers.js +32 -0
  52. package/dist/src/tools/helpers.js.map +1 -0
  53. package/dist/src/tools/lock-verify.d.ts +21 -0
  54. package/dist/src/tools/lock-verify.js +47 -0
  55. package/dist/src/tools/lock-verify.js.map +1 -0
  56. package/dist/src/tools/record.d.ts +23 -0
  57. package/dist/src/tools/record.js +48 -0
  58. package/dist/src/tools/record.js.map +1 -0
  59. package/dist/src/tools/replay.d.ts +21 -0
  60. package/dist/src/tools/replay.js +54 -0
  61. package/dist/src/tools/replay.js.map +1 -0
  62. package/dist/src/tools/scan.d.ts +18 -0
  63. package/dist/src/tools/scan.js +43 -0
  64. package/dist/src/tools/scan.js.map +1 -0
  65. package/dist/src/tools/score-server.d.ts +23 -0
  66. package/dist/src/tools/score-server.js +53 -0
  67. package/dist/src/tools/score-server.js.map +1 -0
  68. package/dist/src/tools/suggest-servers.d.ts +21 -0
  69. package/dist/src/tools/suggest-servers.js +114 -0
  70. package/dist/src/tools/suggest-servers.js.map +1 -0
  71. package/dist/src/tools/verify-tool.d.ts +25 -0
  72. package/dist/src/tools/verify-tool.js +48 -0
  73. package/dist/src/tools/verify-tool.js.map +1 -0
  74. package/dist/src/tools/watch.d.ts +23 -0
  75. package/dist/src/tools/watch.js +67 -0
  76. package/dist/src/tools/watch.js.map +1 -0
  77. package/dist/src/utils/security.d.ts +3 -0
  78. package/dist/src/utils/security.js +37 -0
  79. package/dist/src/utils/security.js.map +1 -0
  80. package/dist/src/validate.d.ts +1 -0
  81. package/dist/src/validate.js +119 -35
  82. package/dist/src/validate.js.map +1 -1
  83. package/docs/agent-tasks.md +1 -1
  84. package/docs/commercial-boundary.md +9 -1
  85. package/docs/contributor-recognition.md +2 -0
  86. package/docs/demo.svg +1 -59
  87. package/docs/mcp-receipts.md +9 -0
  88. package/docs/mcp-server-safety-index.md +19 -16
  89. package/docs/metrics-dashboard.md +17 -1
  90. package/docs/private-mcp-fleet-risk-graph.md +69 -0
  91. package/docs/receipt-graph.md +118 -31
  92. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +1745 -0
  93. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +169 -0
  94. package/docs/safety-index/artifacts/filesystem-mcp-server.json +786 -0
  95. package/docs/safety-index/artifacts/filesystem-mcp-server.md +169 -0
  96. package/docs/safety-index/mcp-risk-graph.html +167 -0
  97. package/docs/safety-index/mcp-risk-graph.json +669 -0
  98. package/docs/safety-index/mcp-risk-graph.md +47 -0
  99. package/docs/safety-index/targets.json +40 -0
  100. package/docs/sample-private-fleet-risk-graph.md +90 -0
  101. 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
  ```
@@ -23,11 +25,23 @@
23
25
  [![Node >= 20](https://img.shields.io/badge/node-%3E%3D20-339933)](./package.json)
24
26
  [![Smithery](https://smithery.ai/badge/@kryptosai/mcp-observatory)](https://smithery.ai/server/@kryptosai/mcp-observatory)
25
27
  [![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)
28
+ [![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](./CONTRIBUTORS.md)
29
+ [![Gitee Stars](https://gitee.com/williamweishuhn/mcp-observatory/badge/star.svg)](https://gitee.com/williamweishuhn/mcp-observatory)
30
+ [![Gitee Forks](https://gitee.com/williamweishuhn/mcp-observatory/badge/fork.svg)](https://gitee.com/williamweishuhn/mcp-observatory)
31
+ [![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-blue)](https://registry.modelcontextprotocol.io)
32
+ [![MCP Market](https://img.shields.io/badge/MCP_Market-premium-gold)](https://mcpmarket.com)
33
+ [![MCP Hub China](https://img.shields.io/badge/MCP_Hub_China-listed-red)](https://mcp-hub.cn)
34
+ [![OpenTools](https://img.shields.io/badge/OpenTools-listed-green)](https://opentools.ai)
35
+ [![Gitee](https://img.shields.io/badge/Gitee-镜像-orange)](https://gitee.com/williamweishuhn/mcp-observatory)
36
+
37
+ **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.
27
38
 
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.**
39
+ <p align="center">
40
+ <img src="docs/demo.gif" alt="MCP Observatory demo" width="700"/>
41
+ </p>
29
42
 
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.
43
+
44
+ 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
45
 
32
46
  ```bash
33
47
  npx @kryptosai/mcp-observatory audit npx -y my-mcp-server --profile nsa-mcp --format markdown --output mcp-audit.md
@@ -59,7 +73,7 @@ The `nsa-mcp` profile is not an official certification. It maps MCP Observatory
59
73
 
60
74
  ## Try It
61
75
 
62
- Run a buyer-ready MCP security audit:
76
+ 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
77
 
64
78
  ```bash
65
79
  npx @kryptosai/mcp-observatory audit npx -y my-mcp-server --profile nsa-mcp --format markdown --output report.md
@@ -78,6 +92,7 @@ Emit the portable trust record:
78
92
  ```bash
79
93
  npx @kryptosai/mcp-observatory audit npx -y my-mcp-server --profile nsa-mcp --format json --output report.json --receipt receipt.json
80
94
  npx @kryptosai/mcp-observatory receipt npx -y my-mcp-server --profile nsa-mcp --format markdown --output receipt.md
95
+ 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
96
  ```
82
97
 
83
98
  Then make the evidence repeatable in CI:
@@ -86,7 +101,7 @@ Then make the evidence repeatable in CI:
86
101
  npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y my-mcp-server" --sarif
87
102
  ```
88
103
 
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).
104
+ 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
105
 
91
106
  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
107
 
@@ -100,7 +115,7 @@ Want a receipt for a server your agent depends on? Comment on [Drop an MCP serve
100
115
  | Attack simulation output | [MCP Attack Simulator](./docs/mcp-attack-simulator.md) |
101
116
  | MCP receipts | [Portable trust receipts](./docs/mcp-receipts.md) |
102
117
  | 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 |
118
+ | Risk graph | [Server-to-evidence map](./docs/receipt-graph.md) for agent toolchain trust decisions |
104
119
  | SARIF / Code Scanning output | [GitHub Code Scanning demo](./docs/code-scanning-demo.md) |
105
120
  | Real MCP server evaluations | [MCP Server Safety Index](./docs/mcp-server-safety-index.md) |
106
121
  | Reference reports | [Reference evaluations](./docs/reference-evaluations.md) |
@@ -169,6 +184,7 @@ Observatory gives maintainers and teams:
169
184
  - **One-command CI setup** with `setup-ci --all`
170
185
  - **Profile-mapped audits** with `audit --profile nsa-mcp`
171
186
  - **MCP receipts** that package target, evidence, verdict, action, and reproduction commands
187
+ - **MCP risk graphs** that group servers by capability boundary, receipt state, CI posture, and recommended action
172
188
  - **Action receipts** that say `allow`, `gate`, `rerun`, `quarantine`, or `escalate`
173
189
  - **GitHub PR comments** for compatibility, drift, and security findings
174
190
  - **GitHub Code Scanning SARIF** for normalized MCP findings
@@ -177,7 +193,7 @@ Observatory gives maintainers and teams:
177
193
  - **MCP server mode** so agents can inspect other MCP servers directly
178
194
  - **Production support path** for hosted history, private repo reporting, certification, support, and fleet visibility
179
195
 
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).
196
+ 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
197
 
182
198
  ## For Security And Platform Teams
183
199
 
@@ -187,7 +203,7 @@ MCP Observatory gives security and platform teams MCP server CI, schema drift de
187
203
 
188
204
  ## Production Support
189
205
 
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`.
206
+ 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
207
 
192
208
  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
209
 
@@ -252,6 +268,7 @@ Or add it manually to your config:
252
268
  | `setup-ci` / `init-ci` | Create a GitHub Action and badge snippet for MCP compatibility/security checks |
253
269
  | `setup-ci --sarif` | Generate a workflow that uploads normalized findings to GitHub Code Scanning |
254
270
  | `setup-ci --doctor` | Inspect whether the repository has a complete CI adoption kit |
271
+ | `risk-graph --input <path>` | Merge receipts and run artifacts into JSON, Markdown, and HTML MCP risk graphs |
255
272
  | `--no-attack-sim` | Opt out of the default safe attack simulation on `scan` or `test` |
256
273
  | `ci-report` | Generate CI report for GitHub issue creation |
257
274
  | `enterprise-report` | Generate a static production/security report from run artifacts |
@@ -560,9 +577,28 @@ The record/replay/verify pattern is inspired by:
560
577
  - Custom WebSocket transports (e.g., BrowserTools MCP) are not supported
561
578
  - A few servers time out or close before init — see [known issues](./docs/known-issues.md) and [compatibility](./docs/compatibility.md)
562
579
 
580
+ ## Contributors ✨
581
+
582
+ Thanks to these amazing people who have contributed:
583
+
584
+ - [leemeo3](https://github.com/leemeo3) — 3 Safety Index targets (Git, Chrome DevTools, Filesystem MCP)
585
+ - [tanishxdev](https://github.com/tanishxdev) — Legacy CLI deprecation warnings (#187)
586
+ - [sansynx](https://github.com/sansynx) — CLI format validation (#182)
587
+ - [tanishxdev](https://github.com/tanishxdev) — Legacy CLI deprecation warnings (#187)
588
+
589
+ [See all contributors →](CONTRIBUTORS.md)
590
+
563
591
  ## Contributing
564
592
 
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.
593
+ We welcome contributors! This project follows a [Contributor Covenant Code of Conduct](./CODE_OF_CONDUCT.md). The fastest way to get involved:
594
+
595
+ [![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)
596
+
597
+ ```bash
598
+ git clone https://github.com/KryptosAI/mcp-observatory.git && cd mcp-observatory && npm install && npm test
599
+ ```
600
+
601
+ 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
602
 
567
603
  ---
568
604