Building from Source¶
Prerequisites¶
Python 3.11+
uv (recommended) or pip
make(optional convenience)
Clone¶
git clone https://github.com/zscaler/zscaler-mcp-server.git
cd zscaler-mcp-server
With uv (recommended)¶
# Creates .venv and installs all extras
uv sync --all-extras
source .venv/bin/activate
zscaler-mcp --version
With pip (editable install)¶
pip install -e .
zscaler-mcp --version
With make¶
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¶
# Use uvx for quick runs from working dir
uvx zscaler-mcp
# Or the activated venv
zscaler-mcp
Building the Docker image¶
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.mdREADME.md(service summary table)docs/guides/toolsets.md
Refresh after adding / renaming / removing a tool:
make generate-docs # regenerate in place
make check-docs # exit 1 if stale (CI gate)
Lint and format¶
ruff check .
ruff format .
Tests¶
pytest tests/ --ignore=tests/e2e -v # unit + integration
pytest --run-e2e -v -s tests/e2e/ # E2E (requires creds)
Releasing¶
Releases are fully automated:
Push commits using Conventional Commits
semantic-release computes the next version from the commit messages
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.