Skills/PyPI/reeflex-mcp

reeflex-mcp@0.1.5

CAUTION· not started

Publisher claims: "Reeflex MCP gateway -- a transparent MCP proxy that governs any MCP upstream: intercepts tools/call, normalizes it into a Reeflex Action Envelope, asks reeflex-core /v1/decide, and enforces the verdict. Zero LLM in the decision path." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry PyPI (MCP server)Publisher reeflex-io · publishing for 41 daysInstalls 127Last detonated 1 h ago

Coverage

Not started: dependency install failed; the server itself was not observed.
Tested
the dependency install step · every file read, file written and host contacted by what ran
Not tested
server startup · the tool list · tool behavior

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
REEFLEX_CORE_TOKENREEFLEX_MCP_ADMIN_TOKENConfiguration, not credentials: REEFLEX_CORE_URL, REEFLEX_MCP_CALL_TIMEOUT, REEFLEX_MCP_CONFIG, REEFLEX_MCP_HOST, REEFLEX_MCP_MAPPINGS_DIR, REEFLEX_MCP_PORT, REEFLEX_MCP_TIMEOUT, REEFLEX_MCP_TRANSPORT, REEFLEX_MCP_UPSTREAM_CONNECT_TIMEOUT, REEFLEX_MODE, REEFLEX_VERIFY_SSL
Where it talks to
no vendor host named in the codeAlso mcp.internal — 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
server startup · the tool list · tool behavior

Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names mcp.internal as well as its own vendor. The guard injects REEFLEX_CORE_TOKEN, REEFLEX_MCP_ADMIN_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.

$vet-skills run --net declared -- uvx reeflex-mcp

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 (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-15 and scored it 78/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; Access to sensitive file paths; Auto-update or dynamic fetch configuration. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.2sprocessdependency install exit 1 ·
0.2sclaimednot started: dependency install failed (exit 1); the server itself was not observed
0.2sprocessscript backend runs setup only
0.2sprocessno install scripts to re-run

Static findings

LOW
Fake instruction boundary tagREADME.md:412 · Fake instruction boundary tag · informational: not an instruction file… an upstream | | `REEFLEX_MCP_MAPPINGS_DIR` | unset | directory of declarative `<system>.yaml` mappings (Track 4) -- overrides the YAML `mappings_dir:` key; unset on bo…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
HIGH
Auto-update or dynamic fetch configurationreeflex_mcp/cli.py:421 · Auto-update or dynamic fetch configuration — agent may load new code at runtimedef _try_hot_reload(gateway_url: str | None) -> Tuple[bool, str]:Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commandtests/test_upstream.py:455 · Process kill command — agent can terminate processes__aexit__ (the real StdioUpstreamConnection's process-kill teardown, inFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Process kill commandtests/test_upstream.py:377 · Process kill command — agent can terminate processesBaseException -- mirrors what stdio_client()'s baked-in process-killFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packagereeflex_mcp/mappings/filesystem.yaml:3 · npx invocation of non-well-known package — may execute untrusted code# (npx -y @modelcontextprotocol/server-filesystem <allowed-dir>...).Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commandreeflex_mcp/upstream.py:225 · Process kill command — agent can terminate processes…close() down. stdio_client() has no terminate_on_close knob to skip its process-kill teardown; shielding stops an ancestor's in-flight cancellation from racing anyio…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packagereeflex_mcp/cli.py:155 · npx invocation of non-well-known package — may execute untrusted codehelp="stdio command + args, e.g. --command npx -y @modelcontextprotocol/server-filesystem /data")Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsreeflex_mcp/registry.py:226 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesraise ConfigError(f"reeflex-mcp config: upstream {name!r}.env must be a mapping if present")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Auto-update or dynamic fetch configurationreeflex_mcp/cli.py:596 · Auto-update or dynamic fetch configuration — agent may load new code at runtimereturn 0 # the upstream IS registered either way -- hot-reload is a best-effort convenienceFix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Auto-update or dynamic fetch configurationreeflex_mcp/upstream.py:380 · Auto-update or dynamic fetch configuration — agent may load new code at runtime"""Track 5 (design doc section 13) `add`/`import` hot-reload: connectFix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Auto-update or dynamic fetch configurationreeflex_mcp/cli.py:447 · Auto-update or dynamic fetch configuration — agent may load new code at runtimereturn True, f"gateway at {url} hot-reloaded: connected {added}, tools/list_changed broadcast to front sessions."Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
LOW
Prompt injectionreeflex_mcp/mappings/postgres.yaml:75 · Prompt injection — known jailbreak technique reference · informational: not an instruction file# one. Real annotation in unrestricted mode: destructiveHint: true.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
AST01

Cost to the agent

Instructions loaded
≈94 tok
1 file · 48 in bundle
Tool list per prompt
≈0 tok
0 tools · 0 per tool
Handshake
no reply
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 0

Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.

Known vulnerabilities

Not checked against OSV yet; the weekly check has not reached this version.

What would make this Verified

2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%
  1. Unclaimed publisher≈ +8 on the totalClaim reeflex-io: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  2. Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
  3. 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.
  4. Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
  5. npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
Publish a new version to PyPI, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim reeflex-ioPropose a patch to the maintainer