.. _building-from-source: Building from Source ==================== Prerequisites ------------- - Python 3.11+ - `uv `__ (recommended) or pip - ``make`` (optional convenience) Clone ----- .. code-block:: bash git clone https://github.com/zscaler/zscaler-mcp-server.git cd zscaler-mcp-server With ``uv`` (recommended) ------------------------- .. code-block:: bash # Creates .venv and installs all extras uv sync --all-extras source .venv/bin/activate zscaler-mcp --version With pip (editable install) --------------------------- .. code-block:: bash pip install -e . zscaler-mcp --version With make --------- .. code-block:: bash make install-dev # install in dev mode with all extras make sync-dev-deps # re-sync dev dependencies make clean # clean build artifacts Running locally --------------- .. code-block:: bash # Use uvx for quick runs from working dir uvx zscaler-mcp # Or the activated venv zscaler-mcp Building the Docker image ------------------------- .. code-block:: bash make docker-build make docker-run # stdio mode make docker-run-http # HTTP + auth mode Auto-generated docs ------------------- Three Markdown files have auto-generated regions sourced from the live tool inventory: - ``docs/guides/supported-tools.md`` - ``README.md`` (service summary table) - ``docs/guides/toolsets.md`` Refresh after adding / renaming / removing a tool: .. code-block:: bash make generate-docs # regenerate in place make check-docs # exit 1 if stale (CI gate) Lint and format --------------- .. code-block:: bash ruff check . ruff format . Tests ----- .. code-block:: bash pytest tests/ --ignore=tests/e2e -v # unit + integration pytest --run-e2e -v -s tests/e2e/ # E2E (requires creds) Releasing --------- Releases are fully automated: 1. Push commits using `Conventional Commits `__ 2. semantic-release computes the next version from the commit messages 3. A new tag, GitHub release, and PyPI publish happen via the release workflow Manual version bumps are not needed. See ``.releaserc.json`` for the configuration.