overseerr-mcp@1.0.2
CAUTION· not startedPublisher claims: "FastMCP server for Overseerr media requests" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
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
CLAUDE_PLUGIN_OPTION_OVERSEERR_API_KEYCLAUDE_PLUGIN_OPTION_OVERSEERR_MCP_TOKENOVERSEERR_API_KEYOVERSEERR_MCP_NO_AUTHOVERSEERR_MCP_TOKENConfiguration, not credentials: APPDATA_PATH, CRED_PATTERNS, GENERIC_PATTERNS, HELP_PATTERN, OVERSEERR_LOG_LEVEL, OVERSEERR_MCP_HOST, OVERSEERR_MCP_PORT, OVERSEERR_MCP_TRANSPORT, OVERSEERR_URL, SENSITIVE_PATTERNS, TOOL_PATTERN, USER_CONFIG_KEYS- Where it talks to
- no vendor host named in the codeAlso astral.sh — 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 astral.sh as well as its own vendor. The guard injects CLAUDE_PLUGIN_OPTION_OVERSEERR_API_KEY, CLAUDE_PLUGIN_OPTION_OVERSEERR_MCP_TOKEN, OVERSEERR_API_KEY, OVERSEERR_MCP_NO_AUTH, OVERSEERR_MCP_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.
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-14 and scored it 72/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: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
cp "$ENV_FILE" "${BACKUP_DIR}/.env.bak.$(date +%s)"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.ENV_FILE="${CLAUDE_PLUGIN_ROOT}/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " Add all variables to .env and .env.example instead."Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# These would be loaded by server.py from .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Verify .env.example is NOT ignoredFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.mapfile -t baks < <(ls -t "${BACKUP_DIR}"/.env.bak.* 2>/dev/null)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."$PROJECT_DIR/.env.example" \Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose..env.example \Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if [ -f "$PROJECT_ROOT/.env" ]; thenFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.fail "docker-compose.yaml env_file" "No env_file: directive — services need env_file: .env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- `OVERSEERR_MCP_ALLOW_DESTRUCTIVE` and `OVERSEERR_MCP_ALLOW_YOLO` are defined in `.env.example` but not yet implemented in tool logic.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."description": "Sync userConfig credentials to .env and enforce permissions",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… ]]; then SRC_MATCHES=$(grep -rnE '(os\.getenv|os\.environ|env::var|process\.env)\s*\(?\s*["\x27]?(MCP_BEARER_TOKEN|API_KEY|PORT|HOST|TOKEN|SECRET|PASSWORD|AUTH…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."!.env.example"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.load_dotenv(dotenv_path=REPO_ROOT / ".env", override=True)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if git -C "$PROJECT_DIR" check-ignore .env.example > /dev/null 2>&1; thenFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " ⚠ uv not found — install with: curl -LsSf https://astral.sh/uv/install.sh | sh"Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."Found 'environment:' block — all env vars must come from env_file: .env only"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# env_file: .env presentFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Check for COPY .env into imageFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env.*"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Load .env if present (without exporting — just pick up variables)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " docker-compose.yaml should only use 'env_file: .env'"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.command -v npx &>/dev/null || { log_err "npx not found in PATH (Node.js required for stdio mode)"; exit 2; }Fix: Pin versions and sources; vendor anything fetched at install time.set -a; source "$PROJECT_ROOT/.env"; set +aFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if help_out="$(npx -y mcporter@latest call \Fix: Pin versions and sources; vendor anything fetched at install time.npx -y mcporter@latest call \Fix: Pin versions and sources; vendor anything fetched at install time.# - ./logs:/app/logs # uncomment after: mkdir -p logs && chown 1000:1000 logsFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if list_out="$(npx -y mcporter@latest list --config "$cfg" 2>>"$LOG_FILE")"; thenFix: Pin versions and sources; vendor anything fetched at install time.npx -y mcporter@latest call \Fix: Pin versions and sources; vendor anything fetched at install time.if search_out="$(npx -y mcporter@latest call \Fix: Pin versions and sources; vendor anything fetched at install time.chmod 600 "$bak"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.printf '{"mcpServers":{"overseerr":{"url":"%s","transport":"http"}}}' "$MCP_URL" > "$_MCPORTER_CONFIG_TMPFILE"Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.echo " ⚠ uv not found — install with: curl -LsSf https://astral.sh/uv/install.sh | sh"Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.… not exist, and there are no other users, then a user will be created with full admin privileges. If a user logs in with access to the main Plex server, they will also have an…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.chown -R mcpuser:mcpuser /appFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chown -R "$PUID:$PGID" "$APPDATA_PATH/overseerr-mcp"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# Try ~/.claude-homelab/.env if env vars not setFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.fail "hooks/scripts/$BASENAME" "Not executable — run: chmod +x hooks/scripts/$BASENAME"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.RUN chmod +x entrypoint.sh && \Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.npx -y mcporter@latest list --config "$cfg"Fix: Pin versions and sources; vendor anything fetched at install time.chmod 600 "$ENV_FILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.If the variables are not set in the shell, the script automatically attempts to source them from `~/.claude-homelab/.env` before aborting.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.rm -rf /var/lib/apt/lists/*Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.- path: ~/.claude-homelab/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.local env_file="${HOME}/.claude-homelab/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Cost to the agent
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
No advisories in OSV for overseerr-mcp@1.0.2 as of 4 h ago. This is the package itself, not its dependencies.
What would make this Verified
8 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Unclaimed publisher≈ +8 on the totalClaim pypi: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- 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.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.