MCP, MCP server
mxLore
Self-hosted MCP server for AI-assisted software development.
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.
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.
claude-setup/skills/mxKnowledge/scripts/knowledge-cache.js, line 59
try { fs.unlinkSync(tmp); } catch { /* best effort */ } - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
admin/www/js/api.js, line 33
const res = await fetch('api' + path, opts); - SECRETS_PATH_DOTENV Low
Mentions a .env file.
claude-setup/hooks/env-guard.js, line 3
// Rule: values inside .env files (.env, *.env, .env.*) must never reach the - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
src/proxy-go/inbox.go, line 72
sockToken: os.Getenv("CLAUDE_CODE_MESSAGING_TOKEN"), - OBFUSCATION_FILE_OVER_READ_CAP Note
A file was over the read cap and was not fully read.
admin/www/js/lib/three.min.js, 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
claude-setup/skills/mxKnowledge/scripts/knowledge-cache.js, line 59
try { fs.unlinkSync(tmp); } catch { /* best effort */ }
src/orchestrator-go/open_windows.go, line 14
cmd := exec.Command("explorer.exe", filepath.Clean(dir))
src/orchestrator-go/open_windows.go, line 36
cmd = exec.Command("cmd.exe", "/c", bin, dir)
Show more
src/orchestrator-go/open_windows.go, line 38
cmd = exec.Command(bin, dir)
src/orchestrator-go/cmd/sesstest/main.go, line 38
cmd := exec.Command(exe, args...)
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
admin/www/js/api.js, line 33
const res = await fetch('api' + path, opts);
admin/www/js/connect.js, line 79
fetch('api/invite/' + encodeURIComponent(token), {
admin/www/js/connect.js, line 259
fetch('api/invite/' + encodeURIComponent(token) + '/confirm', {
Show more
admin/www/js/flow.js, line 260
var res = await fetch('api/graph/flow/detail?s=' + e.s + '&t=' + e.t + '&type=' + e.type, { credentials: '
admin/www/js/flow.js, line 410
var res = await fetch('api/graph/flow', { credentials: '
admin/www/js/graph.js, line 817
var res = await fetch('api/' + path, { method: 'GET', credentials: '
admin/www/js/graph3d.js, line 211
return fetch('api/graph?project=' + encodeURIComponent(slug) + '&limit=2000',
admin/www/js/project-bundle.js, line 317
var res = await fetch('api/export', {
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
claude-setup/hooks/env-guard.js, line 3
// Rule: values inside .env files (.env, *.env, .env.*) must never reach the
claude-setup/hooks/env-guard.js, line 4
// context window. permissions.deny Read(//**/.env…) already covers Read/Grep
src/proxy-go/inbox.go, line 72
sockToken: os.Getenv("CLAUDE_CODE_MESSAGING_TOKEN"),
Show more
claude-setup/hooks/env-guard.js, line 10
// like an .env file AND (the file exists | the token is a glob | it cannot be
claude-setup/hooks/env-guard.js, line 14
// Fail-closed on .env tokens, fail-open on malformed input (never break the shell).
claude-setup/hooks/env-guard.js, line 20
const ENV_BASENAME = /^(?:\.env|[^\\/]+\.env|\.env\.[A-Za-z0-9_.-]+)$/i;
claude-setup/hooks/env-guard.js, line 28
// copy/move verbs: allowed only when the destination is itself an .env file or a directory
claude-setup/hooks/env-guard.js, line 73
if (!path.isAbsolute(t) && cwdChanged) return true; // `cd X && cat .env` → relative to unknown dir → closed
claude-setup/hooks/env-guard.js, line 120
if (/<\s*\S*\.env/i.test(seg)) return false; // never feed an .env via redirect
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
admin/www/js/lib/three.min.js, line 1
/**
Licence
Pass
A licence file is present (LICENSE.txt).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit eedd96464229. 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: eedd9646422951ef043fb99b761d8bcb3fd3101d
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.