@kryptosai/mcp-observatory 0.28.0 → 1.28.2
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.
- package/COMMERCIAL.md +26 -5
- package/README.md +65 -12
- package/dist/src/action-receipt.d.ts +20 -0
- package/dist/src/action-receipt.js +85 -0
- package/dist/src/action-receipt.js.map +1 -0
- package/dist/src/audit.d.ts +64 -0
- package/dist/src/audit.js +359 -0
- package/dist/src/audit.js.map +1 -0
- package/dist/src/checks/attack-sim.d.ts +2 -0
- package/dist/src/checks/attack-sim.js +12 -0
- package/dist/src/checks/attack-sim.js.map +1 -1
- package/dist/src/cli.js +8 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/attack-sim.js +54 -2
- package/dist/src/commands/attack-sim.js.map +1 -1
- package/dist/src/commands/audit.d.ts +2 -0
- package/dist/src/commands/audit.js +132 -0
- package/dist/src/commands/audit.js.map +1 -0
- package/dist/src/commands/init-ci.d.ts +2 -0
- package/dist/src/commands/init-ci.js +71 -11
- package/dist/src/commands/init-ci.js.map +1 -1
- package/dist/src/commands/legacy.js +2 -0
- package/dist/src/commands/legacy.js.map +1 -1
- package/dist/src/commands/receipt.d.ts +2 -0
- package/dist/src/commands/receipt.js +113 -0
- package/dist/src/commands/receipt.js.map +1 -0
- package/dist/src/commands/scan.js +23 -5
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/score.js +63 -0
- package/dist/src/commands/score.js.map +1 -1
- package/dist/src/commands/setup-ci-conversion.d.ts +2 -1
- package/dist/src/commands/setup-ci-conversion.js +22 -8
- package/dist/src/commands/setup-ci-conversion.js.map +1 -1
- package/dist/src/commands/test.js +18 -1
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/findings.d.ts +1 -0
- package/dist/src/findings.js +1 -0
- package/dist/src/findings.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/receipt.d.ts +100 -0
- package/dist/src/receipt.js +375 -0
- package/dist/src/receipt.js.map +1 -0
- package/dist/src/reporters/attack-sim.js +6 -1
- package/dist/src/reporters/attack-sim.js.map +1 -1
- package/dist/src/reporters/sarif.js +11 -1
- package/dist/src/reporters/sarif.js.map +1 -1
- package/dist/src/security-profiles.d.ts +13 -0
- package/dist/src/security-profiles.js +59 -0
- package/dist/src/security-profiles.js.map +1 -0
- package/dist/src/telemetry.d.ts +7 -0
- package/dist/src/telemetry.js.map +1 -1
- package/docs/10x-agentic-growth-sprint.md +47 -0
- package/docs/agent-ecosystem-promotion-plan.md +1 -1
- package/docs/agentic-contributor-outreach.md +52 -0
- package/docs/code-scanning-demo.md +2 -2
- package/docs/commercial-boundary.md +83 -0
- package/docs/contributor-proof-cards/README.md +1 -1
- package/docs/examples/nsa-mcp-audit-report.md +372 -0
- package/docs/examples/nsa-mcp-results.sarif +930 -0
- package/docs/examples/nsa-mcp-score.json +13 -0
- package/docs/feishu-lark-mcp.md +1 -1
- package/docs/github-code-scanning-for-mcp.md +1 -1
- package/docs/government-enterprise-pilot.md +93 -0
- package/docs/mcp-receipts.md +109 -0
- package/docs/mcp-server-safety-index.md +26 -25
- package/docs/nsa-mcp-audit-ci.md +88 -0
- package/docs/procurement-one-pager.md +74 -0
- package/docs/proof.md +2 -2
- package/docs/public-guidance-crosswalk.md +48 -0
- package/docs/safety-index/artifacts/antv-chart-server.json +41 -23
- package/docs/safety-index/artifacts/antv-chart-server.md +23 -10
- package/docs/safety-index/artifacts/browsermcp-server.json +38 -20
- package/docs/safety-index/artifacts/browsermcp-server.md +23 -10
- package/docs/safety-index/artifacts/context7-server.json +85 -28
- package/docs/safety-index/artifacts/context7-server.md +35 -22
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +460 -36
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +31 -18
- package/docs/safety-index/artifacts/everything-server.json +38 -20
- package/docs/safety-index/artifacts/everything-server.md +25 -12
- package/docs/safety-index/artifacts/executeautomation-playwright-server.json +155 -20
- package/docs/safety-index/artifacts/executeautomation-playwright-server.md +26 -13
- package/docs/safety-index/artifacts/filesystem-server.json +116 -22
- package/docs/safety-index/artifacts/filesystem-server.md +27 -14
- package/docs/safety-index/artifacts/kubernetes-server.json +252 -27
- package/docs/safety-index/artifacts/kubernetes-server.md +44 -18
- package/docs/safety-index/artifacts/memory-server.json +39 -21
- package/docs/safety-index/artifacts/memory-server.md +24 -11
- package/docs/safety-index/artifacts/opentofu-server.json +38 -20
- package/docs/safety-index/artifacts/opentofu-server.md +24 -11
- package/docs/safety-index/artifacts/playwright-mcp-server.json +140 -20
- package/docs/safety-index/artifacts/playwright-mcp-server.md +26 -13
- package/docs/safety-index/artifacts/promptopia-server.json +41 -23
- package/docs/safety-index/artifacts/promptopia-server.md +26 -13
- package/docs/safety-index/artifacts/puppeteer-server.json +77 -34
- package/docs/safety-index/artifacts/puppeteer-server.md +45 -32
- package/docs/safety-index/artifacts/ref-tools-server.json +38 -20
- package/docs/safety-index/artifacts/ref-tools-server.md +22 -9
- package/docs/safety-index/artifacts/sequential-thinking-server.json +39 -21
- package/docs/safety-index/artifacts/sequential-thinking-server.md +23 -10
- package/docs/security-due-diligence.md +87 -0
- package/docs/setup-ci-doctor.md +11 -1
- package/docs/tool-call-receipts.md +1 -2
- package/examples/insecure-mcp-server/mcp-observatory.target.json +13 -0
- package/examples/insecure-mcp-server/server.mjs +62 -0
- package/package.json +12 -1
- package/scripts/postinstall.mjs +22 -7
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"artifactType": "run",
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"gate": "fail",
|
|
5
|
-
"runId": "run_2026-07-
|
|
6
|
-
"createdAt": "2026-07-
|
|
7
|
-
"toolVersion": "0.
|
|
5
|
+
"runId": "run_2026-07-06T194955359Z_d769bb31",
|
|
6
|
+
"createdAt": "2026-07-06T19:49:55.359Z",
|
|
7
|
+
"toolVersion": "0.28.0",
|
|
8
8
|
"target": {
|
|
9
9
|
"targetId": "playwright-mcp-server",
|
|
10
10
|
"adapter": "local-process",
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
"serverVersion": "1.62.0-alpha-2026-06-29"
|
|
26
26
|
},
|
|
27
27
|
"environment": {
|
|
28
|
-
"platform": "darwin
|
|
29
|
-
"nodeVersion": "
|
|
28
|
+
"platform": "darwin 25.5.0",
|
|
29
|
+
"nodeVersion": "v22.22.1"
|
|
30
30
|
},
|
|
31
31
|
"summary": {
|
|
32
|
-
"total":
|
|
32
|
+
"total": 8,
|
|
33
33
|
"pass": 2,
|
|
34
|
-
"fail":
|
|
34
|
+
"fail": 3,
|
|
35
35
|
"partial": 1,
|
|
36
36
|
"unsupported": 2,
|
|
37
37
|
"flaky": 0,
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"id": "tools",
|
|
44
44
|
"capability": "tools",
|
|
45
45
|
"status": "pass",
|
|
46
|
-
"durationMs":
|
|
46
|
+
"durationMs": 2.8597500000014406,
|
|
47
47
|
"message": "Advertised capability responded with the minimal expected shape (23 items).",
|
|
48
48
|
"evidence": [
|
|
49
49
|
{
|
|
@@ -651,7 +651,7 @@
|
|
|
651
651
|
"id": "prompts",
|
|
652
652
|
"capability": "prompts",
|
|
653
653
|
"status": "unsupported",
|
|
654
|
-
"durationMs": 0.
|
|
654
|
+
"durationMs": 0.0011660000000119908,
|
|
655
655
|
"message": "Prompts are not advertised by the target.",
|
|
656
656
|
"evidence": [
|
|
657
657
|
{
|
|
@@ -667,7 +667,7 @@
|
|
|
667
667
|
"id": "resources",
|
|
668
668
|
"capability": "resources",
|
|
669
669
|
"status": "unsupported",
|
|
670
|
-
"durationMs": 0.
|
|
670
|
+
"durationMs": 0.0022920000010344665,
|
|
671
671
|
"message": "Resources are not advertised by the target.",
|
|
672
672
|
"evidence": [
|
|
673
673
|
{
|
|
@@ -683,7 +683,7 @@
|
|
|
683
683
|
"id": "security-lite",
|
|
684
684
|
"capability": "security-lite",
|
|
685
685
|
"status": "fail",
|
|
686
|
-
"durationMs": 0.
|
|
686
|
+
"durationMs": 0.05433400000038091,
|
|
687
687
|
"message": "Found 6 security finding(s): 2 high, 2 medium, 2 low.",
|
|
688
688
|
"evidence": [
|
|
689
689
|
{
|
|
@@ -751,7 +751,7 @@
|
|
|
751
751
|
"id": "conformance",
|
|
752
752
|
"capability": "conformance",
|
|
753
753
|
"status": "pass",
|
|
754
|
-
"durationMs":
|
|
754
|
+
"durationMs": 987.085916,
|
|
755
755
|
"message": "All 7 conformance checks passed.",
|
|
756
756
|
"evidence": [
|
|
757
757
|
{
|
|
@@ -777,7 +777,7 @@
|
|
|
777
777
|
"id": "schema-quality",
|
|
778
778
|
"capability": "schema-quality",
|
|
779
779
|
"status": "partial",
|
|
780
|
-
"durationMs": 1.
|
|
780
|
+
"durationMs": 1.854709000001094,
|
|
781
781
|
"message": "Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.",
|
|
782
782
|
"evidence": [
|
|
783
783
|
{
|
|
@@ -831,7 +831,7 @@
|
|
|
831
831
|
"id": "security",
|
|
832
832
|
"capability": "security",
|
|
833
833
|
"status": "fail",
|
|
834
|
-
"durationMs":
|
|
834
|
+
"durationMs": 2.534332999999606,
|
|
835
835
|
"message": "Found 6 security finding(s): 2 high, 2 medium, 2 low.",
|
|
836
836
|
"evidence": [
|
|
837
837
|
{
|
|
@@ -894,6 +894,125 @@
|
|
|
894
894
|
]
|
|
895
895
|
}
|
|
896
896
|
]
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
"id": "attack-sim",
|
|
900
|
+
"capability": "attack-sim",
|
|
901
|
+
"status": "fail",
|
|
902
|
+
"durationMs": 1.0038750000003347,
|
|
903
|
+
"message": "Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.",
|
|
904
|
+
"evidence": [
|
|
905
|
+
{
|
|
906
|
+
"endpoint": "attack-sim/safe",
|
|
907
|
+
"advertised": true,
|
|
908
|
+
"responded": true,
|
|
909
|
+
"minimalShapePresent": true,
|
|
910
|
+
"itemCount": 4,
|
|
911
|
+
"identifiers": [
|
|
912
|
+
"browser_evaluate",
|
|
913
|
+
"browser_navigate",
|
|
914
|
+
"browser_run_code_unsafe",
|
|
915
|
+
"browser_tabs"
|
|
916
|
+
],
|
|
917
|
+
"diagnostics": [
|
|
918
|
+
"[medium] Tool \"browser_evaluate\" combines broad parameters (filename) with destructive or non-read-only behavior.",
|
|
919
|
+
"[medium] Tool \"browser_navigate\" combines broad parameters (url) with destructive or non-read-only behavior.",
|
|
920
|
+
"[high] Tool \"browser_run_code_unsafe\" combines broad parameters (code, filename) with destructive or non-read-only behavior.",
|
|
921
|
+
"[medium] Tool \"browser_tabs\" combines broad parameters (url) with destructive or non-read-only behavior."
|
|
922
|
+
],
|
|
923
|
+
"findings": [
|
|
924
|
+
{
|
|
925
|
+
"ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
|
|
926
|
+
"attackClass": "permission-boundary",
|
|
927
|
+
"severity": "medium",
|
|
928
|
+
"itemType": "tool",
|
|
929
|
+
"itemName": "browser_evaluate",
|
|
930
|
+
"message": "Tool \"browser_evaluate\" combines broad parameters (filename) with destructive or non-read-only behavior.",
|
|
931
|
+
"evidence": {
|
|
932
|
+
"broadParams": [
|
|
933
|
+
"filename"
|
|
934
|
+
],
|
|
935
|
+
"annotations": {
|
|
936
|
+
"title": "Evaluate JavaScript",
|
|
937
|
+
"readOnlyHint": false,
|
|
938
|
+
"destructiveHint": true,
|
|
939
|
+
"openWorldHint": true
|
|
940
|
+
},
|
|
941
|
+
"description": "Evaluate JavaScript expression on page or element"
|
|
942
|
+
},
|
|
943
|
+
"recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
|
|
944
|
+
"recommendedAction": "gate"
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
"ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
|
|
948
|
+
"attackClass": "permission-boundary",
|
|
949
|
+
"severity": "medium",
|
|
950
|
+
"itemType": "tool",
|
|
951
|
+
"itemName": "browser_navigate",
|
|
952
|
+
"message": "Tool \"browser_navigate\" combines broad parameters (url) with destructive or non-read-only behavior.",
|
|
953
|
+
"evidence": {
|
|
954
|
+
"broadParams": [
|
|
955
|
+
"url"
|
|
956
|
+
],
|
|
957
|
+
"annotations": {
|
|
958
|
+
"title": "Navigate to a URL",
|
|
959
|
+
"readOnlyHint": false,
|
|
960
|
+
"destructiveHint": true,
|
|
961
|
+
"openWorldHint": true
|
|
962
|
+
},
|
|
963
|
+
"description": "Navigate to a URL"
|
|
964
|
+
},
|
|
965
|
+
"recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
|
|
966
|
+
"recommendedAction": "gate"
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
|
|
970
|
+
"attackClass": "permission-boundary",
|
|
971
|
+
"severity": "high",
|
|
972
|
+
"itemType": "tool",
|
|
973
|
+
"itemName": "browser_run_code_unsafe",
|
|
974
|
+
"message": "Tool \"browser_run_code_unsafe\" combines broad parameters (code, filename) with destructive or non-read-only behavior.",
|
|
975
|
+
"evidence": {
|
|
976
|
+
"broadParams": [
|
|
977
|
+
"code",
|
|
978
|
+
"filename"
|
|
979
|
+
],
|
|
980
|
+
"annotations": {
|
|
981
|
+
"title": "Run Playwright code (unsafe)",
|
|
982
|
+
"readOnlyHint": false,
|
|
983
|
+
"destructiveHint": true,
|
|
984
|
+
"openWorldHint": true
|
|
985
|
+
},
|
|
986
|
+
"description": "Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent."
|
|
987
|
+
},
|
|
988
|
+
"recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
|
|
989
|
+
"recommendedAction": "quarantine"
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
"ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
|
|
993
|
+
"attackClass": "permission-boundary",
|
|
994
|
+
"severity": "medium",
|
|
995
|
+
"itemType": "tool",
|
|
996
|
+
"itemName": "browser_tabs",
|
|
997
|
+
"message": "Tool \"browser_tabs\" combines broad parameters (url) with destructive or non-read-only behavior.",
|
|
998
|
+
"evidence": {
|
|
999
|
+
"broadParams": [
|
|
1000
|
+
"url"
|
|
1001
|
+
],
|
|
1002
|
+
"annotations": {
|
|
1003
|
+
"title": "Manage tabs",
|
|
1004
|
+
"readOnlyHint": false,
|
|
1005
|
+
"destructiveHint": true,
|
|
1006
|
+
"openWorldHint": true
|
|
1007
|
+
},
|
|
1008
|
+
"description": "List, create, close, or select a browser tab."
|
|
1009
|
+
},
|
|
1010
|
+
"recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
|
|
1011
|
+
"recommendedAction": "gate"
|
|
1012
|
+
}
|
|
1013
|
+
]
|
|
1014
|
+
}
|
|
1015
|
+
]
|
|
897
1016
|
}
|
|
898
1017
|
],
|
|
899
1018
|
"healthScore": {
|
|
@@ -922,7 +1041,8 @@
|
|
|
922
1041
|
"score": 0,
|
|
923
1042
|
"details": [
|
|
924
1043
|
"security-lite: fail (0/100)",
|
|
925
|
-
"security: fail (0/100)"
|
|
1044
|
+
"security: fail (0/100)",
|
|
1045
|
+
"attack-sim: fail (0/100)"
|
|
926
1046
|
]
|
|
927
1047
|
},
|
|
928
1048
|
{
|
|
@@ -940,16 +1060,16 @@
|
|
|
940
1060
|
"weight": 0.1,
|
|
941
1061
|
"score": 100,
|
|
942
1062
|
"details": [
|
|
943
|
-
"Connect:
|
|
1063
|
+
"Connect: 683ms",
|
|
944
1064
|
"p95 latency: 3ms (3 operations)"
|
|
945
1065
|
]
|
|
946
1066
|
}
|
|
947
1067
|
]
|
|
948
1068
|
},
|
|
949
1069
|
"performanceMetrics": {
|
|
950
|
-
"connectMs":
|
|
951
|
-
"toolsListMs":
|
|
952
|
-
"promptsListMs": 0.
|
|
953
|
-
"resourcesListMs": 0.
|
|
1070
|
+
"connectMs": 683.3468749999993,
|
|
1071
|
+
"toolsListMs": 2.8597500000014406,
|
|
1072
|
+
"promptsListMs": 0.0011660000000119908,
|
|
1073
|
+
"resourcesListMs": 0.0022920000010344665
|
|
954
1074
|
}
|
|
955
1075
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MCP Observatory Run Report
|
|
2
2
|
|
|
3
|
-
Generated at 2026-07-
|
|
3
|
+
Generated at 2026-07-06T19:49:55.359Z
|
|
4
4
|
|
|
5
5
|
## Target and Environment Metadata
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ Generated at 2026-07-06T01:47:03.410Z
|
|
|
8
8
|
- Adapter: `local-process`
|
|
9
9
|
- Command: `npx -y @playwright/mcp`
|
|
10
10
|
- Server: `Playwright 1.62.0-alpha-2026-06-29`
|
|
11
|
-
- Platform: `darwin
|
|
12
|
-
- Node: `
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
13
|
|
|
14
14
|
## Executive Summary
|
|
15
15
|
|
|
@@ -25,18 +25,18 @@ Generated at 2026-07-06T01:47:03.410Z
|
|
|
25
25
|
|
|
26
26
|
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
27
27
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
-
| fail |
|
|
28
|
+
| fail | 8 | 2 | 3 | 1 | 2 | 0 | 0 |
|
|
29
29
|
|
|
30
30
|
## At a Glance
|
|
31
31
|
|
|
32
32
|
- Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
|
|
33
|
-
- Top risks: schema-quality: Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.;
|
|
33
|
+
- Top risks: schema-quality: Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.; attack-sim: Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.; security: Found 6 security finding(s): 2 high, 2 medium, 2 low.
|
|
34
34
|
- Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
|
|
35
|
-
- Failing checks: security-lite, security
|
|
35
|
+
- Failing checks: security-lite, security, attack-sim
|
|
36
36
|
- Partial or flaky checks: schema-quality
|
|
37
37
|
- Skipped checks: none
|
|
38
38
|
- Unsupported checks: prompts, resources
|
|
39
|
-
- Suggested next step: Start with the failing checks: security-lite, security.
|
|
39
|
+
- Suggested next step: Start with the failing checks: security-lite, security, attack-sim.
|
|
40
40
|
- CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
|
|
41
41
|
|
|
42
42
|
## Regressions and Recoveries
|
|
@@ -47,13 +47,14 @@ _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 |
|
|
51
|
-
| healthy | tools | pass |
|
|
52
|
-
| review | schema-quality | partial | 1.
|
|
50
|
+
| healthy | conformance | pass | 987.09 | All 7 conformance checks passed. |
|
|
51
|
+
| healthy | tools | pass | 2.86 | Advertised capability responded with the minimal expected shape (23 items). |
|
|
52
|
+
| review | schema-quality | partial | 1.85 | Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info. |
|
|
53
53
|
| confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
|
|
54
54
|
| confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
|
|
55
|
-
| act now |
|
|
56
|
-
| act now | security
|
|
55
|
+
| act now | attack-sim | fail | 1.00 | Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low. |
|
|
56
|
+
| act now | security | fail | 2.53 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
|
|
57
|
+
| act now | security-lite | fail | 0.05 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
|
|
57
58
|
|
|
58
59
|
## Evidence Snippets
|
|
59
60
|
|
|
@@ -117,6 +118,18 @@ Summary: Resources are not advertised by the target.
|
|
|
117
118
|
- Identifiers: none
|
|
118
119
|
- Diagnostics: none
|
|
119
120
|
|
|
121
|
+
### attack-sim — fail
|
|
122
|
+
|
|
123
|
+
Summary: Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.
|
|
124
|
+
|
|
125
|
+
- Endpoint: `attack-sim/safe`
|
|
126
|
+
- Advertised: `true`
|
|
127
|
+
- Responded: `true`
|
|
128
|
+
- Minimal shape present: `true`
|
|
129
|
+
- Item count: `4`
|
|
130
|
+
- Identifiers: browser_evaluate, browser_navigate, browser_run_code_unsafe, browser_tabs
|
|
131
|
+
- Diagnostics: [medium] Tool "browser_evaluate" combines broad parameters (filename) with destructive or non-read-only behavior., [medium] Tool "browser_navigate" combines broad parameters (url) with destructive or non-read-only behavior., [high] Tool "browser_run_code_unsafe" combines broad parameters (code, filename) with destructive or non-read-only behavior. (+1 more)
|
|
132
|
+
|
|
120
133
|
### security — fail
|
|
121
134
|
|
|
122
135
|
Summary: Found 6 security finding(s): 2 high, 2 medium, 2 low.
|
|
@@ -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-07-
|
|
168
|
+
- Run ID: `run_2026-07-06T194955359Z_d769bb31`
|
|
156
169
|
- Gate: `fail`
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"artifactType": "run",
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"gate": "pass",
|
|
5
|
-
"runId": "run_2026-07-
|
|
6
|
-
"createdAt": "2026-07-
|
|
7
|
-
"toolVersion": "0.
|
|
5
|
+
"runId": "run_2026-07-06T194948899Z_ab0f7d29",
|
|
6
|
+
"createdAt": "2026-07-06T19:49:48.899Z",
|
|
7
|
+
"toolVersion": "0.28.0",
|
|
8
8
|
"target": {
|
|
9
9
|
"targetId": "promptopia-server",
|
|
10
10
|
"adapter": "local-process",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"serverVersion": "1.1.0"
|
|
26
26
|
},
|
|
27
27
|
"environment": {
|
|
28
|
-
"platform": "darwin
|
|
29
|
-
"nodeVersion": "
|
|
28
|
+
"platform": "darwin 25.5.0",
|
|
29
|
+
"nodeVersion": "v22.22.1"
|
|
30
30
|
},
|
|
31
31
|
"summary": {
|
|
32
|
-
"total":
|
|
33
|
-
"pass":
|
|
32
|
+
"total": 8,
|
|
33
|
+
"pass": 6,
|
|
34
34
|
"fail": 0,
|
|
35
35
|
"partial": 1,
|
|
36
36
|
"unsupported": 1,
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"id": "tools",
|
|
44
44
|
"capability": "tools",
|
|
45
45
|
"status": "pass",
|
|
46
|
-
"durationMs":
|
|
46
|
+
"durationMs": 2.4714169999997466,
|
|
47
47
|
"message": "Advertised capability responded with the minimal expected shape (7 items).",
|
|
48
48
|
"evidence": [
|
|
49
49
|
{
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"add_multi_message_prompt"
|
|
63
63
|
],
|
|
64
64
|
"diagnostics": [
|
|
65
|
-
"Watching for changes in prompts directory: /Users/
|
|
65
|
+
"Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts",
|
|
66
66
|
"promptopia-mcp MCP server running (v1.1.0)"
|
|
67
67
|
],
|
|
68
68
|
"schemas": {
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
"id": "prompts",
|
|
268
268
|
"capability": "prompts",
|
|
269
269
|
"status": "pass",
|
|
270
|
-
"durationMs": 1.
|
|
270
|
+
"durationMs": 1.0759590000006938,
|
|
271
271
|
"message": "Advertised capability responded with the minimal expected shape (1 item).",
|
|
272
272
|
"evidence": [
|
|
273
273
|
{
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
"demo_welcome"
|
|
281
281
|
],
|
|
282
282
|
"diagnostics": [
|
|
283
|
-
"Watching for changes in prompts directory: /Users/
|
|
283
|
+
"Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts",
|
|
284
284
|
"promptopia-mcp MCP server running (v1.1.0)"
|
|
285
285
|
]
|
|
286
286
|
}
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
"id": "resources",
|
|
291
291
|
"capability": "resources",
|
|
292
292
|
"status": "unsupported",
|
|
293
|
-
"durationMs": 0.
|
|
293
|
+
"durationMs": 0.0035409999991316,
|
|
294
294
|
"message": "Resources are not advertised by the target.",
|
|
295
295
|
"evidence": [
|
|
296
296
|
{
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
"id": "security-lite",
|
|
307
307
|
"capability": "security-lite",
|
|
308
308
|
"status": "pass",
|
|
309
|
-
"durationMs": 0.
|
|
309
|
+
"durationMs": 0.02491699999973207,
|
|
310
310
|
"message": "No security issues detected (lightweight scan).",
|
|
311
311
|
"evidence": [
|
|
312
312
|
{
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"id": "conformance",
|
|
323
323
|
"capability": "conformance",
|
|
324
324
|
"status": "pass",
|
|
325
|
-
"durationMs": 1.
|
|
325
|
+
"durationMs": 1.5870000000004438,
|
|
326
326
|
"message": "All 7 conformance checks passed.",
|
|
327
327
|
"evidence": [
|
|
328
328
|
{
|
|
@@ -348,7 +348,7 @@
|
|
|
348
348
|
"id": "schema-quality",
|
|
349
349
|
"capability": "schema-quality",
|
|
350
350
|
"status": "partial",
|
|
351
|
-
"durationMs": 0.
|
|
351
|
+
"durationMs": 0.5944589999999152,
|
|
352
352
|
"message": "Found 1 quality finding(s) across 8 item(s): 0 warnings, 1 info.",
|
|
353
353
|
"evidence": [
|
|
354
354
|
{
|
|
@@ -378,7 +378,7 @@
|
|
|
378
378
|
"id": "security",
|
|
379
379
|
"capability": "security",
|
|
380
380
|
"status": "pass",
|
|
381
|
-
"durationMs": 0.
|
|
381
|
+
"durationMs": 0.19179199999962293,
|
|
382
382
|
"message": "No security issues detected.",
|
|
383
383
|
"evidence": [
|
|
384
384
|
{
|
|
@@ -389,6 +389,23 @@
|
|
|
389
389
|
"itemCount": 0
|
|
390
390
|
}
|
|
391
391
|
]
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"id": "attack-sim",
|
|
395
|
+
"capability": "attack-sim",
|
|
396
|
+
"status": "pass",
|
|
397
|
+
"durationMs": 0.4236670000000231,
|
|
398
|
+
"message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
|
|
399
|
+
"evidence": [
|
|
400
|
+
{
|
|
401
|
+
"endpoint": "attack-sim/safe",
|
|
402
|
+
"advertised": true,
|
|
403
|
+
"responded": true,
|
|
404
|
+
"minimalShapePresent": true,
|
|
405
|
+
"itemCount": 0,
|
|
406
|
+
"identifiers": []
|
|
407
|
+
}
|
|
408
|
+
]
|
|
392
409
|
}
|
|
393
410
|
],
|
|
394
411
|
"healthScore": {
|
|
@@ -417,7 +434,8 @@
|
|
|
417
434
|
"score": 100,
|
|
418
435
|
"details": [
|
|
419
436
|
"security-lite: pass (100/100)",
|
|
420
|
-
"security: pass (100/100)"
|
|
437
|
+
"security: pass (100/100)",
|
|
438
|
+
"attack-sim: pass (100/100)"
|
|
421
439
|
]
|
|
422
440
|
},
|
|
423
441
|
{
|
|
@@ -435,16 +453,16 @@
|
|
|
435
453
|
"weight": 0.1,
|
|
436
454
|
"score": 100,
|
|
437
455
|
"details": [
|
|
438
|
-
"Connect:
|
|
439
|
-
"p95 latency:
|
|
456
|
+
"Connect: 678ms",
|
|
457
|
+
"p95 latency: 2ms (3 operations)"
|
|
440
458
|
]
|
|
441
459
|
}
|
|
442
460
|
]
|
|
443
461
|
},
|
|
444
462
|
"performanceMetrics": {
|
|
445
|
-
"connectMs":
|
|
446
|
-
"toolsListMs":
|
|
447
|
-
"promptsListMs": 1.
|
|
448
|
-
"resourcesListMs": 0.
|
|
463
|
+
"connectMs": 678.1046249999999,
|
|
464
|
+
"toolsListMs": 2.4714169999997466,
|
|
465
|
+
"promptsListMs": 1.0759590000006938,
|
|
466
|
+
"resourcesListMs": 0.0035409999991316
|
|
449
467
|
}
|
|
450
468
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MCP Observatory Run Report
|
|
2
2
|
|
|
3
|
-
Generated at 2026-07-
|
|
3
|
+
Generated at 2026-07-06T19:49:48.899Z
|
|
4
4
|
|
|
5
5
|
## Target and Environment Metadata
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ Generated at 2026-07-06T01:46:55.135Z
|
|
|
8
8
|
- Adapter: `local-process`
|
|
9
9
|
- Command: `npx -y promptopia-mcp`
|
|
10
10
|
- Server: `promptopia-mcp 1.1.0`
|
|
11
|
-
- Platform: `darwin
|
|
12
|
-
- Node: `
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
13
|
|
|
14
14
|
## Executive Summary
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ Generated at 2026-07-06T01:46:55.135Z
|
|
|
25
25
|
|
|
26
26
|
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
27
27
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
-
| pass |
|
|
28
|
+
| pass | 8 | 6 | 0 | 1 | 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 |
|
|
51
|
-
| healthy |
|
|
52
|
-
| healthy |
|
|
53
|
-
| healthy | security
|
|
54
|
-
| healthy |
|
|
55
|
-
|
|
|
50
|
+
| healthy | attack-sim | pass | 0.42 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
|
|
51
|
+
| healthy | conformance | pass | 1.59 | All 7 conformance checks passed. |
|
|
52
|
+
| healthy | prompts | pass | 1.08 | Advertised capability responded with the minimal expected shape (1 item). |
|
|
53
|
+
| healthy | security | pass | 0.19 | No security issues detected. |
|
|
54
|
+
| healthy | security-lite | pass | 0.02 | No security issues detected (lightweight scan). |
|
|
55
|
+
| healthy | tools | pass | 2.47 | Advertised capability responded with the minimal expected shape (7 items). |
|
|
56
|
+
| review | schema-quality | partial | 0.59 | Found 1 quality finding(s) across 8 item(s): 0 warnings, 1 info. |
|
|
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.
|
|
@@ -79,7 +92,7 @@ Summary: Advertised capability responded with the minimal expected shape (1 item
|
|
|
79
92
|
- Minimal shape present: `true`
|
|
80
93
|
- Item count: `1`
|
|
81
94
|
- Identifiers: demo_welcome
|
|
82
|
-
- Diagnostics: Watching for changes in prompts directory: /Users/
|
|
95
|
+
- Diagnostics: Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts, promptopia-mcp MCP server running (v1.1.0)
|
|
83
96
|
|
|
84
97
|
### security — pass
|
|
85
98
|
|
|
@@ -115,7 +128,7 @@ Summary: Advertised capability responded with the minimal expected shape (7 item
|
|
|
115
128
|
- Minimal shape present: `true`
|
|
116
129
|
- Item count: `7`
|
|
117
130
|
- Identifiers: add_prompt, update_prompt, get_prompt, list_prompts, delete_prompt (+2 more)
|
|
118
|
-
- Diagnostics: Watching for changes in prompts directory: /Users/
|
|
131
|
+
- Diagnostics: Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts, promptopia-mcp MCP server running (v1.1.0)
|
|
119
132
|
|
|
120
133
|
### schema-quality — partial
|
|
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-07-
|
|
168
|
+
- Run ID: `run_2026-07-06T194948899Z_ab0f7d29`
|
|
156
169
|
- Gate: `pass`
|