Replace direct python path in .mcp.json with run.sh wrapper scripts
that automatically locate the venv in cache or local directory.
Problem: .venv symlinks are gitignored, causing them to be wiped on
every git operation. The SessionStart hook should recreate them but
this was unreliable, leading to repeated MCP server failures.
Solution: run.sh scripts that:
- First check ~/.cache/claude-mcp-venvs/leo-claude-mktplace/{server}/.venv
- Fallback to local .venv if exists
- Exit with helpful error if neither found
This eliminates dependency on symlinks entirely - the scripts are
tracked in git and will always be present after clone/pull/update.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
18 lines
528 B
Bash
Executable File
18 lines
528 B
Bash
Executable File
#!/bin/bash
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
CACHE_VENV="$HOME/.cache/claude-mcp-venvs/leo-claude-mktplace/contract-validator/.venv"
|
|
LOCAL_VENV="$SCRIPT_DIR/.venv"
|
|
|
|
if [[ -f "$CACHE_VENV/bin/python" ]]; then
|
|
PYTHON="$CACHE_VENV/bin/python"
|
|
elif [[ -f "$LOCAL_VENV/bin/python" ]]; then
|
|
PYTHON="$LOCAL_VENV/bin/python"
|
|
else
|
|
echo "ERROR: No venv found. Run: ./scripts/setup-venvs.sh" >&2
|
|
exit 1
|
|
fi
|
|
|
|
cd "$SCRIPT_DIR"
|
|
export PYTHONPATH="$SCRIPT_DIR"
|
|
exec "$PYTHON" -m mcp_server.server "$@"
|