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 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.md

  • README.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:

  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.