This project is in public beta. Only the latest tagged version
(currently v0.1.0-beta.3) receives security fixes.
| Version | Supported |
|---|---|
0.1.0-beta.x |
yes |
0.0.x and earlier |
no |
When 1.0.0 ships, we'll narrow this to "current minor + previous minor".
Do not open a public issue for security problems.
Use GitHub's private security advisories:
- Go to https://github.com/jmpijll/unraid-code-mode-mcp/security/advisories
- Click "Report a vulnerability"
- Fill in the form
Include:
- A description of the vulnerability and its impact
- Steps to reproduce (or a PoC)
- Affected commit / tag
- Suggested fix if you have one
We aim to acknowledge within 7 days and have a fix or mitigation within 30 days for confirmed issues. We'll coordinate disclosure with you.
In scope:
- The MCP server (stdio + Streamable HTTP transports)
- The QuickJS sandbox host bridge (escape paths, header smuggling, prototype pollution between sandbox and host, secret leakage)
- The credential-resolution path (env vs HTTP headers, multi-tenant
AsyncLocalStorageisolation) - TLS handling, including any
UNRAID_INSECURE/X-Unraid-Insecureoverrides - The Cloudflare Workers entry (
cf-worker/) - The GraphQL spec loader and its caching/network behaviour
- Anything in the published source that could mishandle a customer's Unraid API key or CA bundle
Out of scope (please report to Lime Technology / the Unraid project, not us):
- Vulnerabilities in the upstream
unraid/apiGraphQL server - Vulnerabilities in the Unraid OS itself or in any plugin / Docker container running on it
- Vulnerabilities in
quickjs-emscripten-core,@modelcontextprotocol/sdk,undici,graphql, or any other upstream dependency (please file with them; we'll bump once a fix lands)
This MCP server is a development / homelab tool, not a hardened multi-tenant SaaS:
- The
executetool runs LLM-written JavaScript against your Unraid server. Treat your MCP client config the way you'd treat yourunraid-apikey — anyone who can talk to your MCP server can issue mutations against your Unraid box. - The QuickJS sandbox isolates the LLM's code from the host; API keys, CA bundles, and TLS settings never enter the sandbox. The sandbox cannot open sockets, files, or load Node modules.
- The host enforces a per-execute API call budget (default 50; configurable via
UNRAID_MAX_CALLS_PER_EXECUTE) and a 30 s / 64 MiB sandbox cap to bound runaway loops. - Multi-tenant deployments are gated by an origin allowlist (
MCP_HTTP_ALLOWED_ORIGINS) and a 60 req/min/IP rate limiter. Sit it behind a reverse proxy with auth before exposing it to the public internet.
UNRAID_INSECURE=true is supported as an explicit opt-in for lab use, with a noisy warning logged on every request. Production deployments should provide a CA bundle via UNRAID_CA_CERT_PATH (or X-Unraid-Ca-Cert per request in multi-tenant mode). The Cloudflare Worker variant rejects insecure mode entirely.