MCP, MCP server
Zenku V2
繁體中文 | Documentation
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.
Rescanned at commit 49a5d98d66c6, unchanged since the check below.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ OBFUSCATION_FILE_OVER_READ_CAP
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
packages/server/src/routes/files.ts, line 124
try { fs.unlinkSync(filePath); } catch { /* file already gone */ } - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
packages/server/src/ai/ollama-models.ts, line 22
const res = await fetch(`${ollamaUrl.replace(/\/+$/, '')}/api/tags`); - SECRETS_PATH_DOTENV Low
Mentions a .env file.
packages/server/src/index.ts, line 6
dotenv.config({ path: path.resolve(process.cwd(), '../../.env') }); - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
packages/server/src/index.ts, line 50
const secret = process.env.WEBHOOK_SECRET; - 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
packages/server/src/routes/files.ts, line 124
try { fs.unlinkSync(filePath); } catch { /* file already gone */ }
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
packages/server/src/ai/ollama-models.ts, line 22
const res = await fetch(`${ollamaUrl.replace(/\/+$/, '')}/api/tags`);
packages/server/src/engine/rule-engine.ts, line 415
const response = await fetch(act.url, {
packages/server/src/engine/rule-engine.ts, line 611
const response = await fetch(act.url, {
Show more
packages/server/src/routes/views.ts, line 86
const hookRes = await fetch(url, {
packages/web/src/api.ts, line 53
const res = await fetch(`${BASE}/views`, { headers: authHeaders() });
packages/web/src/api.ts, line 73
const res = await fetch(`${BASE}/data/${table}?${params.toString()}`, { headers: authHeaders() });
packages/web/src/api.ts, line 78
const res = await fetch(`${BASE}/data/${table}/${id}`, { headers: authHeaders() });
packages/web/src/api.ts, line 83
const res = await fetch(`${BASE}/data/${table}`, {
docker-compose.yml, line 19
test: ["CMD", "node", "-e", "fetch('http://localhost:3001/api/health').then(r=>process.exit(r.ok?0:1))"]
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
packages/server/src/index.ts, line 6
dotenv.config({ path: path.resolve(process.cwd(), '../../.env') });
packages/server/src/index.ts, line 50
const secret = process.env.WEBHOOK_SECRET;
packages/server/src/ai/index.ts, line 27
provider = new ClaudeProvider(process.env.ANTHROPIC_API_KEY);
Show more
packages/server/src/ai/index.ts, line 31
const key = process.env.OPENAI_API_KEY;
packages/server/src/ai/index.ts, line 37
const key = process.env.GEMINI_API_KEY;
packages/server/src/ai/index.ts, line 43
const key = process.env.OPENROUTER_API_KEY;
packages/server/src/ai/index.ts, line 72
if (process.env.ANTHROPIC_API_KEY) {
packages/server/src/ai/index.ts, line 79
if (process.env.OPENAI_API_KEY) {
packages/server/src/ai/index.ts, line 86
if (process.env.GEMINI_API_KEY) {
.gitignore, line 1
node_modules/
README.md, line 67
Copy `.env.example` to `.env` and fill in your API Key and DB credentials:
README_TW.md, line 67
將 `.env.example` 複製為 `.env`,填入您的 API Key 與資料庫連接資訊:
docs/en/02-Architecture-Design/01-system-overview.md, line 74
3. **Environment Variables**: AI API Keys and database connection strings are managed uniformly via a `.env` file.
docs/en/02-Architecture-Design/05-development-environment.md, line 23
Copy `.env.example` to `.env` in the root directory and configure at least one AI provider API Key:
docs/en/02-Architecture-Design/05-development-environment.md, line 25
cp .env.example .env
docs/en/02-Architecture-Design/05-development-environment.md, line 27
Edit `.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
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 49a5d98d66c6. 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.
Date and source
Date checked:
github.com
Commit graded: 49a5d98d66c6161ba6a7dd9f6e36f64cd9a44743
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.