MCP, MCP server
Mcp Trino
A high-performance MCP server for Trino distributed SQL query engine
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV PERMISSION_SHELL_DECLARED INSTALL_DOCUMENTED_INSTALLER SECRETS_ENV_READ
Why this grade
- NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
install.sh, line 60
for cmd in curl tar; do - NETWORK_UNNAMED_HOST Low
Calls a fixed host that the description does not name.
install.sh, line 60
for cmd in curl tar; do - SECRETS_PATH_DOTENV Low
Mentions a .env file.
README.md, line 289
op run --env-file=.env -- mcp-trino - PERMISSION_SHELL_DECLARED Note
Runs shell commands, and the manifest or description says so.
cmd/integration_test.go, line 38
cmd := exec.Command("go", "build", "-o", binaryPath, ".") - INSTALL_DOCUMENTED_INSTALLER Note
Documentation shows an installer that pipes a download into a shell.
README.md, line 121
curl -fsSL https://raw.githubusercontent.com/tuannvm/mcp-trino/main/install.sh | bash - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
.claude-plugin/install-binary.mjs, line 75
if (process.env.GITHUB_TOKEN) {
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Note
requests shell access. The manifest names this permission.
PERMISSION_SHELL_DECLARED
cmd/integration_test.go, line 38
cmd := exec.Command("go", "build", "-o", binaryPath, ".")
cmd/integration_test.go, line 49
cmd := exec.Command(binary, "--version")
cmd/integration_test.go, line 64
cmd := exec.Command(binary, "--help")
Show more
cmd/integration_test.go, line 79
cmd := exec.Command(binary, "catalogs")
cmd/integration_test.go, line 104
cmd := exec.Command(binary, "unknown-argument")
cmd/integration_test.go, line 132
cmd := exec.Command(binary, "--format", "invalid-format", "catalogs")
cmd/integration_test.go, line 169
cmd := exec.Command(binary, "--config", configFile, "catalogs")
cmd/integration_test.go, line 202
cmd := exec.Command(binary, "--config", configFile, "catalogs")
Install and update
Note
README documents an installer that pipes a download into a shell. The docs document an installer that pipes a download into a shell.
INSTALL_DOCUMENTED_INSTALLER
README.md, line 121
curl -fsSL https://raw.githubusercontent.com/tuannvm/mcp-trino/main/install.sh | bash
docs/installation.md, line 82
curl -fsSL https://raw.githubusercontent.com/tuannvm/mcp-trino/main/install.sh | bash
Network
Concern
can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
install.sh, line 60
for cmd in curl tar; do
install.sh, line 89
VERSION=$(curl -fsSL -H "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
install.sh, line 91
VERSION=$(curl -fsSL "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
Show more
install.sh, line 117
if ! curl -fsSL "$DOWNLOAD_URL" | tar -xz -C "$TEMP_DIR" --strip-components=0 "$BINARY_NAME"; then
.claude-plugin/install-binary.mjs, line 79
const response = await fetch(`https://api.github.com/repos/${GITHUB_REPO}/releases/latest`, {
.claude-plugin/install-binary.mjs, line 91
const response = await fetch(url);
.claude-plugin/install-binary.mjs, line 184
const checksumResponse = await fetch(CHECKSUMS_URL);
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
.claude-plugin/install-binary.mjs, line 75
if (process.env.GITHUB_TOKEN) {
.claude-plugin/install-binary.mjs, line 76
headers['Authorization'] = `Bearer ${process.env.GITHUB_TOKEN}`;
README.md, line 289
op run --env-file=.env -- mcp-trino
Show more
internal/config/oauth_test.go, line 143
origClientSecret := os.Getenv("OIDC_CLIENT_SECRET")
README.md, line 323
op run --env-file=.env -- mcp-trino
docs/secrets.md, line 13
op run --env-file=.env -- mcp-trino
docs/secrets.md, line 34
### Step 2 - Write a `.env` file with references
docs/secrets.md, line 37
# .env (safe to commit - these are references, not secrets)
docs/secrets.md, line 48
op run --env-file=.env -- mcp-trino
docs/secrets.md, line 58
op run --env-file=.env -- mcp-trino --version
docs/secrets.md, line 59
op run --env-file=.env -- mcp-trino query "SELECT 1"
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 3e0be007e203. requests shell access. The manifest names this permission. README documents an installer that pipes a download into a shell. The docs document an installer that pipes a download into a shell. can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: 3e0be007e203057318a098c5b846ba881e8f427c
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.