MCP, MCP server
covate
Covate - Context-aware learning sidebar for AI coding assistants, served as an MCP server.
Compatibility: Not stated.
Grade D
Two or more Medium findings, or a High. Only try it in a sandbox.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
PERMISSION_SHELL_UNDECLARED INSTALL_REMOTE_SCRIPT
Why this grade
- PERMISSION_SHELL_UNDECLARED Medium
Runs shell commands that the manifest or description does not mention.
scripts/install.ps1, line 134
Invoke-Expression $updateScript - INSTALL_REMOTE_SCRIPT Medium
Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).
scripts/install.sh, line 3
# Usage: curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash
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.
If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.
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
requests shell access. No manifest field names shell or command execution.
PERMISSION_SHELL_UNDECLARED
scripts/install.ps1, line 134
Invoke-Expression $updateScript
Install and update
Serious
install fetches a script from the network. The docs document an installer that pipes a download into a shell. README documents an installer that pipes a download into a shell.
INSTALL_REMOTE_SCRIPT INSTALL_DOCUMENTED_INSTALLER
CONTRIBUTING.md, line 58
curl -LsSf https://astral.sh/uv/install.sh | sh
README.md, line 152
curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash
scripts/install.sh, line 3
# Usage: curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash
Show more
README.md, line 393
curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash
README_zh-CN.md, line 147
curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash
README_zh-CN.md, line 336
curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash
README_zh-TW.md, line 147
curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash
README_zh-TW.md, line 336
curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash
scripts/install.sh, line 112
if curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash; then
scripts/install.sh, line 146
curl -LsSf https://astral.sh/uv/install.sh | sh
scripts/update.sh, line 5
# curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash
scripts/update.sh, line 164
echo -e "${NC} curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash${NC}"
scripts/update.sh, line 255
echo -e "${NC} curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash${NC}"
scripts/update.sh, line 364
echo -e "${GRAY} curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash${NC}"
Network
Concern
can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
platform/ingest.e2e.test.ts, line 126
const res = await fetch(`${url}/api/ingest`, {
platform/app/[locale]/dashboard/DeviceSignIn.tsx, line 25
const res = await fetch("/api/auth/device/start", { method: "POST" });
platform/app/[locale]/dashboard/DeviceSignIn.tsx, line 41
const res = await fetch("/api/auth/device/poll", { method: "POST" });
Show more
platform/app/[locale]/dashboard/SyncToken.tsx, line 27
const res = await fetch("/api/account/sync-token", { method });
platform/app/lib/auth.ts, line 60
const tokenRes = await fetch("https://github.com/login/oauth/access_token", {
platform/app/lib/auth.ts, line 79
const userRes = await fetch("https://api.github.com/user", {
platform/app/lib/auth.ts, line 89
const emailRes = await fetch("https://api.github.com/user/emails", {
platform/app/lib/auth.ts, line 116
const res = await fetch("https://github.com/login/device/code", {
platform/app/lib/auth.ts, line 142
const res = await fetch("https://github.com/login/oauth/access_token", {
platform/scripts/provision-accounts.mjs, line 67
"\n curl -s https://covate.org/api/ingest -H \"Authorization: Bearer $TOKEN\" \\" +
src/covate/platform_sync.py, line 178
with urllib.request.urlopen(req, timeout=20) as resp:
src/covate/web/main.py, line 236
const resp = await fetch('/api/learning/current');
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
platform/ingest.e2e.test.ts, line 109
const run = await python(["-m", "covate.platform_sync", project], { COVATE_SYNC_URL: url, COVATE_SYNC_TOKEN: token, ...env });
platform/app/lib/auth.ts, line 9
const CLIENT_SECRET = process.env.GITHUB_OAUTH_CLIENT_SECRET;
platform/app/lib/auth.ts, line 10
const SESSION_SECRET = process.env.SESSION_SECRET;
Show more
src/covate/platform_sync.py, line 198
sync_token = sync_token or os.environ.get("COVATE_SYNC_TOKEN")
.dockerignore, line 24
# Virtual environments
.gitignore, line 58
# Local development
.gitignore, line 59
.env
.gitignore, line 106
# env files: cover every variant, keep the checked-in examples
.gitignore, line 107
.env
.gitignore, line 109
!**/.env.example
platform/.gitignore, line 6
.vercel
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
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 1ce7cda23613. requests shell access. No manifest field names shell or command execution. install fetches a script from the network. The docs document an installer that pipes a download into a shell. README documents an installer that pipes a download into a shell. can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: 1ce7cda236137d6cfa8e29aba4969468c5fdd309
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.