Skip to main content
Glama

mcp-server-tree-sitter

by wrale
MIT License
175
  • Apple
  • Linux
Makefile7.54 kB
# Makefile for mcp-server-tree-sitter # Uses uv as the package manager # Package information PACKAGE := mcp_server_tree_sitter PACKAGE_PATH := src/$(PACKAGE) # Environment variables PYTHONPATH ?= $(shell pwd)/src export PYTHONPATH # Installation method (uv or uvx) INSTALL_METHOD ?= uv # uv commands UV := uv # Default target .PHONY: all help help: show-help all: install # Installation targets .PHONY: install install: $(UV) pip install -e . .PHONY: install-dev install-dev: $(UV) pip install -e ".[dev]" .PHONY: install-all install-all: $(UV) pip install -e ".[dev]" .PHONY: install-global install-global: python -m pip install -e ".[dev]" # Pre-commit preparation .PHONY: prepare prepare: clean format lint test-ci ensure-diagnostic-dir verify # CI-like test target that better simulates CI environment .PHONY: test-ci test-ci: # Use CI=true to help tests detect when they're in a CI-like environment CI=true $(MAKE) test-with-args CI=true $(UV) run pytest tests/test_diagnostics/ -v # Testing targets .PHONY: test test: # Regular test target $(UV) run pytest # Run tests with explicit cli args to catch arg parsing conflicts .PHONY: test-with-args test-with-args: $(UV) run pytest tests -- tests .PHONY: test-diagnostics test-diagnostics: ensure-diagnostic-dir $(UV) run pytest tests/test_diagnostics/ -v .PHONY: test-diagnostics-ci test-diagnostics-ci: ensure-diagnostic-dir $(UV) run pytest tests/test_diagnostics/ -v || echo "Diagnostic tests completed with issues - see diagnostic_results directory" .PHONY: test-coverage test-coverage: $(UV) run pytest --cov=$(PACKAGE) --cov-report=term --cov-report=html # Matrix testing support .PHONY: test-matrix test-matrix: @echo "Running tests with $(INSTALL_METHOD) installation method" ifeq ($(INSTALL_METHOD),uv) $(MAKE) install-dev $(MAKE) test-all else ifeq ($(INSTALL_METHOD),uvx) $(MAKE) install-global $(MAKE) test-all else @echo "Unknown installation method: $(INSTALL_METHOD)" @echo "Supported methods: uv, uvx" @exit 1 endif # Unified test target .PHONY: test-all test-all: test test-diagnostics # Verification targets .PHONY: verify verify: build verify-wheel .PHONY: verify-wheel verify-wheel: @echo "Verifying the built wheel..." @echo "Creating temporary virtual environment for verification..." rm -rf .verify_venv 2>/dev/null || true $(shell command -v python3 || command -v python) -m venv .verify_venv .verify_venv/bin/pip install dist/*.whl .verify_venv/bin/mcp-server-tree-sitter --help || true rm -rf .verify_venv .PHONY: verify-global verify-global: build @echo "Verifying global installation..." @echo "Creating temporary virtual environment for verification..." rm -rf .verify_venv 2>/dev/null || true $(shell command -v python3 || command -v python) -m venv .verify_venv .verify_venv/bin/pip install dist/*.whl .verify_venv/bin/mcp-server-tree-sitter --help || true rm -rf .verify_venv # Linting and formatting targets .PHONY: lint lint: $(UV) run mypy . $(UV) run ruff check . .PHONY: mypy mypy: $(UV) run mypy . .PHONY: format format: $(UV) run ruff format . $(UV) run ruff check --fix . # Cleaning targets .PHONY: clean clean: rm -rf build/ dist/ *.egg-info/ .pytest_cache/ htmlcov/ .coverage .ruff_cache diagnostic_results .verify_venv # Use rmdir with -p to handle non-empty directories more gracefully find .mypy_cache -type d -exec rmdir -p {} \; 2>/dev/null || true rm -rf .mypy_cache 2>/dev/null || true find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true rm -f tests/issue_tests/*.json 2>/dev/null || true rm -f tests/issue_tests/results/*.json 2>/dev/null || true # Diagnostic directory handling .PHONY: ensure-diagnostic-dir ensure-diagnostic-dir: @mkdir -p diagnostic_results @if [ -z "$$(ls -A diagnostic_results 2>/dev/null)" ]; then \ echo '{"info": "No diagnostic results generated"}' > diagnostic_results/placeholder.json; \ fi # Building and packaging .PHONY: build build: $(UV) run python -m build # Release targets .PHONY: pre-release pre-release: clean lint test-all build verify .PHONY: release-local release-local: pre-release @echo "Local release process completed. Run 'make publish' to publish to PyPI." @echo "NOTE: Publishing to PyPI requires proper credentials and should be done via CI." .PHONY: publish publish: @echo "This target would publish to PyPI, but is intended to be run via CI." @echo "For manual publishing, use: python -m twine upload dist/*" # CI integration .PHONY: ci ci: clean install-dev lint test-all build verify # Run the server # ARGS can be passed like: make run ARGS="--help" .PHONY: run run: $(UV) run python -m $(PACKAGE) $(ARGS) # MCP specific targets # ARGS can be passed like: make mcp-dev ARGS="--help" .PHONY: mcp-dev mcp-dev: $(UV) run mcp dev $(PACKAGE).server $(ARGS) .PHONY: mcp-run mcp-run: $(UV) run mcp run $(PACKAGE).server $(ARGS) .PHONY: mcp-install mcp-install: $(UV) run mcp install $(PACKAGE).server:mcp --name "tree_sitter" $(ARGS) # Help target .PHONY: show-help show-help: @echo "Available targets:" @echo " help : Show this help message (default target)" @echo " all : Install the package" @echo " install : Install the package" @echo " install-dev : Install the package with development dependencies" @echo " install-all : Install with all dependencies" @echo " install-global : Install the package globally (system-wide)" @echo " prepare : Run pre-commit checks (format, lint, test, verify)" @echo " test : Run normal tests" @echo " test-with-args : Run tests with extra arguments to catch CLI parsing issues" @echo " test-ci : Run tests in a CI-like environment (catches more issues)" @echo " test-diagnostics : Run pytest-based diagnostic tests" @echo " test-diagnostics-ci : Run diagnostic tests in CI mode (won't fail the build)" @echo " test-coverage : Run tests with coverage report" @echo " test-matrix : Run tests with different installation methods (set INSTALL_METHOD=uv|uvx)" @echo " test-all : Run both normal tests and diagnostic tests" @echo " verify : Verify the built package works correctly" @echo " verify-wheel : Verify the built wheel by installing and running a basic check" @echo " verify-global : Verify global installation (similar to CI verify-uvx job)" @echo " clean : Clean build artifacts and test results" @echo " ensure-diagnostic-dir : Create diagnostic results directory if it doesn't exist" @echo " lint : Run linting checks" @echo " format : Format code using ruff" @echo " build : Build distribution packages" @echo " pre-release : Run all pre-release checks (clean, lint, test, build, verify)" @echo " release-local : Perform a complete local release process" @echo " publish : Placeholder for publishing to PyPI (intended for CI use)" @echo " ci : Run the CI workflow steps locally" @echo " run : Run the server directly (use ARGS=\"--help\" to pass arguments)" @echo " mcp-dev : Run the server with MCP Inspector (use ARGS=\"--help\" to pass arguments)" @echo " mcp-run : Run the server with MCP (use ARGS=\"--help\" to pass arguments)" @echo " mcp-install : Install the server in Claude Desktop"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wrale/mcp-server-tree-sitter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server