Skills/PyPI/mcpindex-gate

mcpindex-gate@0.22.2

CAUTION· install only

Publisher claims: "mcpindex gate - the in-path trust-to-act client for MCP tool calls, from mcpindex.ai (the MCP server index). The config-wire install wires a proxy that posts nothing; the Python SDK wrapper posts credential-blind call receipts by default (MCPINDEX_RECEIPT_INGEST_ENABLED=0 to disable)." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry PyPI (MCP server)Publisher mcpindex.ai · publishing for 163 daysInstalls 440Last detonated 4d ago

Coverage

Nothing executable in the bundle ran; the trace covers the install step only.
Tested
every file read, file written and host contacted by what ran
Not tested
use of the skill by an agent

What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.

Before you give it your token

It will ask for
no credential variables read in the code
Where it talks to
no vendor host named in the codeAlso mcpindex.ai — not the publisher's domain; check what for before connecting.
What the honeypot saw
no credential files read · no network
What we could not test
use of the skill by an agent

Connect it under the guard. Nothing executable in the bundle ran; the trace covers the install step only. The code names no credential variable; the guard pins the network to what the honeypot saw and logs every call.

$vet-skills run --net declared -- uvx mcpindex-gate

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-11 and scored it 68/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Auto-update or dynamic fetch configuration; Pipe-to-shell pattern; Auto-update or dynamic fetch configuration. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 1 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.0sprocessscript backend runs setup only
0.0sprocessscript backend runs setup only
0.0sprocessno install scripts to re-run

Static findings

HIGH
Auto-update or dynamic fetch configurationmcpindex_gate/tooling/cse/update_check.py:16 · Auto-update or dynamic fetch configuration — agent may load new code at runtimeNEVER AUTO-UPDATES (load-bearing). The check is NOTIFY-ONLY — it returns an `UpdateNotice`Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
CRITICAL
Pipe-to-shell patternmcpindex_gate/tooling/cse/config_wire.py:3114 · Pipe-to-shell pattern — downloads and immediately executes remote code# "the wiring wizard", and the `curl | sh` alternative (`install.sh`) really does detect →Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST06
MEDIUM
Unicode escape sequence detectedmcpindex_gate/tooling/cse/gate.py:463 · Unicode escape sequence detected — may contain obfuscated payloadsvalue = re.sub(r"[ \t\n\r\f\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+", " ", value)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST07
MEDIUM
Process kill commandmcpindex_gate/tooling/cse/context_pin.py:344 · Process kill command — agent can terminate processesis not: a kill between the open and the final flush leaves truncated JSON at theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Remote installer piped to shellmcpindex_gate/tooling/cse/config_wire.py:3114 · Remote installer piped to shell# "the wiring wizard", and the `curl | sh` alternative (`install.sh`) really does detect →Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST07
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/upgrade_flow.py:273 · Python subprocess execution detectedproc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/lock_client.py:205 · Python subprocess execution detectedself._proc = subprocess.Popen( # noqa: S603 - argv is the operator's own commandFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packagemcpindex_gate/tooling/cse/mcp_lock.py:437 · npx invocation of non-well-known package — may execute untrusted codeRecognizes ``npx [-y] <pkg>[@ver]``, ``uvx <pkg>[==ver]`` (and ``--from``), ``pipx run``Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Auto-update or dynamic fetch configurationmcpindex_gate/tooling/cse/update_check.py:221 · Auto-update or dynamic fetch configuration — agent may load new code at runtimeauto-updates — it only decides whether to surface a 'newer version available' notice."""Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/proxy.py:1924 · Python subprocess execution detectedself._proc = subprocess.Popen( # noqa: S603 — cmd is the host-configured upstreamFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Auto-update or dynamic fetch configurationmcpindex_gate/tooling/cse/config_wire.py:3095 · Auto-update or dynamic fetch configuration — agent may load new code at runtimeauto-updated), so upgrading is one explicit paste — no guesswork. Pure + unit-testable.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsmcpindex_gate/tooling/cse/config_wire.py:380 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system fileshas no passwd entry (k8s `runAsUser` with no /etc/passwd row, systemd `DynamicUser=`). SoFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathsmcpindex_gate/trust/schema_scan.py:47 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesr"|(?:\b(?:id_rsa|\.pem|\.env|/var/secrets|\.config/credentials)\b)",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Unicode escape sequence detectedmcpindex_gate/tooling/cse/gate.py:450 · Unicode escape sequence detected — may contain obfuscated payloadsvalue = re.sub(r"[ \t\n\r\f\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+", " ", value)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST07
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/result_sandbox.py:104 · Python subprocess execution detectedimage_proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/result_sandbox.py:140 · Python subprocess execution detectedself._proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packagemcpindex_gate/tooling/cse/config_wire.py:1480 · npx invocation of non-well-known package — may execute untrusted code# start with a dash (npx `-y`, uv `--with`, `--port`, `-v`, …), and argparse treats aFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/result_sandbox.py:73 · Python subprocess execution detectedruntimes_proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedmcpindex_gate/tooling/cse/result_sandbox.py:58 · Python subprocess execution detectedinfo = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Process kill commandmcpindex_gate/tooling/lexicon.py:34 · Process kill command — agent can terminate processes"send drop destroy modify upload insert merge purge kill "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packagemcpindex_gate/tooling/cse/mcp_lock.py:264 · npx invocation of non-well-known package — may execute untrusted code# npx options that take a value. Anything else that starts with '-' is a flag.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06

Cost to the agent

Instructions loaded
≈109 tok
1 file · 72 in bundle

Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.

Known vulnerabilities

No advisories in OSV for mcpindex-gate@0.22.2 as of 4d ago. This is the package itself, not its dependencies.

What would make this Verified

12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%
  1. Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
  2. Unclaimed publisher≈ +8 on the totalClaim mcpindex.ai: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  3. Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
  4. Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
  5. Unicode escape sequence detected≈ +2 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
  6. Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
Publish a new version to PyPI, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim mcpindex.aiPropose a patch to the maintainer