MCP, MCP server
com.mangofolio/investbrain
有经验投资者的纪律自主工具,解决"知行合一"问题 不是投顾,不给建议,而是"镜子" + "纪律锚点"
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit a776d5777721, unchanged since the check below.
OBFUSCATION_MINIFIED_PAYLOAD
Why this grade
- OBFUSCATION_MINIFIED_PAYLOAD Medium
Contains a very long line with almost no spaces in a script or style file.
data/knowledge/vectors/chroma.sqlite3, line 1
SQLite format 3 @ 3 4 .zp � !�
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
desktop/src-tauri/icons/build_icons.py, line 51
os.remove(out_png)
desktop/src-tauri/icons/build_icons.py, line 53
subprocess.run(
desktop/src-tauri/icons/build_icons.py, line 64
shutil.rmtree(ud, ignore_errors=True)
Show more
desktop/src-tauri/icons/build_icons.py, line 95
subprocess.run(args, check=True)
desktop/src-tauri/icons/build_icons.py, line 111
shutil.rmtree(TMP, ignore_errors=True)
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
app/lib/analytics.ts, line 83
await fetch(ENV_ENDPOINT, {
app/lib/api.ts, line 59
const resp = await fetch(`${SIDECAR_BASE}${path}`, init);
app/lib/download-config.ts, line 61
const r = await fetch('/.well-known/releases.json', { cache: 'no-store' });
Show more
desktop/scripts/local-smoke.sh, line 40
RESP=$(curl -sf "http://127.0.0.1:$PORT/health")
desktop/sidecar/src/server.py, line 400
with urllib.request.urlopen(req, timeout=60) as resp:
lib/api.ts, line 4
const res = await fetch(`${API_BASE}/api/llm/config`)
lib/api.ts, line 13
const res = await fetch(`${API_BASE}/api/llm/config`, {
src/mcp_server/notifier.py, line 109
resp = requests.post(url, json=payload, timeout=10)
src/mcp_server/notifier.py, line 149
resp = requests.post(url, json=payload, timeout=10)
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
app/openapi/page.tsx, line 474
<CodeBlock code={`cp .env.example .env
app/openapi/page.tsx, line 475
# 编辑 .env,填入:
app/openapi/page.tsx, line 801
克隆仓库 → pip install → 配置 .env → 启动 MCP Server → 连接 Claude Desktop
Show more
desktop/src-tauri/src/lib.rs, line 58
.env("SIDECAR_PORT", "8765")
desktop/src-tauri/src/lib.rs, line 59
.env("INVESTBRAIN_DATA_DIR", &dev_data_dir)
desktop/src-tauri/src/lib.rs, line 78
.env("SIDECAR_PORT", "8765")
desktop/src-tauri/src/lib.rs, line 79
.env("INVESTBRAIN_DATA_DIR", &rel_data_dir)
src/mcp_server/datasources/tushare_datasource.py, line 15
_TUSHARE_TOKEN = os.environ.get("TUSHARE_TOKEN", "")
src/mcp_server/llm/deepseek_client.py, line 136
api_key = os.environ.get("DEEPSEEK_API_KEY")
src/mcp_server/llm/deepseek_client.py, line 145
api_key = config.get("api_key") or os.environ.get("DEEPSEEK_API_KEY")
.gitignore, line 9
*.py[cod]
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains a minified payload.
OBFUSCATION_MINIFIED_PAYLOAD
data/knowledge/vectors/chroma.sqlite3, line 1
SQLite format 3 @ 3 4 .zp � !�
desktop/ui/_next/static/chunks/polyfills-42372ed130431b0a.js, line 3
"[t]()||Op&&Mi[t].name!==t})},Rp=_i.start,Pp=xp("trimStart")?function(){return Rp(this)}:"".trimStart;Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Pp},{trimL
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 a776d5777721. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file. contains a minified payload.
Date and source
Date checked:
github.com
Commit graded: a776d577772119d3ad68b62e43fe677c9faf7eda
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.