MCP Claude Code
by SDGLBL
Verified
.PHONY: install test lint clean dev venv
# Virtual environment detection and activation
VENV_NAME ?= .venv
# Detect OS for proper path handling
ifeq ($(OS),Windows_NT)
VENV_ACTIVATE = $(VENV_NAME)\Scripts\activate
VENV_TEST = $(VENV_NAME)\Scripts\pytest.exe
VENV_PYTHON = $(VENV_NAME)\Scripts\python.exe
RM_CMD = rmdir /s /q
CP = copy
SEP = \\
ACTIVATE_CMD = call
else
VENV_ACTIVATE = $(VENV_NAME)/bin/activate
VENV_TEST = $(VENV_NAME)/bin/pytest
VENV_PYTHON = $(VENV_NAME)/bin/python
RM_CMD = rm -rf
CP = cp
SEP = /
ACTIVATE_CMD = .
endif
# Python interpreter
PYTHON = python
# Path to package manager (uv or pip)
# Check if uv is available, otherwise use plain pip
UV := $(shell command -v uv 2> /dev/null)
ifeq ($(UV),)
PACKAGE_CMD = pip install
else
PACKAGE_CMD = $(UV) pip install
endif
# Project paths
SRC_DIR = mcp_claude_code
TEST_DIR = tests
# Create virtual environment
venv:
$(PYTHON) -m venv $(VENV_NAME)
ifeq ($(OS),Windows_NT)
@echo "Virtual environment created. Run '$(VENV_ACTIVATE)' to activate it."
else
@echo "Virtual environment created. Run 'source $(VENV_ACTIVATE)' to activate it."
endif
install: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && $(PACKAGE_CMD) -e "."
uninstall: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && $(PYTHON) -m pip uninstall -y mcp-claude-code
reinstall: uninstall install
install-dev: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && $(PACKAGE_CMD) -e ".[dev]"
install-test: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && $(PACKAGE_CMD) -e ".[test]"
test: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && python -m pytest $(TEST_DIR) --disable-warnings
test-cov: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && python -m pytest --cov=$(SRC_DIR) $(TEST_DIR)
lint: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && ruff check $(SRC_DIR) $(TEST_DIR)
format: venv-check
$(ACTIVATE_CMD) $(VENV_ACTIVATE) && ruff format $(SRC_DIR) $(TEST_DIR)
clean:
$(RM_CMD) .pytest_cache htmlcov .coverage 2>nul || true
ifeq ($(OS),Windows_NT)
for /d /r . %d in (__pycache__) do @if exist "%d" rd /s /q "%d"
else
find . -name "__pycache__" -type d -exec rm -rf {} +
endif
# Helper to check for virtual environment
venv-check:
@if [ ! -f $(VENV_ACTIVATE) ]; then \
echo "Virtual environment not found. Creating one..." ; \
$(MAKE) venv ; \
fi
# Default target
all: test