Blatant Why MCP Server

blatant-why npm v0.1.0-beta

Published by 001tmf — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.

Trust grade
B
83/100
Last scanned get badge →
Trust
B · 83/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
Critical
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
B Why this grade threat 94 − adoption risk = 83/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 6.3 = 94. What the published surface and source actually contain:

PointsWhat was foundCategory
−6.3 Untrusted input concatenated into a command sink MTC-SRC-009 injection

2. Client adoption risk — 94 − 11 = 83. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−10 capability blast radius (critical) — client exposure if the model is manipulated
−1 publisher verification (public source) — no provenance, but the source is public and inspectable

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 6

critical Completed toxic-flow trifecta across toolsMTC-FLOW-002

This server (without client built-ins) exposes a complete data-exfiltration chain: cloud_get_results → tamarind_list_files → tamarind_upload_file. Untrusted input is ingested, private data is read, and it can be sent to an external sink via the agent composing the tools (→). Static analysis proves the primitive exists, not that a specific run will occur.

Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.

Location: flow cloud_get_results → tamarind_list_files → tamarind_upload_file

high Shell/command execution in server code (dist/init.js)MTC-SRC-002

In the server's implementation (`dist/init.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: { execSync } from "node:child_process"; import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs"; im

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/init.js

high Shell/command execution in server code (dist/templates.js)MTC-SRC-002

In the server's implementation (`dist/templates.js:3`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: { execSync } from "node:child_process"; import { fileURLToPath } from "node:url"; /** * Resolve the templates/ director

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/templates.js

high Shell/command execution in server code (dist/verify.js)MTC-SRC-002

In the server's implementation (`dist/verify.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: { execSync } from "node:child_process"; export function verifyMcpServers() { const failed = []; let passed = 0;

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/verify.js

high Shell/command execution in server code (templates/.claude/mcp_servers/local_compute/server.py)MTC-SRC-002

In the server's implementation (`templates/.claude/mcp_servers/local_compute/server.py:74`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: result = subprocess.run( ["nvidia-smi", "--query-gpu=name", "--format=csv,noheader"],

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server templates/.claude/mcp_servers/local_compute/server.py

medium Untrusted input concatenated into a command sink (dist/templates.js)MTC-SRC-009

In the server's implementation (`dist/templates.js:170`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try { execSync(`claude mcp add -s project ${envFlags} "${serverName}" -- uv run --script "${scriptPath

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/templates.js

Tools 83

Each tool and what it can reach — statically extracted from the published source.

  • cloud_get_resultsingests untrusted input
  • pdb_downloadingests untrusted input
  • pdb_fetch_structureingests untrusted input
  • tamarind_list_filesreads sensitive data
  • tamarind_upload_filenetwork egress
  • uniprot_fetch_proteiningests untrusted input
  • adaptyv_confirm_submissionno sensitive capability
  • adaptyv_estimate_costno sensitive capability
  • adaptyv_get_experiment_statusno sensitive capability
  • adaptyv_get_resultsno sensitive capability
Show 73 more tools ↓
  • adaptyv_prepare_submissionno sensitive capability
  • campaign_add_roundno sensitive capability
  • campaign_createno sensitive capability
  • campaign_export_csvno sensitive capability
  • campaign_export_fastano sensitive capability
  • campaign_generate_visualizationno sensitive capability
  • campaign_getno sensitive capability
  • campaign_get_cost_estimateno sensitive capability
  • campaign_get_decisionsno sensitive capability
  • campaign_get_summaryno sensitive capability
  • campaign_log_decisionno sensitive capability
  • campaign_record_scoresno sensitive capability
  • campaign_suggest_next_roundno sensitive capability
  • campaign_update_roundno sensitive capability
  • campaign_update_statusno sensitive capability
  • cloud_estimate_costno sensitive capability
  • cloud_get_batch_statusno sensitive capability
  • cloud_get_statusno sensitive capability
  • cloud_list_providersno sensitive capability
  • cloud_submit_batchno sensitive capability
  • cloud_submit_jobno sensitive capability
  • cloud_wait_batchno sensitive capability
  • interpret_scoresno sensitive capability
  • knowledge_consolidateno sensitive capability
  • knowledge_get_recommendationsno sensitive capability
  • knowledge_query_similarno sensitive capability
  • knowledge_scaffold_rankingsno sensitive capability
  • knowledge_store_campaignno sensitive capability
  • knowledge_store_failureno sensitive capability
  • local_detect_gpuno sensitive capability
  • local_detect_toolsno sensitive capability
  • local_run_boltzgenno sensitive capability
  • local_run_protenixno sensitive capability
  • local_run_pxdesignno sensitive capability
  • pdb_get_chainsno sensitive capability
  • pdb_interface_residuesno sensitive capability
  • pdb_searchno sensitive capability
  • research_analyze_known_bindersno sensitive capability
  • research_check_noveltyno sensitive capability
  • research_find_similar_targetsno sensitive capability
  • research_get_target_infono sensitive capability
  • research_search_prior_artno sensitive capability
  • sabdab_cdr_sequencesno sensitive capability
  • sabdab_get_structureno sensitive capability
  • sabdab_search_antibodiesno sensitive capability
  • sabdab_search_by_antigenno sensitive capability
  • score_ipsaeno sensitive capability
  • score_ipsae_multi_seedno sensitive capability
  • screen_align_sequencesno sensitive capability
  • screen_compositeno sensitive capability
  • screen_cross_validateno sensitive capability
  • screen_developabilityno sensitive capability
  • screen_diagnose_failuresno sensitive capability
  • screen_diversityno sensitive capability
  • screen_liabilitiesno sensitive capability
  • screen_naturalnessno sensitive capability
  • screen_net_chargeno sensitive capability
  • screen_pareto_frontno sensitive capability
  • screen_shape_complementarityno sensitive capability
  • ssh_detect_gpu_remoteno sensitive capability
  • ssh_detect_tools_remoteno sensitive capability
  • ssh_run_jobno sensitive capability
  • tamarind_get_jobno sensitive capability
  • tamarind_list_jobsno sensitive capability
  • tamarind_list_toolsno sensitive capability
  • tamarind_screen_developabilityno sensitive capability
  • tamarind_screen_naturalnessno sensitive capability
  • tamarind_submit_batchno sensitive capability
  • tamarind_submit_jobno sensitive capability
  • tamarind_wait_for_jobno sensitive capability
  • uniprot_get_domainsno sensitive capability
  • uniprot_get_variantsno sensitive capability
  • uniprot_searchno sensitive capability

Toxic flows 1

Cross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).

What this scan could not see

Versions 1

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v0.1.0-beta latest B 83/100 6 1.8.0 2026-07-23

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: B · 83/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/blatant-why/badge.svg)](https://mcptrustchecker.com/registry/blatant-why)
HTML
<a href="https://mcptrustchecker.com/registry/blatant-why"><img src="https://mcptrustchecker.com/registry/blatant-why/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/blatant-why/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan blatant-why --online

Use the free API → How scoring works

More in Developer Tools