Grades are a hygiene check, not a security guarantee.

MCP, MCP server

AgentFeed

AgentFeed, an MCP server listed in the PlugVet directory.

Compatibility: Not stated.

Grade B

Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV OBFUSCATION_FILE_OVER_READ_CAP

Why this grade

  • PERMISSION_DELETE_FILES Low

    Contains a call that can delete files.

    server/src/routes/files.ts, line 30 await fs.rm(wikiDir, { recursive: true, force: true })

  • NETWORK_NO_FIXED_HOST Low

    Makes a network call whose host is not written as a fixed address.

    service.sh, line 42 health_ok() { curl -sf "$HEALTH" >/dev/null 2>&1; }

  • SECRETS_PATH_DOTENV Low

    Mentions a .env file.

    .gitignore, line 20 .env

  • OBFUSCATION_FILE_OVER_READ_CAP Note

    A file was over the read cap and was not fully read.

    package-lock.json, line 1 {

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

    Concern

    can delete files.

    PERMISSION_DELETE_FILES

    server/src/routes/files.ts, line 30

    await fs.rm(wikiDir, { recursive: true, force: true })

    server/src/routes/webclip.ts, line 230

    if (!keep.has(f)) await fs.rm(path.join(assetsDir, f), { force: true })

    server/src/routes/webclip.ts, line 387

    try { await fs.rm(String(t), { force: true }); removed.push(path.basename(String(t))) } catch { /* 单个失败不阻断 */ }

    Show more

    server/src/routes/webclip.ts, line 394

    try { await fs.rm(assetsDir, { recursive: true, force: true }) } catch { /* 目录不存在或占用:忽略 */ }

  • Install and update

    Pass

    No install-time script found, and dependencies are pinned or absent.

  • Network

    Concern

    can reach a host that is not written as a fixed address.

    NETWORK_NO_FIXED_HOST

    service.sh, line 42

    health_ok() { curl -sf "$HEALTH" >/dev/null 2>&1; }

    service.sh, line 43

    ollama_ok() { curl -sf "$OLLAMA_URL/api/tags" >/dev/null 2>&1; }

    service.sh, line 49

    if curl -sf --max-time 300 "$OLLAMA_URL/api/embed" -d "{\"model\":\"$EMBED_MODEL\",\"input\":\"warmup\"}" >/dev/null 2>&1; then

    Show more

    scripts/chunk-backfill.sh, line 22

    # 依赖: bash + curl + python3(JSON 解析,避免依赖 jq)

    scripts/chunk-backfill.sh, line 54

    curl -s -X POST "$BASE/api/wiki/chunks/backfill/stop" >/dev/null 2>&1 || true

    scripts/chunk-backfill.sh, line 59

    curl -sf "$BASE/api/health" >/dev/null 2>&1 || die "服务不可达 ${BASE}(先 ./service.sh start)"

    scripts/chunk-backfill.sh, line 61

    status_json="$(curl -sf "$BASE/api/wiki/chunks/backfill/status")"

    scripts/chunk-backfill.sh, line 76

    start_json="$(curl -s -X POST "$BASE/api/wiki/chunks/backfill/start" \

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_PATH_DOTENV

    .gitignore, line 19

    # 环境变量与密钥

    .gitignore, line 20

    .env

    .gitignore, line 22

    !.env.example

    Show more

    README.md, line 190

    - **密钥不入库**:API Key 仅存于本地 `server/data/`(已 gitignore);仓库不含任何 `.env`、数据库、日志与压缩包

  • Agent instructions

    Pass

    No instruction to ignore earlier instructions or to hide a step.

  • Obfuscation

    Note

    a file was over the read cap and was not fully read.

    OBFUSCATION_FILE_OVER_READ_CAP

    package-lock.json, line 1

    {

  • Licence

    Note

    no licence file found.

    LICENCE_MISSING

    No file path was stored.

    no licence file found.

  • Maintainer activity

    Pass

    The latest commit is within the last 365 days.

Note

Hygiene check of commit 802c467a5a40. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file. a file was over the read cap and was not fully read. no licence file found.

Date and source

Date checked:

View source

github.com

Commit graded: 802c467a5a4061b70a7d90e43ad70e0fed2cc573

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.

Read how this letter is chosen