MCP, MCP server
io.github.H129hj/checkmcp
io.github.H129hj/checkmcp, an MCP server listed in the PlugVet directory.
Compatibility: Not stated.
Grade D
Two or more Medium findings, or a High finding. Only try it in a sandbox.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit 6d272b1cf568, unchanged since the check below.
AGENT_IGNORE_INSTRUCTIONS NETWORK_HOST_FROM_INPUT
Why this grade
- AGENT_IGNORE_INSTRUCTIONS High
Text tells the agent to ignore earlier instructions.
web/lib/learn.ts, line 778
"Tool poisoning is the headline risk: hidden, imperative instructions planted in tool metadata or outputs (\"ignore previous instructions\", \"do not tell the user\", \"also forwar - NETWORK_HOST_FROM_INPUT Medium
A file takes a URL or endpoint as input and has no fixed host list.
import_mcpizy.py, line 21
return json.loads(urllib.request.urlopen(req, timeout=30).read().decode())
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
Note
requests shell access. The manifest names this permission.
PERMISSION_SHELL_DECLARED
bench.py, line 74
out = subprocess.run(
bench_agentic.py, line 53
out = subprocess.run(cmd, capture_output=True, text=True, timeout=300)
checkmcp/scanners.py, line 59
r = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
import_mcpizy.py, line 21
return json.loads(urllib.request.urlopen(req, timeout=30).read().decode())
import_mcpizy.py, line 38
d = json.loads(urllib.request.urlopen(u, timeout=10).read().decode())
mcpizy_autopublish.py, line 34
return json.loads(urllib.request.urlopen(req, timeout=30).read().decode())
Show more
mcpizy_autopublish.py, line 46
urllib.request.urlopen(req, timeout=20).read()
monitor_run.py, line 23
urllib.request.urlopen(f"https://api.telegram.org/bot{TG_TOKEN}/sendMessage", data=data, timeout=10)
monitor_run.py, line 34
urllib.request.urlopen(req, timeout=10)
benchmark/outcomes.py, line 38
r = urllib.request.urlopen(req, timeout=60)
checkmcp/probe.py, line 39
r = urllib.request.urlopen(req, timeout=timeout)
checkmcp/probe.py, line 90
self._resp = urllib.request.urlopen(urllib.request.Request(self.url, headers=h), timeout=self.timeout)
checkmcp/probe.py, line 151
urllib.request.urlopen(urllib.request.Request(self.endpoint, data=json.dumps(body).encode(), headers=h, method="POST"), timeout=timeout).read()
web/app/policy/page.tsx, line 107
<CopyButton text={`curl -H "X-CheckMCP-Key: <YOUR_KEY>" "https://checkmcp.dev/policy/check?url=https://mcp.example.com/mcp"`} />
web/app/report/ReportClient.tsx, line 27
const c = await fetch(`/api/eval-job?url=${encodeURIComponent(url)}`, { cache: "no-store", ...hdr });
web/app/report/ReportClient.tsx, line 36
const p = await fetch(`/api/eval-job?id=${encodeURIComponent(cj.id)}`, { cache: "no-store" });
web/app/report/ReportClient.tsx, line 55
const r = await fetch(`${endpoint}?url=${encodeURIComponent(url)}`, {
Dockerfile, line 22
CMD python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8080/health',timeout=3).status==200 else 1)"
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
import_mcpizy.py, line 13
SB_KEY = os.environ.get("MCPIZY_SUPABASE_KEY")
import_mcpizy.py, line 14
GH = os.environ.get("GITHUB_TOKEN")
mcpizy_autopublish.py, line 13
KEY = os.environ.get("MCPIZY_SUPABASE_KEY")
Show more
monitor_run.py, line 14
TG_TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN")
server.py, line 44
INTERNAL_SECRET = os.environ.get("CHECKMCP_INTERNAL_SECRET") # partagé avec le front pour les audits privés
server.py, line 126
GH_TOKEN = os.environ.get("GITHUB_TOKEN")
benchmark/outcomes.py, line 21
KEY = os.environ.get("CHECKMCP_LLM_KEY", "")
benchmark/outcomes.py, line 141
DP = os.environ.get("DROP_PILOT_MCP_TOKEN")
.gitignore, line 8
.next/
.gitignore, line 9
.env
web/.gitignore, line 2
.next/
web/.gitignore, line 3
.env.local
web/README.md, line 12
cp .env.example .env.local # remplir si besoin (URL + anon key déjà préremplis)
Agent instructions
Serious
instructions tell the agent to ignore earlier instructions.
AGENT_IGNORE_INSTRUCTIONS
web/lib/learn.ts, line 778
"Tool poisoning is the headline risk: hidden, imperative instructions planted in tool metadata or outputs (\"ignore previous instructions\", \"do not tell the user\", \"also forwar
web/lib/learn.ts, line 1247
"On each tools/call response, it runs the same output analysis a behavioral eval uses: multilingual injection patterns (\"ignore previous instructions\", hidden \"do not tell the u
Obfuscation
Note
a file was over the read cap and was not fully read.
OBFUSCATION_FILE_OVER_READ_CAP
web/lib/learn.ts, line 1
// Educational "learn" hub - plain-English guides to the MCP-security/quality concepts
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 6d272b1cf568. requests shell access. The manifest names this permission. accepts a host from input, with no fixed list in this file. reads a credential or environment file. instructions tell the agent to ignore earlier instructions. a file was over the read cap and was not fully read.
Date and source
Date checked:
github.com
Commit graded: 6d272b1cf5684c0e83afd8c5f01eb8765edf2e9a
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.