MCP, MCP server
Parselbox
Parselbox, an MCP server listed in the PlugVet directory.
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
INSTALL_REMOTE_SCRIPT
Why this grade
- 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).
.claude/skills/parselbox/SKILL.md, line 62
Requires Deno (`curl -fsSL https://deno.land/install.sh | sh`) and `pip install parselbox`.
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
examples/wasi/compile_c.py, line 47
os.remove("sysroot.tar")
parselbox/main.py, line 142
subprocess.run([deno_path, "--version"], capture_output=True, check=True)
parselbox/main.py, line 169
result = subprocess.run(
Show more
parselbox/main.py, line 354
shutil.rmtree(self.tasks_dir)
Install and update
Serious
install fetches a script from the network.
INSTALL_REMOTE_SCRIPT
README.md, line 104
curl -fsSL https://deno.land/install.sh | sh
.claude/skills/parselbox/SKILL.md, line 62
Requires Deno (`curl -fsSL https://deno.land/install.sh | sh`) and `pip install parselbox`.
Network
Concern
can reach httpbin.org. The description does not name that host. can reach a host that is not written as a fixed address. can reach api.example.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
examples/parselbox-basics/basics.py, line 131
r = requests.get('https://httpbin.org/ip', timeout=5)
examples/parselbox-basics/basics.py, line 141
requests.get('https://httpbin.org/ip', timeout=2)
examples/parselbox-basics/serve.py, line 45
r = requests.get("http://localhost:8080/")
Show more
examples/parselbox-basics/serve.py, line 83
requests.get("http://localhost:8081/api/items").json()
examples/parselbox-basics/serve.py, line 88
requests.post("http://localhost:8081/api/items", json={"name": "Item 3"}).json()
examples/parselbox-basics/serve.py, line 93
requests.delete("http://localhost:8081/api/items", json={"id": 2}).json()
examples/parselbox-basics/serve.py, line 98
requests.get("http://localhost:8081/api/items").json()
examples/parselbox-basics/serve.py, line 139
requests.get("http://localhost:8082/api/users").json()
examples/parselbox-basics/serve.py, line 144
requests.post("http://localhost:8082/api/users", json={"name": "Bob"}).json()
examples/parselbox-basics/serve.py, line 149
requests.get("http://localhost:8082/api/users").json()
examples/parselbox-basics/serve.py, line 169
r = requests.post(
examples/parselbox-basics/tasks.py, line 40
def fetch(self, id: int) -> dict:
examples/parselbox-basics/tasks.py, line 108
seq = [svc.fetch(id=i) for i in range(5)]
examples/parselbox-basics/tasks.py, line 151
other = api.fetch(id=1)
examples/parselbox-basics/toolkit.py, line 30
def fetch(self, id: int) -> dict:
examples/wasi/compile_c.py, line 39
const res = await fetch(url);
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_DOTENV
parselbox/prompt.py, line 261
- `grep -r` auto-skips hidden directories (`.git`, `.env`, etc.)
parselbox/sandbox/filesystem.ts, line 193
env: { ...env, HOME: '/workspace', USER: 'user' },
.dockerignore, line 153
# Environments
Show more
.dockerignore, line 288
# dotenv environment variable files
.dockerignore, line 289
.env
.dockerignore, line 291
!.env.example
.gitignore, line 151
# Environments
.gitignore, line 290
# dotenv environment variable files
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
uv.lock, line 1
version = 1
Licence
Pass
A licence file is present (LICENSE.md).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 786c27b57433. can delete files. install fetches a script from the network. can reach httpbin.org. The description does not name that host. can reach a host that is not written as a fixed address. can reach api.example.com. The description does not name that host. 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: 786c27b5743360be87327ae8dfae9a63969a8b84
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.