@kryptosai/mcp-observatory 0.27.0 → 1.28.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 (160) hide show
  1. package/COMMERCIAL.md +28 -2
  2. package/CONTRIBUTORS.md +39 -0
  3. package/README.md +114 -22
  4. package/dist/src/action-receipt.d.ts +20 -0
  5. package/dist/src/action-receipt.js +85 -0
  6. package/dist/src/action-receipt.js.map +1 -0
  7. package/dist/src/adapters/http.js +1 -5
  8. package/dist/src/adapters/http.js.map +1 -1
  9. package/dist/src/audit.d.ts +64 -0
  10. package/dist/src/audit.js +359 -0
  11. package/dist/src/audit.js.map +1 -0
  12. package/dist/src/cassette.js +3 -2
  13. package/dist/src/cassette.js.map +1 -1
  14. package/dist/src/checks/attack-sim.d.ts +20 -0
  15. package/dist/src/checks/attack-sim.js +316 -0
  16. package/dist/src/checks/attack-sim.js.map +1 -0
  17. package/dist/src/ci-issue.js +4 -3
  18. package/dist/src/ci-issue.js.map +1 -1
  19. package/dist/src/cli.js +25 -4
  20. package/dist/src/cli.js.map +1 -1
  21. package/dist/src/commands/attack-sim.d.ts +2 -0
  22. package/dist/src/commands/attack-sim.js +220 -0
  23. package/dist/src/commands/attack-sim.js.map +1 -0
  24. package/dist/src/commands/audit.d.ts +2 -0
  25. package/dist/src/commands/audit.js +132 -0
  26. package/dist/src/commands/audit.js.map +1 -0
  27. package/dist/src/commands/init-ci.d.ts +3 -0
  28. package/dist/src/commands/init-ci.js +78 -13
  29. package/dist/src/commands/init-ci.js.map +1 -1
  30. package/dist/src/commands/legacy.js +8 -1
  31. package/dist/src/commands/legacy.js.map +1 -1
  32. package/dist/src/commands/receipt.d.ts +2 -0
  33. package/dist/src/commands/receipt.js +113 -0
  34. package/dist/src/commands/receipt.js.map +1 -0
  35. package/dist/src/commands/scan.js +30 -6
  36. package/dist/src/commands/scan.js.map +1 -1
  37. package/dist/src/commands/score.js +63 -0
  38. package/dist/src/commands/score.js.map +1 -1
  39. package/dist/src/commands/serve.js +9 -1
  40. package/dist/src/commands/serve.js.map +1 -1
  41. package/dist/src/commands/setup-ci-conversion.d.ts +3 -1
  42. package/dist/src/commands/setup-ci-conversion.js +23 -8
  43. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  44. package/dist/src/commands/telemetry.js +20 -14
  45. package/dist/src/commands/telemetry.js.map +1 -1
  46. package/dist/src/commands/test.js +31 -2
  47. package/dist/src/commands/test.js.map +1 -1
  48. package/dist/src/findings.d.ts +1 -0
  49. package/dist/src/findings.js +42 -1
  50. package/dist/src/findings.js.map +1 -1
  51. package/dist/src/history.js +3 -2
  52. package/dist/src/history.js.map +1 -1
  53. package/dist/src/index.d.ts +4 -0
  54. package/dist/src/index.js +4 -0
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/integrations/smithery.js +5 -1
  57. package/dist/src/integrations/smithery.js.map +1 -1
  58. package/dist/src/receipt.d.ts +100 -0
  59. package/dist/src/receipt.js +375 -0
  60. package/dist/src/receipt.js.map +1 -0
  61. package/dist/src/reporters/attack-sim.d.ts +2 -0
  62. package/dist/src/reporters/attack-sim.js +89 -0
  63. package/dist/src/reporters/attack-sim.js.map +1 -0
  64. package/dist/src/reporters/pr-comment.js +20 -6
  65. package/dist/src/reporters/pr-comment.js.map +1 -1
  66. package/dist/src/reporters/sarif.js +11 -1
  67. package/dist/src/reporters/sarif.js.map +1 -1
  68. package/dist/src/runner.d.ts +3 -0
  69. package/dist/src/runner.js +5 -0
  70. package/dist/src/runner.js.map +1 -1
  71. package/dist/src/score.js +1 -1
  72. package/dist/src/score.js.map +1 -1
  73. package/dist/src/security-profiles.d.ts +13 -0
  74. package/dist/src/security-profiles.js +59 -0
  75. package/dist/src/security-profiles.js.map +1 -0
  76. package/dist/src/storage.js +3 -2
  77. package/dist/src/storage.js.map +1 -1
  78. package/dist/src/telemetry.d.ts +10 -0
  79. package/dist/src/telemetry.js +17 -1
  80. package/dist/src/telemetry.js.map +1 -1
  81. package/dist/src/types.d.ts +1 -1
  82. package/dist/src/utils/files.d.ts +1 -0
  83. package/dist/src/utils/files.js +21 -0
  84. package/dist/src/utils/files.js.map +1 -0
  85. package/dist/src/utils/ids.js +18 -5
  86. package/dist/src/utils/ids.js.map +1 -1
  87. package/dist/src/utils/url.d.ts +2 -0
  88. package/dist/src/utils/url.js +15 -0
  89. package/dist/src/utils/url.js.map +1 -0
  90. package/dist/src/validate.js +1 -1
  91. package/dist/src/validate.js.map +1 -1
  92. package/docs/10x-agentic-growth-sprint.md +47 -0
  93. package/docs/agent-ecosystem-promotion-plan.md +244 -0
  94. package/docs/agent-tasks.md +95 -0
  95. package/docs/agentic-contributor-outreach.md +52 -0
  96. package/docs/automatic-ci-integration.md +33 -0
  97. package/docs/campaign-attribution.md +58 -0
  98. package/docs/code-scanning-demo.md +57 -0
  99. package/docs/commercial-boundary.md +83 -0
  100. package/docs/contributor-proof-cards/README.md +33 -0
  101. package/docs/contributor-recognition.md +92 -0
  102. package/docs/examples/nsa-mcp-audit-report.md +372 -0
  103. package/docs/examples/nsa-mcp-results.sarif +930 -0
  104. package/docs/examples/nsa-mcp-score.json +13 -0
  105. package/docs/feishu-lark-mcp.md +1 -1
  106. package/docs/github-code-scanning-for-mcp.md +1 -1
  107. package/docs/government-enterprise-pilot.md +93 -0
  108. package/docs/launch.md +64 -0
  109. package/docs/mcp-attack-simulator.md +57 -0
  110. package/docs/mcp-receipts.md +109 -0
  111. package/docs/mcp-server-safety-index.md +29 -22
  112. package/docs/nsa-mcp-audit-ci.md +88 -0
  113. package/docs/procurement-one-pager.md +74 -0
  114. package/docs/proof.md +5 -2
  115. package/docs/public-guidance-crosswalk.md +48 -0
  116. package/docs/receipt-graph.md +54 -0
  117. package/docs/safety-index/artifacts/antv-chart-server.json +40 -22
  118. package/docs/safety-index/artifacts/antv-chart-server.md +22 -9
  119. package/docs/safety-index/artifacts/browsermcp-server.json +36 -18
  120. package/docs/safety-index/artifacts/browsermcp-server.md +22 -9
  121. package/docs/safety-index/artifacts/context7-server.json +83 -26
  122. package/docs/safety-index/artifacts/context7-server.md +33 -20
  123. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +2438 -0
  124. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +176 -0
  125. package/docs/safety-index/artifacts/everything-server.json +150 -57
  126. package/docs/safety-index/artifacts/everything-server.md +36 -23
  127. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +162 -19
  128. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +25 -12
  129. package/docs/safety-index/artifacts/filesystem-server.json +221 -19
  130. package/docs/safety-index/artifacts/filesystem-server.md +24 -11
  131. package/docs/safety-index/artifacts/kubernetes-server.attack.json +1559 -0
  132. package/docs/safety-index/artifacts/kubernetes-server.attack.md +43 -0
  133. package/docs/safety-index/artifacts/kubernetes-server.attack.sarif +2857 -0
  134. package/docs/safety-index/artifacts/kubernetes-server.json +1573 -0
  135. package/docs/safety-index/artifacts/kubernetes-server.md +176 -0
  136. package/docs/safety-index/artifacts/memory-server.json +93 -32
  137. package/docs/safety-index/artifacts/memory-server.md +45 -25
  138. package/docs/safety-index/artifacts/opentofu-server.json +44 -18
  139. package/docs/safety-index/artifacts/opentofu-server.md +23 -10
  140. package/docs/safety-index/artifacts/playwright-mcp-server.json +177 -21
  141. package/docs/safety-index/artifacts/playwright-mcp-server.md +27 -14
  142. package/docs/safety-index/artifacts/promptopia-server.json +45 -19
  143. package/docs/safety-index/artifacts/promptopia-server.md +21 -8
  144. package/docs/safety-index/artifacts/puppeteer-server.json +77 -22
  145. package/docs/safety-index/artifacts/puppeteer-server.md +28 -15
  146. package/docs/safety-index/artifacts/ref-tools-server.json +36 -18
  147. package/docs/safety-index/artifacts/ref-tools-server.md +21 -8
  148. package/docs/safety-index/artifacts/sequential-thinking-server.json +38 -21
  149. package/docs/safety-index/artifacts/sequential-thinking-server.md +22 -9
  150. package/docs/safety-index/targets.json +90 -14
  151. package/docs/security-due-diligence.md +87 -0
  152. package/docs/setup-ci-doctor.md +13 -1
  153. package/docs/target-gallery.md +49 -0
  154. package/docs/target-registry.md +5 -1
  155. package/docs/tool-call-receipts.md +115 -0
  156. package/examples/insecure-mcp-server/mcp-observatory.target.json +13 -0
  157. package/examples/insecure-mcp-server/server.mjs +62 -0
  158. package/package.json +31 -2
  159. package/schemas/run-artifact.schema.json +1 -0
  160. package/scripts/postinstall.mjs +138 -0
@@ -0,0 +1,48 @@
1
+ # Public Guidance Crosswalk For MCP Security Audits
2
+
3
+ MCP Observatory maps MCP server evidence to public security guidance so security teams can review agent tool dependencies with familiar language.
4
+
5
+ This crosswalk is not a certification, endorsement, authorization to operate, or claim of compliance with any government program. It is a practical mapping from MCP Observatory checks to public guidance themes.
6
+
7
+ ## Sources
8
+
9
+ Primary public sources used for this crosswalk:
10
+
11
+ - NSA, **Model Context Protocol (MCP): Security Design Considerations for Organizations Adopting MCP** (May 2026)
12
+ - NSA and partners, **Deploying AI Systems Securely: Best Practices for Deploying Secure and Resilient AI Systems** (April 2024)
13
+ - NSA, NCSC-UK, CISA, and partners, **Guidelines for Secure AI System Development** (November 2023)
14
+ - CISA and partners, **Careful Adoption of Agentic AI Services** (May 2026)
15
+ - NIST, **AI Risk Management Framework 1.0** and **Generative AI Profile NIST AI 600-1**
16
+ - OMB, **M-25-21 Accelerating Federal Use of AI through Innovation, Governance, and Public Trust**
17
+ - OMB, **M-25-22 Driving Efficient Acquisition of Artificial Intelligence in Government**
18
+
19
+ ## Crosswalk
20
+
21
+ | MCP Observatory control | What Observatory checks | Public guidance theme | Audit evidence |
22
+ |---|---|---|---|
23
+ | `trust_boundaries` | Whether a server exposes risky tools, prompt/resource surfaces, or agent-steering metadata without clear boundaries. | Agentic AI systems need explicit governance, accountability, and threat-model-aware deployment. | Tool inventory, attack simulation findings, profile trust status. |
24
+ | `tool_permissions` | Command, filesystem, browser, network, database, secrets, and broad destructive tool surfaces. | MCP servers create new execution and permission boundaries that should be constrained and reviewed. | Security findings, permission-boundary findings, schema evidence. |
25
+ | `tool_description_integrity` | Hidden instructions, unsafe autonomous behavior, exfiltration language, and tool poisoning patterns in metadata. | AI system components should be secure by design and resistant to manipulation across the lifecycle. | Attack simulator findings with evidence excerpts. |
26
+ | `authentication` | Missing authentication on HTTP targets and target-level auth configuration gaps. | AI services and integrations should enforce identity and access controls appropriate to deployment context. | Target config evidence, normalized finding `mcp-observatory/security/no-auth-http`. |
27
+ | `secrets_exposure` | Secret-like environment variables and credential-like tool output. | Sensitive data used by AI systems needs protection throughout collection, processing, storage, and operation. | Redacted env-var evidence, canary/credential findings, SARIF results. |
28
+ | `schema_validation` | Weak, missing, broad, or permissive schemas and contract drift. | AI system inputs and interfaces should be validated, monitored, and constrained. | Schema quality findings, lock/diff evidence, contract-drift findings. |
29
+ | `input_validation` | Arbitrary command/code/file/path parameters and unconstrained additional properties. | Secure development guidance emphasizes input validation and least privilege. | Security findings and SARIF rule metadata. |
30
+ | `auditability` | Whether audit logging, structured event output, and review artifacts are present. | Government and enterprise adoption needs traceability, monitoring, and evidence for risk management. | Markdown report, JSON report, SARIF, CI artifacts, score JSON. |
31
+ | `runtime_safety` | Startup reliability, conformance, safe tool invocation behavior, and high-risk runtime boundaries. | Secure deployment guidance emphasizes resilient operation, monitoring, incident response, and recovery. | Run artifacts, check statuses, fatal errors, performance evidence. |
32
+ | `supply_chain` | Added destructive tools, broadened schemas, removed required fields, and future dependency indicators. | AI systems inherit software supply-chain risk and need continuous review of updates. | Drift findings, lock files, repeatable CI gates. |
33
+
34
+ ## Why This Matters For MCP
35
+
36
+ MCP servers are not just libraries. They are agent-facing tool endpoints. A server can expose command execution, filesystem access, browser automation, database operations, cloud APIs, or internal business workflows through tool descriptions and schemas. That makes MCP server review a practical release-gate problem.
37
+
38
+ MCP Observatory turns that review into:
39
+
40
+ - one command a maintainer can run locally
41
+ - normalized findings a security reviewer can triage
42
+ - SARIF results GitHub Code Scanning can display
43
+ - trust status JSON a CI gate or badge generator can consume
44
+ - repeatable evidence for remediation tracking
45
+
46
+ ## Review Boundary
47
+
48
+ MCP Observatory does not prove semantic safety and does not replace human authorization decisions. A passing audit means the tested target produced reproducible evidence for the mapped checks under the tested command and profile.
@@ -0,0 +1,54 @@
1
+ # MCP Receipt Graph
2
+
3
+ Agent trust should be a receipt graph, not a follower graph.
4
+
5
+ A social graph says who is popular. A receipt graph says what was verified, what could not happen during the run, which artifact can be rerun, and what changed since the last trusted state.
6
+
7
+ Use this page as the first public map from MCP servers to reproducible evidence. It is intentionally small: a receipt graph should start with high-quality, rerunnable receipts before it tries to become a giant directory.
8
+
9
+ ## Receipt Graph Fields
10
+
11
+ | Field | Meaning |
12
+ | --- | --- |
13
+ | Server | Public MCP server, package, or repo. |
14
+ | Receipt | JSON/Markdown evidence generated by MCP Observatory. |
15
+ | Attack evidence | Safe `attack-sim` command, report, or SARIF. |
16
+ | CI/SARIF path | Whether the next step is a maintainer CI gate, Code Scanning, or both. |
17
+ | Capability envelope | What the run was allowed to access. |
18
+ | Last verified | Timestamp of the latest public Safety Index refresh. |
19
+
20
+ ## Seed Graph
21
+
22
+ | Server | Receipt | Attack evidence | CI/SARIF path | Capability envelope | Last verified |
23
+ | --- | --- | --- | --- | --- | --- |
24
+ | [Official everything server](https://github.com/modelcontextprotocol/servers) | [JSON](./safety-index/artifacts/everything-server.json) / [report](./safety-index/artifacts/everything-server.md) | `attack-sim npx -y @modelcontextprotocol/server-everything` | Public reference baseline; CI-ready. | Public package, no secrets, no production data. | 2026-07-06 |
25
+ | [Official sequential thinking server](https://github.com/modelcontextprotocol/servers) | [JSON](./safety-index/artifacts/sequential-thinking-server.json) / [report](./safety-index/artifacts/sequential-thinking-server.md) | `attack-sim npx -y @modelcontextprotocol/server-sequential-thinking` | Public reference baseline; CI-ready. | Public package, no secrets, no production data. | 2026-07-06 |
26
+ | [Official memory server](https://github.com/modelcontextprotocol/servers) | [JSON](./safety-index/artifacts/memory-server.json) / [report](./safety-index/artifacts/memory-server.md) | `attack-sim npx -y @modelcontextprotocol/server-memory` | Public reference baseline; CI-ready. | Public package, no secrets, no production data. | 2026-07-06 |
27
+ | [Context7](https://github.com/upstash/context7) | [JSON](./safety-index/artifacts/context7-server.json) / [report](./safety-index/artifacts/context7-server.md) | `attack-sim npx -y @upstash/context7-mcp` | Maintainer CI conversation candidate. | Public package, no secrets, no production data. | 2026-07-06 |
28
+ | [BrowserMCP](https://github.com/BrowserMCP/mcp) | [JSON](./safety-index/artifacts/browsermcp-server.json) / [report](./safety-index/artifacts/browsermcp-server.md) | `attack-sim npx -y @browsermcp/mcp` | Browser boundary candidate for CI/SARIF. | Public package, no secrets, no production credentials. | 2026-07-06 |
29
+ | [Microsoft Playwright MCP](https://github.com/microsoft/playwright-mcp) | [JSON](./safety-index/artifacts/playwright-mcp-server.json) / [report](./safety-index/artifacts/playwright-mcp-server.md) | `attack-sim npx -y @playwright/mcp` | High-capability browser boundary; Code Scanning useful. | Public package, no secrets, no production credentials. | 2026-07-06 |
30
+ | [Puppeteer MCP server](https://www.npmjs.com/package/puppeteer-mcp-server) | [JSON](./safety-index/artifacts/puppeteer-server.json) / [report](./safety-index/artifacts/puppeteer-server.md) | `attack-sim npx -y puppeteer-mcp-server` | Browser boundary candidate for review before production. | Public package, no secrets, no production credentials. | 2026-07-06 |
31
+ | [OpenTofu MCP server](https://github.com/opentofu/opentofu-mcp-server) | [JSON](./safety-index/artifacts/opentofu-server.json) / [report](./safety-index/artifacts/opentofu-server.md) | `attack-sim npx -y @opentofu/opentofu-mcp-server` | Infrastructure tool surface; CI/SARIF recommended. | Public package, no secrets, no production infrastructure. | 2026-07-06 |
32
+ | [Flux159 Kubernetes MCP server](https://github.com/Flux159/mcp-server-kubernetes) | [JSON](./safety-index/artifacts/kubernetes-server.json) / [report](./safety-index/artifacts/kubernetes-server.md) | [attack-sim](./safety-index/artifacts/kubernetes-server.attack.md) / [SARIF](./safety-index/artifacts/kubernetes-server.attack.sarif) | Kubernetes command and cluster mutation boundary; CI/SARIF recommended before agent dependency. | Public package, no secrets, no kubeconfig, no cluster tool invocation. | 2026-07-06 |
33
+
34
+ ## How To Add A Node
35
+
36
+ 1. Open a [Drop an MCP server, get a receipt request](https://github.com/KryptosAI/mcp-observatory/issues/new?template=tool-call-receipt-request.yml).
37
+ 2. Provide a public MCP server and safe startup command.
38
+ 3. Run:
39
+
40
+ ```bash
41
+ npx @kryptosai/mcp-observatory test <safe startup command> --json run-artifact.json --markdown run-report.md
42
+ npx @kryptosai/mcp-observatory attack-sim <safe startup command> --json attack-artifact.json --output attack-report.md --sarif attack-results.sarif
43
+ npx @kryptosai/mcp-observatory setup-ci --all --command "<safe startup command>" --sarif
44
+ ```
45
+
46
+ 4. Attach sanitized artifacts or open a focused PR.
47
+
48
+ ## Agent-Native Ask
49
+
50
+ ```text
51
+ Name one MCP server your agent depends on. I will help turn it into a reproducible receipt: safe startup command, run artifact, attack-sim evidence, SARIF, and a CI gate maintainers can review.
52
+ ```
53
+
54
+ For the public intake loop, see [Drop an MCP server, get a receipt](./drop-server-get-receipt.md) or comment on [the live GitHub thread](https://github.com/KryptosAI/mcp-observatory/issues/146).
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-06-24T020741323Z_41a77db3",
6
- "createdAt": "2026-06-24T02:07:41.323Z",
7
- "toolVersion": "0.24.0",
5
+ "runId": "run_2026-07-06T194957048Z_8266b9f7",
6
+ "createdAt": "2026-07-06T19:49:57.048Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "antv-chart-server",
10
10
  "adapter": "local-process",
@@ -29,8 +29,8 @@
29
29
  "nodeVersion": "v22.22.1"
30
30
  },
31
31
  "summary": {
32
- "total": 7,
33
- "pass": 5,
32
+ "total": 8,
33
+ "pass": 6,
34
34
  "fail": 0,
35
35
  "partial": 0,
36
36
  "unsupported": 2,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 2.671415999997407,
46
+ "durationMs": 1.708875000000262,
47
47
  "message": "Advertised capability responded with the minimal expected shape (27 items).",
48
48
  "evidence": [
49
49
  {
@@ -82,9 +82,9 @@
82
82
  "generate_spreadsheet"
83
83
  ],
84
84
  "diagnostics": [
85
- "[MCP-Server-Chart] 2026-06-24T02:07:44.865Z ℹ️ setting up tool handlers...",
86
- "[MCP-Server-Chart] 2026-06-24T02:07:44.867Z ℹ️ tool handlers set up",
87
- "[MCP-Server-Chart] 2026-06-24T02:07:44.868Z ✅ Stdio MCP Server started"
85
+ "[MCP-Server-Chart] 2026-07-06T19:49:57.931Z ℹ️ setting up tool handlers...",
86
+ "[MCP-Server-Chart] 2026-07-06T19:49:57.932Z ℹ️ tool handlers set up",
87
+ "[MCP-Server-Chart] 2026-07-06T19:49:57.933Z ✅ Stdio MCP Server started"
88
88
  ],
89
89
  "schemas": {
90
90
  "generate_area_chart": {
@@ -2602,7 +2602,7 @@
2602
2602
  "id": "prompts",
2603
2603
  "capability": "prompts",
2604
2604
  "status": "unsupported",
2605
- "durationMs": 0.0014999999984866008,
2605
+ "durationMs": 0.0007079999995767139,
2606
2606
  "message": "Prompts are not advertised by the target.",
2607
2607
  "evidence": [
2608
2608
  {
@@ -2618,7 +2618,7 @@
2618
2618
  "id": "resources",
2619
2619
  "capability": "resources",
2620
2620
  "status": "unsupported",
2621
- "durationMs": 0.002874999998311978,
2621
+ "durationMs": 0.0027079999999841675,
2622
2622
  "message": "Resources are not advertised by the target.",
2623
2623
  "evidence": [
2624
2624
  {
@@ -2634,7 +2634,7 @@
2634
2634
  "id": "security-lite",
2635
2635
  "capability": "security-lite",
2636
2636
  "status": "pass",
2637
- "durationMs": 0.12066699999923003,
2637
+ "durationMs": 0.07125000000087311,
2638
2638
  "message": "No security issues detected (lightweight scan).",
2639
2639
  "evidence": [
2640
2640
  {
@@ -2650,7 +2650,7 @@
2650
2650
  "id": "conformance",
2651
2651
  "capability": "conformance",
2652
2652
  "status": "pass",
2653
- "durationMs": 2.8167500000017753,
2653
+ "durationMs": 1.3637920000001031,
2654
2654
  "message": "All 7 conformance checks passed.",
2655
2655
  "evidence": [
2656
2656
  {
@@ -2676,7 +2676,7 @@
2676
2676
  "id": "schema-quality",
2677
2677
  "capability": "schema-quality",
2678
2678
  "status": "pass",
2679
- "durationMs": 1.4510000000009313,
2679
+ "durationMs": 2.7793340000007447,
2680
2680
  "message": "All 27 item(s) have good schema quality.",
2681
2681
  "evidence": [
2682
2682
  {
@@ -2693,7 +2693,7 @@
2693
2693
  "id": "security",
2694
2694
  "capability": "security",
2695
2695
  "status": "pass",
2696
- "durationMs": 1.5284999999967113,
2696
+ "durationMs": 0.9060420000005251,
2697
2697
  "message": "No security issues detected.",
2698
2698
  "evidence": [
2699
2699
  {
@@ -2704,6 +2704,23 @@
2704
2704
  "itemCount": 0
2705
2705
  }
2706
2706
  ]
2707
+ },
2708
+ {
2709
+ "id": "attack-sim",
2710
+ "capability": "attack-sim",
2711
+ "status": "pass",
2712
+ "durationMs": 1.896708000000217,
2713
+ "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
2714
+ "evidence": [
2715
+ {
2716
+ "endpoint": "attack-sim/safe",
2717
+ "advertised": true,
2718
+ "responded": true,
2719
+ "minimalShapePresent": true,
2720
+ "itemCount": 0,
2721
+ "identifiers": []
2722
+ }
2723
+ ]
2707
2724
  }
2708
2725
  ],
2709
2726
  "healthScore": {
@@ -2732,7 +2749,8 @@
2732
2749
  "score": 100,
2733
2750
  "details": [
2734
2751
  "security-lite: pass (100/100)",
2735
- "security: pass (100/100)"
2752
+ "security: pass (100/100)",
2753
+ "attack-sim: pass (100/100)"
2736
2754
  ]
2737
2755
  },
2738
2756
  {
@@ -2750,16 +2768,16 @@
2750
2768
  "weight": 0.1,
2751
2769
  "score": 100,
2752
2770
  "details": [
2753
- "Connect: 3548ms",
2754
- "p95 latency: 3ms (3 operations)"
2771
+ "Connect: 887ms",
2772
+ "p95 latency: 2ms (3 operations)"
2755
2773
  ]
2756
2774
  }
2757
2775
  ]
2758
2776
  },
2759
2777
  "performanceMetrics": {
2760
- "connectMs": 3548.425417000002,
2761
- "toolsListMs": 2.671415999997407,
2762
- "promptsListMs": 0.0014999999984866008,
2763
- "resourcesListMs": 0.002874999998311978
2778
+ "connectMs": 887.4375419999997,
2779
+ "toolsListMs": 1.708875000000262,
2780
+ "promptsListMs": 0.0007079999995767139,
2781
+ "resourcesListMs": 0.0027079999999841675
2764
2782
  }
2765
2783
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-06-24T02:07:41.323Z
3
+ Generated at 2026-07-06T19:49:57.048Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -25,7 +25,7 @@ Generated at 2026-06-24T02:07:41.323Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 7 | 5 | 0 | 0 | 2 | 0 | 0 |
28
+ | pass | 8 | 6 | 0 | 0 | 2 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
@@ -47,16 +47,29 @@ _Use the `diff` command against another run artifact to classify regressions and
47
47
 
48
48
  | Focus | Check | Status | Duration (ms) | Message |
49
49
  | --- | --- | --- | --- | --- |
50
- | healthy | conformance | pass | 2.82 | All 7 conformance checks passed. |
51
- | healthy | schema-quality | pass | 1.45 | All 27 item(s) have good schema quality. |
52
- | healthy | security | pass | 1.53 | No security issues detected. |
53
- | healthy | security-lite | pass | 0.12 | No security issues detected (lightweight scan). |
54
- | healthy | tools | pass | 2.67 | Advertised capability responded with the minimal expected shape (27 items). |
50
+ | healthy | attack-sim | pass | 1.90 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
51
+ | healthy | conformance | pass | 1.36 | All 7 conformance checks passed. |
52
+ | healthy | schema-quality | pass | 2.78 | All 27 item(s) have good schema quality. |
53
+ | healthy | security | pass | 0.91 | No security issues detected. |
54
+ | healthy | security-lite | pass | 0.07 | No security issues detected (lightweight scan). |
55
+ | healthy | tools | pass | 1.71 | Advertised capability responded with the minimal expected shape (27 items). |
55
56
  | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
56
57
  | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
57
58
 
58
59
  ## Evidence Snippets
59
60
 
61
+ ### attack-sim — pass
62
+
63
+ Summary: Safe attack simulation found no high-risk MCP attack-readiness findings.
64
+
65
+ - Endpoint: `attack-sim/safe`
66
+ - Advertised: `true`
67
+ - Responded: `true`
68
+ - Minimal shape present: `true`
69
+ - Item count: `0`
70
+ - Identifiers: none
71
+ - Diagnostics: none
72
+
60
73
  ### conformance — pass
61
74
 
62
75
  Summary: All 7 conformance checks passed.
@@ -115,7 +128,7 @@ Summary: Advertised capability responded with the minimal expected shape (27 ite
115
128
  - Minimal shape present: `true`
116
129
  - Item count: `27`
117
130
  - Identifiers: generate_area_chart, generate_bar_chart, generate_boxplot_chart, generate_column_chart, generate_district_map (+22 more)
118
- - Diagnostics: [MCP-Server-Chart] 2026-06-24T02:07:44.865Z ℹ️ setting up tool handlers..., [MCP-Server-Chart] 2026-06-24T02:07:44.867Z ℹ️ tool handlers set up, [MCP-Server-Chart] 2026-06-24T02:07:44.868Z ✅ Stdio MCP Server started
131
+ - Diagnostics: [MCP-Server-Chart] 2026-07-06T19:49:57.931Z ℹ️ setting up tool handlers..., [MCP-Server-Chart] 2026-07-06T19:49:57.932Z ℹ️ tool handlers set up, [MCP-Server-Chart] 2026-07-06T19:49:57.933Z ✅ Stdio MCP Server started
119
132
 
120
133
  ### prompts — unsupported
121
134
 
@@ -152,5 +165,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
152
165
 
153
166
  - Artifact type: `run`
154
167
  - Schema version: `1.0.0`
155
- - Run ID: `run_2026-06-24T020741323Z_41a77db3`
168
+ - Run ID: `run_2026-07-06T194957048Z_8266b9f7`
156
169
  - Gate: `pass`
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-06-24T020731112Z_2e7853f8",
6
- "createdAt": "2026-06-24T02:07:31.112Z",
7
- "toolVersion": "0.24.0",
5
+ "runId": "run_2026-07-06T194954693Z_39638a36",
6
+ "createdAt": "2026-07-06T19:49:54.694Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "browsermcp-server",
10
10
  "adapter": "local-process",
@@ -29,8 +29,8 @@
29
29
  "nodeVersion": "v22.22.1"
30
30
  },
31
31
  "summary": {
32
- "total": 7,
33
- "pass": 6,
32
+ "total": 8,
33
+ "pass": 7,
34
34
  "fail": 0,
35
35
  "partial": 0,
36
36
  "unsupported": 1,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 1.2612079999998969,
46
+ "durationMs": 0.8151659999984986,
47
47
  "message": "Advertised capability responded with the minimal expected shape (12 items).",
48
48
  "evidence": [
49
49
  {
@@ -242,7 +242,7 @@
242
242
  "id": "prompts",
243
243
  "capability": "prompts",
244
244
  "status": "unsupported",
245
- "durationMs": 0.0015829999993002275,
245
+ "durationMs": 0.0005419999997684499,
246
246
  "message": "Prompts are not advertised by the target.",
247
247
  "evidence": [
248
248
  {
@@ -258,7 +258,7 @@
258
258
  "id": "resources",
259
259
  "capability": "resources",
260
260
  "status": "pass",
261
- "durationMs": 0.675042000000758,
261
+ "durationMs": 0.4444999999996071,
262
262
  "message": "Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported.",
263
263
  "evidence": [
264
264
  {
@@ -285,7 +285,7 @@
285
285
  "id": "security-lite",
286
286
  "capability": "security-lite",
287
287
  "status": "pass",
288
- "durationMs": 0.03508300000066811,
288
+ "durationMs": 0.025958000000173342,
289
289
  "message": "No security issues detected (lightweight scan).",
290
290
  "evidence": [
291
291
  {
@@ -301,7 +301,7 @@
301
301
  "id": "conformance",
302
302
  "capability": "conformance",
303
303
  "status": "pass",
304
- "durationMs": 2.116834000000381,
304
+ "durationMs": 1.574958000001061,
305
305
  "message": "All 7 conformance checks passed.",
306
306
  "evidence": [
307
307
  {
@@ -327,7 +327,7 @@
327
327
  "id": "schema-quality",
328
328
  "capability": "schema-quality",
329
329
  "status": "pass",
330
- "durationMs": 0.5424579999998969,
330
+ "durationMs": 0.36616700000013225,
331
331
  "message": "All 12 item(s) have good schema quality.",
332
332
  "evidence": [
333
333
  {
@@ -344,7 +344,7 @@
344
344
  "id": "security",
345
345
  "capability": "security",
346
346
  "status": "pass",
347
- "durationMs": 0.24799999999959255,
347
+ "durationMs": 0.15450000000055297,
348
348
  "message": "No security issues detected.",
349
349
  "evidence": [
350
350
  {
@@ -355,6 +355,23 @@
355
355
  "itemCount": 0
356
356
  }
357
357
  ]
358
+ },
359
+ {
360
+ "id": "attack-sim",
361
+ "capability": "attack-sim",
362
+ "status": "pass",
363
+ "durationMs": 0.5073330000013812,
364
+ "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
365
+ "evidence": [
366
+ {
367
+ "endpoint": "attack-sim/safe",
368
+ "advertised": true,
369
+ "responded": true,
370
+ "minimalShapePresent": true,
371
+ "itemCount": 0,
372
+ "identifiers": []
373
+ }
374
+ ]
358
375
  }
359
376
  ],
360
377
  "healthScore": {
@@ -383,7 +400,8 @@
383
400
  "score": 100,
384
401
  "details": [
385
402
  "security-lite: pass (100/100)",
386
- "security: pass (100/100)"
403
+ "security: pass (100/100)",
404
+ "attack-sim: pass (100/100)"
387
405
  ]
388
406
  },
389
407
  {
@@ -401,16 +419,16 @@
401
419
  "weight": 0.1,
402
420
  "score": 100,
403
421
  "details": [
404
- "Connect: 903ms",
422
+ "Connect: 652ms",
405
423
  "p95 latency: 1ms (3 operations)"
406
424
  ]
407
425
  }
408
426
  ]
409
427
  },
410
428
  "performanceMetrics": {
411
- "connectMs": 902.8017089999994,
412
- "toolsListMs": 1.2612079999998969,
413
- "promptsListMs": 0.0015829999993002275,
414
- "resourcesListMs": 0.675042000000758
429
+ "connectMs": 651.8255829999998,
430
+ "toolsListMs": 0.8151659999984986,
431
+ "promptsListMs": 0.0005419999997684499,
432
+ "resourcesListMs": 0.4444999999996071
415
433
  }
416
434
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-06-24T02:07:31.112Z
3
+ Generated at 2026-07-06T19:49:54.694Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -25,7 +25,7 @@ Generated at 2026-06-24T02:07:31.112Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 7 | 6 | 0 | 0 | 1 | 0 | 0 |
28
+ | pass | 8 | 7 | 0 | 0 | 1 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
@@ -47,16 +47,29 @@ _Use the `diff` command against another run artifact to classify regressions and
47
47
 
48
48
  | Focus | Check | Status | Duration (ms) | Message |
49
49
  | --- | --- | --- | --- | --- |
50
- | healthy | conformance | pass | 2.12 | All 7 conformance checks passed. |
51
- | healthy | resources | pass | 0.68 | Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported. |
52
- | healthy | schema-quality | pass | 0.54 | All 12 item(s) have good schema quality. |
53
- | healthy | security | pass | 0.25 | No security issues detected. |
54
- | healthy | security-lite | pass | 0.04 | No security issues detected (lightweight scan). |
55
- | healthy | tools | pass | 1.26 | Advertised capability responded with the minimal expected shape (12 items). |
50
+ | healthy | attack-sim | pass | 0.51 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
51
+ | healthy | conformance | pass | 1.57 | All 7 conformance checks passed. |
52
+ | healthy | resources | pass | 0.44 | Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported. |
53
+ | healthy | schema-quality | pass | 0.37 | All 12 item(s) have good schema quality. |
54
+ | healthy | security | pass | 0.15 | No security issues detected. |
55
+ | healthy | security-lite | pass | 0.03 | No security issues detected (lightweight scan). |
56
+ | healthy | tools | pass | 0.82 | Advertised capability responded with the minimal expected shape (12 items). |
56
57
  | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
57
58
 
58
59
  ## Evidence Snippets
59
60
 
61
+ ### attack-sim — pass
62
+
63
+ Summary: Safe attack simulation found no high-risk MCP attack-readiness findings.
64
+
65
+ - Endpoint: `attack-sim/safe`
66
+ - Advertised: `true`
67
+ - Responded: `true`
68
+ - Minimal shape present: `true`
69
+ - Item count: `0`
70
+ - Identifiers: none
71
+ - Diagnostics: none
72
+
60
73
  ### conformance — pass
61
74
 
62
75
  Summary: All 7 conformance checks passed.
@@ -159,5 +172,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
159
172
 
160
173
  - Artifact type: `run`
161
174
  - Schema version: `1.0.0`
162
- - Run ID: `run_2026-06-24T020731112Z_2e7853f8`
175
+ - Run ID: `run_2026-07-06T194954693Z_39638a36`
163
176
  - Gate: `pass`