Add venv / PEP 668 / which-python guidance for pip install "mcp[cli]" in Module 20 (and M14/M15 local installs)
#20
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The MCP lab's only install is
pip install "mcp[cli]"with no venv. On modern Debian/Ubuntu and Homebrew Python, a globalpip installaborts with "externally-managed-environment" (PEP 668), and pip/venv/packaging are never taught. Worse, the MCP config launches"command": "python", but pip may have installedmcpunder a different interpreter, so the server crashes on import and the tool just reports "not connected" — the exact knowledge the persona lacks. M14's and M15's first localpip installhit the same PEP 668 wall.Evidence
modules/20-mcp-servers-giving-the-ai-hands/README.md:pip install "mcp[cli]"(~lines 242/294); "(Usepython3or a venv's python if that's what runs the SDK)" (~line 305); troubleshooting "the SDK not installed for that interpreter" (~line 316).M14 (~line 223) and M15 (~line 220): same bare local installs.
Why it matters
The lab's first step fails on common modern setups; Python/pip is the course's own chosen stack (M13-16), so adding guidance is not vendor creep — it serves the labs-must-work and honesty promises.
Proposed change
Add a short "Python packages and which python" sidebar:
pipx/--break-system-packagesfor PEP 668), install withpython3 -m pip install "mcp[cli]".python(not an activated venv), point the config"command"at the venv's ABSOLUTE python path (e.g.~/…/venv/bin/python) — activating a venv alone does not fix the "not connected" failure.python3 -c "import mcp"(using the same interpreter the config will launch).pip install.Acceptance criteria
"command"is pointed at the exact interpreter that hasmcpinstalled.Affected files
modules/20-mcp-servers-giving-the-ai-hands/README.md,modules/14-continuous-integration/README.md,modules/15-security-scanning/README.mdReferences
Source finding F34 (realVotes 3/3).
Filed from an adversarial multi-agent course review (217 raw findings → 54 adversarially-verified survivors). Scoped for manual review; intentionally not auto-assigned to an agent.