← All scanned servers

Trust Card · Static snapshot

getsentry__sentry-mcp D

43/100 · 19 findings (4 critical) · scope excessive · Ranked #43 of 53 scanned.

Scanned 2026-09-09 · engine v0.1.0 (8 regex rules, OWASP-mapped) · upstream getsentry/sentry-mcp @ 26a5040 (2026-09-08)

Score breakdown

security 0
permissions 35
provenance 80
reliability 85
stability 90

Score constrained by 4 critical and 11 high-severity findings.

Fix first (15 critical/high)

SeverityRuleFindingRemediation
CRITICALAT-SEC-002 (LLM02)Hardcoded Credential or API Secret
packages/mcp-cloudflare/src/server/lib/approval-dialog.test.ts:37
Evidence: const TEST_SECRET = "test-cookie-secret-32-chars-long";
Move credentials to secure environment variables or a key vault. Never commit API keys.
CRITICALAT-SEC-002 (LLM02)Hardcoded Credential or API Secret
packages/mcp-cloudflare/src/server/oauth/callback.test.ts:38
Evidence: const COOKIE_SECRET = "test-cookie-secret-key-for-hmac";
Move credentials to secure environment variables or a key vault. Never commit API keys.
CRITICALAT-SEC-003 (ASI02)Unbounded Dynamic Shell Execution
packages/mcp-cloudflare/worker-configuration.d.ts:2279
Evidence: exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null;
Strictly restrict shell execution to an immutable allowlist of binary commands with explicit argument arrays, or execute inside microVM sandboxes.
CRITICALAT-SEC-003 (ASI02)Unbounded Dynamic Shell Execution
packages/mcp-server/src/auth/device-code-flow.ts:165
Evidence: exec(`cmd.exe /c start "" ${JSON.stringify(url)}`);
Strictly restrict shell execution to an immutable allowlist of binary commands with explicit argument arrays, or execute inside microVM sandboxes.
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-cloudflare/src/server/mcp.test.ts:318
Evidence: return originalFetch(input, init);
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-cloudflare/src/server/mcp.test.ts:400
Evidence: return originalFetch(input, init);
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-cloudflare/src/server/mcp.test.ts:451
Evidence: return originalFetch(input, init);
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-cloudflare/worker-configuration.d.ts:238
Evidence: fetch(input: RequestInfo | URL, init?: RequestInit<RequestInitCfProperties>): Promise<Response>;
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-cloudflare/worker-configuration.d.ts:334
Evidence: declare function fetch(input: RequestInfo | URL, init?: RequestInit<RequestInitCfProperties>): Promise<Response>;
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-cloudflare/worker-configuration.d.ts:1469
Evidence: fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-core/src/api-client/client.ts:791
Evidence: response = await fetch(url, {
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-core/src/internal/fetch-utils.ts:18
Evidence: const response = await fetch(url, {
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-server/src/auth/device-code-flow.ts:37
Evidence: const resp = await fetch(url, {
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/mcp-server/src/auth/device-code-flow.ts:84
Evidence: const resp = await fetch(url, {
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
HIGHAT-SEC-006 (LLM06)Unfiltered SSRF / Arbitrary Network Egress
packages/smoke-tests/src/smoke.test.ts:57
Evidence: response = await fetch(url, {
Define an explicit egress domain allowlist and block private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254).
MEDIUMAT-SEC-007 (LLM02)Raw Secret Leakage in Debug Logging
packages/mcp-core/scripts/measure-token-cost.ts:219
Evidence: console.log(`✅ Token stats written to: ${absolutePath}`);
Implement PII/secret redaction masks before writing to log streams.
MEDIUMAT-SEC-007 (LLM02)Raw Secret Leakage in Debug Logging
packages/mcp-server/src/cli/commands/auth.ts:73
Evidence: console.log(`Logged out (removed cached token for ${cached.user_email}).`);
Implement PII/secret redaction masks before writing to log streams.
MEDIUMAT-SEC-007 (LLM02)Raw Secret Leakage in Debug Logging
packages/mcp-test-client/src/index.ts:117
Evidence: console.log(chalk.gray("OPENAI_API_KEY=your_openai_api_key"));
Implement PII/secret redaction masks before writing to log streams.
MEDIUMAT-SEC-007 (LLM02)Raw Secret Leakage in Debug Logging
packages/mcp-test-client/src/index.ts:118
Evidence: console.log(chalk.gray("OPENROUTER_API_KEY=your_openrouter_api_key"));
Implement PII/secret redaction masks before writing to log streams.

Permissions

Scope: excessive · Shell: enabled · Network egress: yes · File deletion: none · Human approval: none

Provenance

License: MIT · Lockfile: yes · Security policy: no · Signals: unverified origin

Independently scanned by the AgentTrust registry (not self-reported by the project). Static analysis only — no code executed, findings need human triage, counts may include test/example code. Static snapshot; re-scan before relying on it: npx @eulogik/agenttrust scan https://github.com/getsentry/sentry-mcp. Scores move with every upstream commit; pages refresh weekly. How scoring works.