This report does not block or authorize the manifest or ZIP.
The skill is a legitimate Context7 documentation helper, but it relies on local shell scripts, subprocess execution, and network-backed MCP access. Most markdown backtick and library-resolution findings are false positives, while the real risks are unpinned npx execution, shell-based process management, and a Python stdio transport that uses shell=True.
Report position
Historical report
Open audit history before using this report to install.
Audit attestation
Not attestable
The required immutable binding is incomplete.
Human verification
Not verified
No human verification is recorded for this report.
Coverage
10 Files scanned · 1,333 Lines analyzed
29 items shown for review
Limitations
This report does not claim runtime or sandbox execution and does not prove the absence of side effects.
01
Evidence chain
Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.
This line starts a subprocess from a command string with shell=True. If the stdio command is influenced by a caller, it creates a command execution risk.
The main workflow executes local shell and Python helpers that invoke the Context7 MCP package through npx. This intended behavior expands the install-time trust boundary to external commands.
The main workflow executes local shell and Python helpers that invoke the Context7 MCP package through npx. This intended behavior expands the install-time trust boundary to external commands.
The main workflow executes local shell and Python helpers that invoke the Context7 MCP package through npx. This intended behavior expands the install-time trust boundary to external commands.
This script invokes the Python MCP client, which starts the Context7 MCP package with npx. That is intentional external command execution and should be reviewed before install.
This script invokes the Python MCP client, which starts the Context7 MCP package with npx. That is intentional external command execution and should be reviewed before install.
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
The server helper executes npx and uses shell process checks with a PID file. This is real local command execution, even though it is part of the intended workflow.
echo "Context7 MCP already running on port $PORT (PID: $(cat $PID_FILE))"
The server helper executes npx and uses shell process checks with a PID file. This is real local command execution, even though it is part of the intended workflow.
The server helper executes npx and uses shell process checks with a PID file. This is real local command execution, even though it is part of the intended workflow.
echo "Context7 MCP started on port $PORT (PID: $(cat $PID_FILE))"
The server helper executes npx and uses shell process checks with a PID file. This is real local command execution, even though it is part of the intended workflow.
The server helper executes npx and uses shell process checks with a PID file. This is real local command execution, even though it is part of the intended workflow.
The stop helper executes shell process-management commands and reads a PID file. It can affect local processes and should be treated as a real operational risk.
The stop helper executes shell process-management commands and reads a PID file. It can affect local processes and should be treated as a real operational risk.
The stop helper trusts a predictable /tmp PID file and can terminate processes based on that value or a broad match pattern. This creates a local denial-of-service risk.
The stop helper trusts a predictable /tmp PID file and can terminate processes based on that value or a broad match pattern. This creates a local denial-of-service risk.
The stop helper trusts a predictable /tmp PID file and can terminate processes based on that value or a broad match pattern. This creates a local denial-of-service risk.
The stop helper trusts a predictable /tmp PID file and can terminate processes based on that value or a broad match pattern. This creates a local denial-of-service risk.
The stop helper trusts a predictable /tmp PID file and can terminate processes based on that value or a broad match pattern. This creates a local denial-of-service risk.
03
Risk findings
Confirmed security concerns are separated from items that still need review.
The scripts execute @upstash/context7-mcp through npx without a pinned version. A changed or compromised package release would run local code during documentation lookup.
The cited commands run npx -y @upstash/context7-mcp and do not specify a version. This is a clear supply-chain execution risk, although the package appears intended for the skill.
The stop script can force-kill the PID stored in a predictable temporary file and can use pkill with a pattern built from the port argument. This can terminate unintended local processes if the PID file or port value is unsafe.
The script reads /tmp/context7-mcp-${PORT}.pid, uses kill -9 on that PID, and falls back to pkill -f with the port value. The behavior is explicit process control, but impact is local.
04
Remediation
Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.
FIX-001
High
Unpinned npx execution of the Context7 MCP package.
Pin @upstash/context7-mcp to a reviewed version or vendor a verified launcher, and document the expected package checksum or version.
FIX-002
High
Python stdio transport starts command strings with shell=True.
Replace shell=True with an argument array, or restrict --stdio to an allowlist of reviewed commands.
FIX-003
Medium
PID files are stored under a predictable /tmp path and are trusted by start and stop helpers.
Use a private runtime directory, validate PID ownership and command name before killing, and avoid broad pkill patterns.
FIX-004
Medium
Shell scripts interpolate user values into JSON parameter strings.
Build JSON parameters with jq, Python json.dumps, or another structured encoder to avoid malformed requests.
05
Expert evidence
Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.
Artifact subject
Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable
Analysis metadata
Audit model: codex
Analysis state: Complete
Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.