@kryptosai/mcp-observatory 1.32.0 → 1.32.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.
- package/README.md +4 -10
- package/README.zh-CN.md +4 -10
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/enforce.d.ts +2 -2
- package/dist/src/commands/enforce.js +5 -8
- package/dist/src/commands/enforce.js.map +1 -1
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/test.js +2 -2
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/telemetry.js +2 -1
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/validate.js +5 -6
- package/dist/src/validate.js.map +1 -1
- package/docs/mcp-server-safety-index.md +68 -8
- package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
- package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
- package/docs/safety-index/artifacts/brave-search-server.json +341 -0
- package/docs/safety-index/artifacts/brave-search-server.md +201 -0
- package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
- package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
- package/docs/safety-index/artifacts/clay-server.json +66 -0
- package/docs/safety-index/artifacts/clay-server.md +106 -0
- package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
- package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
- package/docs/safety-index/artifacts/context7-server.json +85 -18
- package/docs/safety-index/artifacts/context7-server.md +52 -11
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
- package/docs/safety-index/artifacts/docker-server.json +395 -0
- package/docs/safety-index/artifacts/docker-server.md +204 -0
- package/docs/safety-index/artifacts/everything-server.json +145 -18
- package/docs/safety-index/artifacts/everything-server.md +56 -11
- package/docs/safety-index/artifacts/exa-server.json +400 -0
- package/docs/safety-index/artifacts/exa-server.md +207 -0
- package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
- package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
- package/docs/safety-index/artifacts/fetch-server.json +66 -0
- package/docs/safety-index/artifacts/fetch-server.md +106 -0
- package/docs/safety-index/artifacts/figma-server.json +1766 -0
- package/docs/safety-index/artifacts/figma-server.md +256 -0
- package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
- package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
- package/docs/safety-index/artifacts/filesystem-server.json +426 -22
- package/docs/safety-index/artifacts/filesystem-server.md +73 -12
- package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
- package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
- package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
- package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
- package/docs/safety-index/artifacts/gitlab-server.json +229 -0
- package/docs/safety-index/artifacts/gitlab-server.md +753 -0
- package/docs/safety-index/artifacts/gmail-server.json +66 -0
- package/docs/safety-index/artifacts/gmail-server.md +106 -0
- package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
- package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
- package/docs/safety-index/artifacts/google-drive-server.json +66 -0
- package/docs/safety-index/artifacts/google-drive-server.md +106 -0
- package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
- package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
- package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
- package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
- package/docs/safety-index/artifacts/huggingface-server.json +66 -0
- package/docs/safety-index/artifacts/huggingface-server.md +106 -0
- package/docs/safety-index/artifacts/jina-server.json +66 -0
- package/docs/safety-index/artifacts/jina-server.md +106 -0
- package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
- package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
- package/docs/safety-index/artifacts/linear-server.json +1494 -0
- package/docs/safety-index/artifacts/linear-server.md +237 -0
- package/docs/safety-index/artifacts/memory-server.json +191 -18
- package/docs/safety-index/artifacts/memory-server.md +51 -9
- package/docs/safety-index/artifacts/mongodb-server.json +66 -0
- package/docs/safety-index/artifacts/mongodb-server.md +106 -0
- package/docs/safety-index/artifacts/neon-server.json +66 -0
- package/docs/safety-index/artifacts/neon-server.md +103 -0
- package/docs/safety-index/artifacts/notion-server.json +7151 -0
- package/docs/safety-index/artifacts/notion-server.md +236 -0
- package/docs/safety-index/artifacts/onesignal-server.json +66 -0
- package/docs/safety-index/artifacts/onesignal-server.md +106 -0
- package/docs/safety-index/artifacts/opentofu-server.json +31 -19
- package/docs/safety-index/artifacts/opentofu-server.md +28 -10
- package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
- package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
- package/docs/safety-index/artifacts/postgres-server.json +330 -0
- package/docs/safety-index/artifacts/postgres-server.md +208 -0
- package/docs/safety-index/artifacts/promptopia-server.json +96 -19
- package/docs/safety-index/artifacts/promptopia-server.md +43 -9
- package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
- package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
- package/docs/safety-index/artifacts/qdrant-server.json +66 -0
- package/docs/safety-index/artifacts/qdrant-server.md +106 -0
- package/docs/safety-index/artifacts/reddit-server.json +66 -0
- package/docs/safety-index/artifacts/reddit-server.md +106 -0
- package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
- package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
- package/docs/safety-index/artifacts/sentry-server.json +66 -0
- package/docs/safety-index/artifacts/sentry-server.md +106 -0
- package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
- package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
- package/docs/safety-index/artifacts/slack-server.json +66 -0
- package/docs/safety-index/artifacts/slack-server.md +102 -0
- package/docs/safety-index/artifacts/sqlite-server.json +67 -0
- package/docs/safety-index/artifacts/sqlite-server.md +106 -0
- package/docs/safety-index/artifacts/stripe-server.json +66 -0
- package/docs/safety-index/artifacts/stripe-server.md +106 -0
- package/docs/safety-index/artifacts/supabase-server.json +66 -0
- package/docs/safety-index/artifacts/supabase-server.md +102 -0
- package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
- package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
- package/docs/safety-index/artifacts/ui5-mcp-server.json +24 -24
- package/docs/safety-index/artifacts/ui5-mcp-server.md +13 -13
- package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
- package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
- package/docs/safety-index/targets.json +535 -0
- package/package.json +1 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-07-12T23:44:21.042Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `stripe-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y @stripe/mcp`
|
|
10
|
+
- Server: `unknown `
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
17
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
18
|
+
| fail | 3 | 0 | 0 | 0 | 0 | 0 | 3 |
|
|
19
|
+
|
|
20
|
+
## At a Glance
|
|
21
|
+
|
|
22
|
+
- Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
|
|
23
|
+
- Top risks: startup: server failed to start
|
|
24
|
+
- Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
|
|
25
|
+
- Failing checks: none
|
|
26
|
+
- Partial or flaky checks: none
|
|
27
|
+
- Skipped checks: tools, prompts, resources
|
|
28
|
+
- Unsupported checks: none
|
|
29
|
+
- Suggested next step: Run the target command manually, compare stderr with the diagnosis below, and only raise timeoutMs if startup is genuinely slow.
|
|
30
|
+
- CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
|
|
31
|
+
|
|
32
|
+
## What Was Not Tested
|
|
33
|
+
|
|
34
|
+
- 🔒 network_egress: No outbound network calls were attempted during scan
|
|
35
|
+
- 🔒 filesystem_mutation: Filesystem write operations were not exercised
|
|
36
|
+
- 🔒 credential_access: Credential scanning was not performed
|
|
37
|
+
- ℹ️ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
|
|
38
|
+
|
|
39
|
+
## Regressions and Recoveries
|
|
40
|
+
|
|
41
|
+
_Use the `diff` command against another run artifact to classify regressions and recoveries over time._
|
|
42
|
+
|
|
43
|
+
## Failure Diagnosis
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
Could not establish a plain stdio MCP session for target `stripe-server`.
|
|
47
|
+
Command: npx -y @stripe/mcp
|
|
48
|
+
Diagnosis: The process exited or detached before MCP initialization completed.
|
|
49
|
+
Raw error: MCP error -32000: Connection closed
|
|
50
|
+
Likely causes:
|
|
51
|
+
- The package may expect extra startup arguments or environment variables.
|
|
52
|
+
- The package may not behave like a plain local-process stdio target under this invocation.
|
|
53
|
+
- The server may be crashing immediately and only leaving clues on stderr.
|
|
54
|
+
Next steps:
|
|
55
|
+
- Run the command manually and look for usage output, auth prompts, or crash text.
|
|
56
|
+
- Check whether the package expects a different transport or an app-oriented startup flow.
|
|
57
|
+
- Use the recent stderr lines below before assuming this is a harness bug.
|
|
58
|
+
Recent stderr:
|
|
59
|
+
- at Module._load (node:internal/modules/cjs/loader:1263:12)
|
|
60
|
+
- at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
|
61
|
+
- at wrapModuleLoad (node:internal/modules/cjs/loader:237:24)
|
|
62
|
+
- at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
|
|
63
|
+
- Node.js v22.22.1
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Full Capability Status Table
|
|
67
|
+
|
|
68
|
+
| Focus | Check | Status | Duration (ms) | Message |
|
|
69
|
+
| --- | --- | --- | --- | --- |
|
|
70
|
+
| inspect startup | prompts | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
71
|
+
| inspect startup | resources | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
72
|
+
| inspect startup | tools | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
73
|
+
|
|
74
|
+
## Evidence Snippets
|
|
75
|
+
|
|
76
|
+
### prompts — skipped
|
|
77
|
+
|
|
78
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
79
|
+
|
|
80
|
+
_No evidence was captured._
|
|
81
|
+
|
|
82
|
+
### resources — skipped
|
|
83
|
+
|
|
84
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
85
|
+
|
|
86
|
+
_No evidence was captured._
|
|
87
|
+
|
|
88
|
+
### tools — skipped
|
|
89
|
+
|
|
90
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
91
|
+
|
|
92
|
+
_No evidence was captured._
|
|
93
|
+
|
|
94
|
+
## Reproduction Commands
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm run cli -- run --target <path-to-target-config.json>
|
|
98
|
+
npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Artifact Provenance
|
|
102
|
+
|
|
103
|
+
- Artifact type: `run`
|
|
104
|
+
- Schema version: `1.0.0`
|
|
105
|
+
- Run ID: `run_2026-07-12T234421042Z_9da69382`
|
|
106
|
+
- Gate: `fail`
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifactType": "run",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"gate": "fail",
|
|
5
|
+
"runId": "run_2026-07-12T234428257Z_83154625",
|
|
6
|
+
"createdAt": "2026-07-12T23:44:28.257Z",
|
|
7
|
+
"toolVersion": "1.31.0",
|
|
8
|
+
"target": {
|
|
9
|
+
"targetId": "supabase-server",
|
|
10
|
+
"adapter": "local-process",
|
|
11
|
+
"command": "npx",
|
|
12
|
+
"args": [
|
|
13
|
+
"-y",
|
|
14
|
+
"@supabase/mcp-server-supabase"
|
|
15
|
+
],
|
|
16
|
+
"cwd": ".",
|
|
17
|
+
"metadata": {
|
|
18
|
+
"package": "@supabase/mcp-server-supabase",
|
|
19
|
+
"purpose": "mcp-safety-index",
|
|
20
|
+
"riskClass": "Database and auth management",
|
|
21
|
+
"failureClass": "Database/auth/admin boundary",
|
|
22
|
+
"whyItMatters": "Supabase MCP servers can manage tables, run SQL, manage auth users, and control Edge Functions — broad backend control surface."
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"environment": {
|
|
26
|
+
"platform": "darwin 25.5.0",
|
|
27
|
+
"nodeVersion": "v22.22.1"
|
|
28
|
+
},
|
|
29
|
+
"summary": {
|
|
30
|
+
"total": 3,
|
|
31
|
+
"pass": 0,
|
|
32
|
+
"fail": 0,
|
|
33
|
+
"partial": 0,
|
|
34
|
+
"unsupported": 0,
|
|
35
|
+
"flaky": 0,
|
|
36
|
+
"skipped": 3,
|
|
37
|
+
"gate": "fail"
|
|
38
|
+
},
|
|
39
|
+
"checks": [
|
|
40
|
+
{
|
|
41
|
+
"id": "tools",
|
|
42
|
+
"capability": "tools",
|
|
43
|
+
"status": "skipped",
|
|
44
|
+
"durationMs": 0,
|
|
45
|
+
"message": "Skipped because startup failed before the MCP session initialized. See the failure diagnosis.",
|
|
46
|
+
"evidence": []
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "prompts",
|
|
50
|
+
"capability": "prompts",
|
|
51
|
+
"status": "skipped",
|
|
52
|
+
"durationMs": 0,
|
|
53
|
+
"message": "Skipped because startup failed before the MCP session initialized. See the failure diagnosis.",
|
|
54
|
+
"evidence": []
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "resources",
|
|
58
|
+
"capability": "resources",
|
|
59
|
+
"status": "skipped",
|
|
60
|
+
"durationMs": 0,
|
|
61
|
+
"message": "Skipped because startup failed before the MCP session initialized. See the failure diagnosis.",
|
|
62
|
+
"evidence": []
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"fatalError": "Could not establish a plain stdio MCP session for target `supabase-server`.\nCommand: npx -y @supabase/mcp-server-supabase\nDiagnosis: The process exited or detached before MCP initialization completed.\nRaw error: MCP error -32000: Connection closed\nLikely causes:\n- The package may expect extra startup arguments or environment variables.\n- The package may not behave like a plain local-process stdio target under this invocation.\n- The server may be crashing immediately and only leaving clues on stderr.\nNext steps:\n- Run the command manually and look for usage output, auth prompts, or crash text.\n- Check whether the package expects a different transport or an app-oriented startup flow.\n- Use the recent stderr lines below before assuming this is a harness bug.\nRecent stderr:\n- Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable"
|
|
66
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-07-12T23:44:28.257Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `supabase-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y @supabase/mcp-server-supabase`
|
|
10
|
+
- Server: `unknown `
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
17
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
18
|
+
| fail | 3 | 0 | 0 | 0 | 0 | 0 | 3 |
|
|
19
|
+
|
|
20
|
+
## At a Glance
|
|
21
|
+
|
|
22
|
+
- Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
|
|
23
|
+
- Top risks: startup: server failed to start
|
|
24
|
+
- Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
|
|
25
|
+
- Failing checks: none
|
|
26
|
+
- Partial or flaky checks: none
|
|
27
|
+
- Skipped checks: tools, prompts, resources
|
|
28
|
+
- Unsupported checks: none
|
|
29
|
+
- Suggested next step: Run the target command manually, compare stderr with the diagnosis below, and only raise timeoutMs if startup is genuinely slow.
|
|
30
|
+
- CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
|
|
31
|
+
|
|
32
|
+
## What Was Not Tested
|
|
33
|
+
|
|
34
|
+
- 🔒 network_egress: No outbound network calls were attempted during scan
|
|
35
|
+
- 🔒 filesystem_mutation: Filesystem write operations were not exercised
|
|
36
|
+
- 🔒 credential_access: Credential scanning was not performed
|
|
37
|
+
- ℹ️ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
|
|
38
|
+
|
|
39
|
+
## Regressions and Recoveries
|
|
40
|
+
|
|
41
|
+
_Use the `diff` command against another run artifact to classify regressions and recoveries over time._
|
|
42
|
+
|
|
43
|
+
## Failure Diagnosis
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
Could not establish a plain stdio MCP session for target `supabase-server`.
|
|
47
|
+
Command: npx -y @supabase/mcp-server-supabase
|
|
48
|
+
Diagnosis: The process exited or detached before MCP initialization completed.
|
|
49
|
+
Raw error: MCP error -32000: Connection closed
|
|
50
|
+
Likely causes:
|
|
51
|
+
- The package may expect extra startup arguments or environment variables.
|
|
52
|
+
- The package may not behave like a plain local-process stdio target under this invocation.
|
|
53
|
+
- The server may be crashing immediately and only leaving clues on stderr.
|
|
54
|
+
Next steps:
|
|
55
|
+
- Run the command manually and look for usage output, auth prompts, or crash text.
|
|
56
|
+
- Check whether the package expects a different transport or an app-oriented startup flow.
|
|
57
|
+
- Use the recent stderr lines below before assuming this is a harness bug.
|
|
58
|
+
Recent stderr:
|
|
59
|
+
- Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Full Capability Status Table
|
|
63
|
+
|
|
64
|
+
| Focus | Check | Status | Duration (ms) | Message |
|
|
65
|
+
| --- | --- | --- | --- | --- |
|
|
66
|
+
| inspect startup | prompts | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
67
|
+
| inspect startup | resources | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
68
|
+
| inspect startup | tools | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
69
|
+
|
|
70
|
+
## Evidence Snippets
|
|
71
|
+
|
|
72
|
+
### prompts — skipped
|
|
73
|
+
|
|
74
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
75
|
+
|
|
76
|
+
_No evidence was captured._
|
|
77
|
+
|
|
78
|
+
### resources — skipped
|
|
79
|
+
|
|
80
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
81
|
+
|
|
82
|
+
_No evidence was captured._
|
|
83
|
+
|
|
84
|
+
### tools — skipped
|
|
85
|
+
|
|
86
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
87
|
+
|
|
88
|
+
_No evidence was captured._
|
|
89
|
+
|
|
90
|
+
## Reproduction Commands
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm run cli -- run --target <path-to-target-config.json>
|
|
94
|
+
npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Artifact Provenance
|
|
98
|
+
|
|
99
|
+
- Artifact type: `run`
|
|
100
|
+
- Schema version: `1.0.0`
|
|
101
|
+
- Run ID: `run_2026-07-12T234428257Z_83154625`
|
|
102
|
+
- Gate: `fail`
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifactType": "run",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"gate": "fail",
|
|
5
|
+
"runId": "run_2026-07-12T234420556Z_0722789b",
|
|
6
|
+
"createdAt": "2026-07-12T23:44:20.556Z",
|
|
7
|
+
"toolVersion": "1.31.0",
|
|
8
|
+
"target": {
|
|
9
|
+
"targetId": "tavily-search-server",
|
|
10
|
+
"adapter": "local-process",
|
|
11
|
+
"command": "npx",
|
|
12
|
+
"args": [
|
|
13
|
+
"-y",
|
|
14
|
+
"@anthropic/mcp-server-tavily"
|
|
15
|
+
],
|
|
16
|
+
"cwd": ".",
|
|
17
|
+
"metadata": {
|
|
18
|
+
"package": "@anthropic/mcp-server-tavily",
|
|
19
|
+
"purpose": "mcp-safety-index",
|
|
20
|
+
"riskClass": "Untrusted content retrieval",
|
|
21
|
+
"failureClass": "Search result boundary",
|
|
22
|
+
"whyItMatters": "Tavily search MCP servers can return untrusted web search results directly into agent context."
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"environment": {
|
|
26
|
+
"platform": "darwin 25.5.0",
|
|
27
|
+
"nodeVersion": "v22.22.1"
|
|
28
|
+
},
|
|
29
|
+
"summary": {
|
|
30
|
+
"total": 3,
|
|
31
|
+
"pass": 0,
|
|
32
|
+
"fail": 0,
|
|
33
|
+
"partial": 0,
|
|
34
|
+
"unsupported": 0,
|
|
35
|
+
"flaky": 0,
|
|
36
|
+
"skipped": 3,
|
|
37
|
+
"gate": "fail"
|
|
38
|
+
},
|
|
39
|
+
"checks": [
|
|
40
|
+
{
|
|
41
|
+
"id": "tools",
|
|
42
|
+
"capability": "tools",
|
|
43
|
+
"status": "skipped",
|
|
44
|
+
"durationMs": 0,
|
|
45
|
+
"message": "Skipped because startup failed before the MCP session initialized. See the failure diagnosis.",
|
|
46
|
+
"evidence": []
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "prompts",
|
|
50
|
+
"capability": "prompts",
|
|
51
|
+
"status": "skipped",
|
|
52
|
+
"durationMs": 0,
|
|
53
|
+
"message": "Skipped because startup failed before the MCP session initialized. See the failure diagnosis.",
|
|
54
|
+
"evidence": []
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "resources",
|
|
58
|
+
"capability": "resources",
|
|
59
|
+
"status": "skipped",
|
|
60
|
+
"durationMs": 0,
|
|
61
|
+
"message": "Skipped because startup failed before the MCP session initialized. See the failure diagnosis.",
|
|
62
|
+
"evidence": []
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"fatalError": "Could not establish a plain stdio MCP session for target `tavily-search-server`.\nCommand: npx -y @anthropic/mcp-server-tavily\nDiagnosis: The process exited or detached before MCP initialization completed.\nRaw error: MCP error -32000: Connection closed\nLikely causes:\n- The package may expect extra startup arguments or environment variables.\n- The package may not behave like a plain local-process stdio target under this invocation.\n- The server may be crashing immediately and only leaving clues on stderr.\nNext steps:\n- Run the command manually and look for usage output, auth prompts, or crash text.\n- Check whether the package expects a different transport or an app-oriented startup flow.\n- Use the recent stderr lines below before assuming this is a harness bug.\nRecent stderr:\n- npm error 404 '@anthropic/mcp-server-tavily@*' is not in this registry.\n- npm error 404\n- npm error 404 Note that you can also install from a\n- npm error 404 tarball, folder, http url, or git url.\n- npm error A complete log of this run can be found in: /Users/williamweishuhn/.npm/_logs/2026-07-12T23_44_20_676Z-debug-0.log"
|
|
66
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-07-12T23:44:20.556Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `tavily-search-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y @anthropic/mcp-server-tavily`
|
|
10
|
+
- Server: `unknown `
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
17
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
18
|
+
| fail | 3 | 0 | 0 | 0 | 0 | 0 | 3 |
|
|
19
|
+
|
|
20
|
+
## At a Glance
|
|
21
|
+
|
|
22
|
+
- Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
|
|
23
|
+
- Top risks: startup: server failed to start
|
|
24
|
+
- Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
|
|
25
|
+
- Failing checks: none
|
|
26
|
+
- Partial or flaky checks: none
|
|
27
|
+
- Skipped checks: tools, prompts, resources
|
|
28
|
+
- Unsupported checks: none
|
|
29
|
+
- Suggested next step: Run the target command manually, compare stderr with the diagnosis below, and only raise timeoutMs if startup is genuinely slow.
|
|
30
|
+
- CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
|
|
31
|
+
|
|
32
|
+
## What Was Not Tested
|
|
33
|
+
|
|
34
|
+
- 🔒 network_egress: No outbound network calls were attempted during scan
|
|
35
|
+
- 🔒 filesystem_mutation: Filesystem write operations were not exercised
|
|
36
|
+
- 🔒 credential_access: Credential scanning was not performed
|
|
37
|
+
- ℹ️ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
|
|
38
|
+
|
|
39
|
+
## Regressions and Recoveries
|
|
40
|
+
|
|
41
|
+
_Use the `diff` command against another run artifact to classify regressions and recoveries over time._
|
|
42
|
+
|
|
43
|
+
## Failure Diagnosis
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
Could not establish a plain stdio MCP session for target `tavily-search-server`.
|
|
47
|
+
Command: npx -y @anthropic/mcp-server-tavily
|
|
48
|
+
Diagnosis: The process exited or detached before MCP initialization completed.
|
|
49
|
+
Raw error: MCP error -32000: Connection closed
|
|
50
|
+
Likely causes:
|
|
51
|
+
- The package may expect extra startup arguments or environment variables.
|
|
52
|
+
- The package may not behave like a plain local-process stdio target under this invocation.
|
|
53
|
+
- The server may be crashing immediately and only leaving clues on stderr.
|
|
54
|
+
Next steps:
|
|
55
|
+
- Run the command manually and look for usage output, auth prompts, or crash text.
|
|
56
|
+
- Check whether the package expects a different transport or an app-oriented startup flow.
|
|
57
|
+
- Use the recent stderr lines below before assuming this is a harness bug.
|
|
58
|
+
Recent stderr:
|
|
59
|
+
- npm error 404 '@anthropic/mcp-server-tavily@*' is not in this registry.
|
|
60
|
+
- npm error 404
|
|
61
|
+
- npm error 404 Note that you can also install from a
|
|
62
|
+
- npm error 404 tarball, folder, http url, or git url.
|
|
63
|
+
- npm error A complete log of this run can be found in: /Users/williamweishuhn/.npm/_logs/2026-07-12T23_44_20_676Z-debug-0.log
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Full Capability Status Table
|
|
67
|
+
|
|
68
|
+
| Focus | Check | Status | Duration (ms) | Message |
|
|
69
|
+
| --- | --- | --- | --- | --- |
|
|
70
|
+
| inspect startup | prompts | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
71
|
+
| inspect startup | resources | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
72
|
+
| inspect startup | tools | skipped | 0.00 | Skipped because startup failed before the MCP session initialized. See the failure diagnosis. |
|
|
73
|
+
|
|
74
|
+
## Evidence Snippets
|
|
75
|
+
|
|
76
|
+
### prompts — skipped
|
|
77
|
+
|
|
78
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
79
|
+
|
|
80
|
+
_No evidence was captured._
|
|
81
|
+
|
|
82
|
+
### resources — skipped
|
|
83
|
+
|
|
84
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
85
|
+
|
|
86
|
+
_No evidence was captured._
|
|
87
|
+
|
|
88
|
+
### tools — skipped
|
|
89
|
+
|
|
90
|
+
Summary: Skipped because startup failed before the MCP session initialized. See the failure diagnosis.
|
|
91
|
+
|
|
92
|
+
_No evidence was captured._
|
|
93
|
+
|
|
94
|
+
## Reproduction Commands
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm run cli -- run --target <path-to-target-config.json>
|
|
98
|
+
npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Artifact Provenance
|
|
102
|
+
|
|
103
|
+
- Artifact type: `run`
|
|
104
|
+
- Schema version: `1.0.0`
|
|
105
|
+
- Run ID: `run_2026-07-12T234420556Z_0722789b`
|
|
106
|
+
- 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": "1.
|
|
5
|
+
"runId": "run_2026-07-12T234404910Z_de50bf29",
|
|
6
|
+
"createdAt": "2026-07-12T23:44:04.910Z",
|
|
7
|
+
"toolVersion": "1.31.0",
|
|
8
8
|
"target": {
|
|
9
9
|
"targetId": "ui5-mcp-server",
|
|
10
10
|
"adapter": "local-process",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"serverVersion": "0.2.14"
|
|
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
32
|
"total": 9,
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"id": "tools",
|
|
44
44
|
"capability": "tools",
|
|
45
45
|
"status": "pass",
|
|
46
|
-
"durationMs": 6.
|
|
46
|
+
"durationMs": 6.431375000000116,
|
|
47
47
|
"message": "Advertised capability responded with the minimal expected shape (10 items).",
|
|
48
48
|
"evidence": [
|
|
49
49
|
{
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
"pattern": "^[a-zA-Z0-9 .,'@_-]+$"
|
|
170
170
|
},
|
|
171
171
|
"oDataV4Url": {
|
|
172
|
-
"description": "OData V4 service URL
|
|
172
|
+
"description": "URL of an OData V4 service, if applicable. This is entirely optional, but without it, the generated app UI will have no OData Model configured. Setting an URL will configure an OData V4 model in the application. Only works for OData V4 services, not for OData V2. The URL must be either a valid complete URL starting with http:// or https:// or a server-root-relative URL like '/odata/v4/serviceName' when the OData service is running on the same server. In this case, the prefix 'http://example.invalid:4004/' will be assumed and used by this tool for inquiries about the service. When the port is not 4004, a complete 'http://example.invalid:<port>...' URL must be provided. In the generated application, any 'http://example.invalid:<port>' prefix will be removed. HINT: when the project is a SAP CAP project and CAP/CDS tools are available, you **MUST** use them to search for OData services and entities and properties **BEFORE** calling this tool. This will help you find the correct service URL.",
|
|
173
173
|
"type": "string"
|
|
174
174
|
},
|
|
175
175
|
"oDataEntitySet": {
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
"id": "prompts",
|
|
307
307
|
"capability": "prompts",
|
|
308
308
|
"status": "unsupported",
|
|
309
|
-
"durationMs": 0.
|
|
309
|
+
"durationMs": 0.0010000000002037268,
|
|
310
310
|
"message": "Prompts are not advertised by the target.",
|
|
311
311
|
"evidence": [
|
|
312
312
|
{
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"id": "resources",
|
|
323
323
|
"capability": "resources",
|
|
324
324
|
"status": "unsupported",
|
|
325
|
-
"durationMs": 0.
|
|
325
|
+
"durationMs": 0.002375000000029104,
|
|
326
326
|
"message": "Resources are not advertised by the target.",
|
|
327
327
|
"evidence": [
|
|
328
328
|
{
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
"id": "security-lite",
|
|
339
339
|
"capability": "security-lite",
|
|
340
340
|
"status": "pass",
|
|
341
|
-
"durationMs": 0.
|
|
341
|
+
"durationMs": 0.04462500000045111,
|
|
342
342
|
"message": "No security issues detected (lightweight scan).",
|
|
343
343
|
"evidence": [
|
|
344
344
|
{
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
"id": "runtime-profile",
|
|
355
355
|
"capability": "runtime-profile",
|
|
356
356
|
"status": "pass",
|
|
357
|
-
"durationMs": 0.
|
|
357
|
+
"durationMs": 0.13858299999992596,
|
|
358
358
|
"message": "Detected 4 potential egress target(s) and 23 potential state mutation(s) with low confidence.",
|
|
359
359
|
"evidence": [
|
|
360
360
|
{
|
|
@@ -388,7 +388,7 @@
|
|
|
388
388
|
"confidence": "low"
|
|
389
389
|
},
|
|
390
390
|
{
|
|
391
|
-
"target": "OData V4 service URL
|
|
391
|
+
"target": "URL of an OData V4 service, if applicable. This is entirely optional, but without it, the generated app UI will have no OData Model configured. Setting an URL will configure an OData V4 model in the application. Only works for OData V4 services, not for OData V2. The URL must be either a valid complete URL starting with http:// or https:// or a server-root-relative URL like '/odata/v4/serviceName' when the OData service is running on the same server. In this case, the prefix 'http://example.invalid:4004/' will be assumed and used by this tool for inquiries about the service. When the port is not 4004, a complete 'http://example.invalid:<port>...' URL must be provided. In the generated application, any 'http://example.invalid:<port>' prefix will be removed. HINT: when the project is a SAP CAP project and CAP/CDS tools are available, you **MUST** use them to search for OData services and entities and properties **BEFORE** calling this tool. This will help you find the correct service URL.",
|
|
392
392
|
"protocol": "unknown",
|
|
393
393
|
"source": "description_analysis",
|
|
394
394
|
"confidence": "medium"
|
|
@@ -539,7 +539,7 @@
|
|
|
539
539
|
"id": "conformance",
|
|
540
540
|
"capability": "conformance",
|
|
541
541
|
"status": "pass",
|
|
542
|
-
"durationMs":
|
|
542
|
+
"durationMs": 7.125,
|
|
543
543
|
"message": "All 7 conformance checks passed.",
|
|
544
544
|
"evidence": [
|
|
545
545
|
{
|
|
@@ -565,7 +565,7 @@
|
|
|
565
565
|
"id": "schema-quality",
|
|
566
566
|
"capability": "schema-quality",
|
|
567
567
|
"status": "pass",
|
|
568
|
-
"durationMs":
|
|
568
|
+
"durationMs": 3.917124999999942,
|
|
569
569
|
"message": "All 10 item(s) have good schema quality.",
|
|
570
570
|
"evidence": [
|
|
571
571
|
{
|
|
@@ -582,7 +582,7 @@
|
|
|
582
582
|
"id": "security",
|
|
583
583
|
"capability": "security",
|
|
584
584
|
"status": "pass",
|
|
585
|
-
"durationMs": 3.
|
|
585
|
+
"durationMs": 3.3292920000003505,
|
|
586
586
|
"message": "No security issues detected.",
|
|
587
587
|
"evidence": [
|
|
588
588
|
{
|
|
@@ -598,7 +598,7 @@
|
|
|
598
598
|
"id": "attack-sim",
|
|
599
599
|
"capability": "attack-sim",
|
|
600
600
|
"status": "pass",
|
|
601
|
-
"durationMs": 3.
|
|
601
|
+
"durationMs": 3.505457999999635,
|
|
602
602
|
"message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
|
|
603
603
|
"evidence": [
|
|
604
604
|
{
|
|
@@ -657,17 +657,17 @@
|
|
|
657
657
|
"weight": 0.1,
|
|
658
658
|
"score": 100,
|
|
659
659
|
"details": [
|
|
660
|
-
"Connect:
|
|
661
|
-
"p95 latency:
|
|
660
|
+
"Connect: 1440ms",
|
|
661
|
+
"p95 latency: 6ms (3 operations)"
|
|
662
662
|
]
|
|
663
663
|
}
|
|
664
664
|
]
|
|
665
665
|
},
|
|
666
666
|
"performanceMetrics": {
|
|
667
|
-
"connectMs":
|
|
668
|
-
"toolsListMs": 6.
|
|
669
|
-
"promptsListMs": 0.
|
|
670
|
-
"resourcesListMs": 0.
|
|
667
|
+
"connectMs": 1439.9937090000003,
|
|
668
|
+
"toolsListMs": 6.431375000000116,
|
|
669
|
+
"promptsListMs": 0.0010000000002037268,
|
|
670
|
+
"resourcesListMs": 0.002375000000029104
|
|
671
671
|
},
|
|
672
672
|
"runtimeProfile": {
|
|
673
673
|
"egress": [
|
|
@@ -690,7 +690,7 @@
|
|
|
690
690
|
"confidence": "low"
|
|
691
691
|
},
|
|
692
692
|
{
|
|
693
|
-
"target": "OData V4 service URL
|
|
693
|
+
"target": "URL of an OData V4 service, if applicable. This is entirely optional, but without it, the generated app UI will have no OData Model configured. Setting an URL will configure an OData V4 model in the application. Only works for OData V4 services, not for OData V2. The URL must be either a valid complete URL starting with http:// or https:// or a server-root-relative URL like '/odata/v4/serviceName' when the OData service is running on the same server. In this case, the prefix 'http://example.invalid:4004/' will be assumed and used by this tool for inquiries about the service. When the port is not 4004, a complete 'http://example.invalid:<port>...' URL must be provided. In the generated application, any 'http://example.invalid:<port>' prefix will be removed. HINT: when the project is a SAP CAP project and CAP/CDS tools are available, you **MUST** use them to search for OData services and entities and properties **BEFORE** calling this tool. This will help you find the correct service URL.",
|
|
694
694
|
"protocol": "unknown",
|
|
695
695
|
"source": "description_analysis",
|
|
696
696
|
"confidence": "medium"
|
|
@@ -836,7 +836,7 @@
|
|
|
836
836
|
"source": "description_analysis"
|
|
837
837
|
}
|
|
838
838
|
],
|
|
839
|
-
"analyzedAt": "2026-07-
|
|
839
|
+
"analyzedAt": "2026-07-12T23:44:06.359Z",
|
|
840
840
|
"confidence": "medium"
|
|
841
841
|
}
|
|
842
842
|
}
|