Skip to main content
Glama
zscaler-aiguard-control-plane-mcp

zscaler-aiguard-control-plane-mcp

by hshen-ai

Zscaler AI Guard Control Plane MCP

An unofficial Model Context Protocol (MCP) server that provides AI agents (Gemini, Claude, Cursor) with programmatic, REST-based access to the Zscaler AI Guard (Zseclipse) ecosystem.

This MCP server allows your AI assistants to autonomously list, create, update, and delete Detection Policies, Match Rules, LLM Applications, and LLM Providers.

Overview

The server wraps the Zscaler AI Guard Public API (https://api.zsapi.net/aiguard/v1). It handles secure OAuth 2.0 client_credentials authentication natively, meaning your AI agent simply calls high-level tools like create_policy or list_llm_apps, and the server manages the Bearer token lifecycle and REST payloads.


Related MCP server: zrok-mcp

Prerequisites & Authentication

To use this MCP server, you must provide three pieces of information from your Zscaler tenant.

How to obtain your API Credentials:

  1. Log in to your Zscaler AI Guard (or ZIdentity) administration portal.

  2. Navigate to the API Clients page.

  3. Click Add API Client (or generate a new credential).

  4. Ensure the client is granted the necessary scopes (all:read, all:write, all:delete).

  5. Copy the Client Secret immediately, as it is only shown once at creation.

Environment Variables

The MCP server reads these credentials directly from your environment variables:

  • ZSCALER_CLIENT_ID: The OAuth Client ID generated in Step 3.

  • ZSCALER_CLIENT_SECRET: The OAuth Client Secret generated in Step 3.

  • ZSCALER_VANITY_DOMAIN: Your Zscaler organization's login domain (e.g., if you log in at https://mycompany.zslogin.net, your vanity domain is mycompany).


Available MCP Tools

This server maps directly to the Zscaler AI Guard API Reference. All tools expect and return standard JSON payloads.

Detection Policies

Manage AI guard detection policies that inspect and act on prompts and responses.

  • list_policy_summaries: Returns a lightweight list of all detection policies (IDs, names, versions, timestamps).

  • list_policies: Returns all detection policies with full detector configuration.

  • get_policy: Fetch a specific policy by its numeric ID.

  • get_policy_by_name: Fetch a specific policy by its exact name.

  • create_policy: Creates a new detection policy (requires JSON payload).

  • update_policy: Replaces a detection policy completely.

  • enable_policy_controls: Partially updates the enabled/disabled state of individual policy controls.

  • delete_policy: Permanently deletes a detection policy.

  • check_policy_references: Checks if a policy is actively referenced by match rules or LLM applications.

Detection Policy Match Rules

Manage match rules that define the conditions under which a detection policy triggers.

  • list_match_rules: Returns all match rules for the tenant.

  • get_match_rule / get_match_rule_by_name

  • create_match_rule

  • update_match_rule

  • delete_match_rule

LLM Applications

Manage the LLM applications registered with AI Guard.

  • list_llm_applications

  • get_llm_application / get_llm_application_by_name

  • create_llm_application

  • update_llm_application

  • delete_llm_application

  • check_application_references

LLM Providers

Manage the LLM providers configured for the tenant.

  • list_llm_providers

  • get_llm_provider / get_llm_provider_by_name

  • create_llm_provider

  • update_llm_provider

  • delete_llm_provider

  • check_provider_references


Installation & Usage

1. Gemini CLI (Native Integration)

The fastest way to install this MCP server into your Gemini CLI is to use the native command.

First, clone this repository:

git clone https://github.com/hshen-ai/zscaler-aiguard-control-plane-mcp.git
cd zscaler-aiguard-control-plane-mcp

Then, run the simplified MCP installation command (ensure you replace the placeholder credentials with your actual ZIdentity keys):

gemini mcp add zscaler-aiguard-control-plane-mcp --env ZSCALER_CLIENT_ID=your_client_id --env ZSCALER_CLIENT_SECRET=your_client_secret --env ZSCALER_VANITY_DOMAIN=your_vanity_domain -- uv run --manifest-path ./pyproject.toml fastmcp run ./server.py

2. Claude Desktop / Claude Code

Add the server to your claude_desktop_config.json or .claude/mcp-servers.json:

{ "mcpServers": { "zscaler-aiguard-control-plane-mcp": { "command": "uv", "args": ["run", "fastmcp", "run", "/path/to/Zscaler-AI-Guard-Control-Plane-MCP/server.py"], "env": { "ZSCALER_CLIENT_ID": "...", "ZSCALER_CLIENT_SECRET": "...", "ZSCALER_VANITY_DOMAIN": "..." } } } }

3. Cursor IDE

In Cursor Settings > Features > MCP, add a new server:

  • Name: zscaler-aiguard-control-plane-mcp

  • Type: command

  • Command: uv run fastmcp run /path/to/Zscaler-AI-Guard-Control-Plane-MCP/server.py

Available Tools

18 tools
check_application_referencesA

Check if an LLM application is referenced by any active match rules.

Inputs: app_id (required). Returns: object

create_policyB

Creates a new detection policy. Provide the full JSON configuration payload.

Inputs: payload (required). Returns: object

delete_llm_providerA

Permanently deletes an LLM provider. Set delete_references=True to cascade-delete referencing LLM applications.

Inputs: provider_id (required), delete_references. Returns: object

delete_policyA

Permanently deletes a detection policy. Set delete_references=True to cascade-delete all referencing match rules and LLM assignments.

Inputs: policy_id (required), delete_references. Returns: object

get_llm_application_by_nameA

Fetch a specific LLM application by its exact name.

Inputs: app_name (required). Returns: object

get_llm_providerB

Fetch a specific LLM provider by its numeric ID.

Inputs: provider_id (required). Returns: object

get_llm_provider_by_nameB

Fetch a specific LLM provider by its exact name.

Inputs: provider_name (required). Returns: object

get_match_ruleB

Fetch a specific match rule by its numeric ID.

Inputs: rule_id (required). Returns: object

get_policyA

Fetch a specific detection policy by its numeric ID.

Inputs: policy_id (required). Returns: object

list_llm_applicationsB

Returns all LLM applications for the tenant.

Inputs: no named parameters. Returns: object

list_llm_providersB

Returns all LLM providers for the tenant.

Inputs: no named parameters. Returns: object

list_match_rulesB

Returns all match rules for the tenant.

Inputs: no named parameters. Returns: object

list_policiesA

Returns all detection policies with full detector configuration.

Inputs: no named parameters. Returns: object

list_policy_summariesA

Returns a lightweight list of all detection policies (IDs, names, versions, timestamps only).

Inputs: no named parameters. Returns: object

update_llm_applicationA

Replaces an LLM application completely. Provide the app ID and the full JSON payload.

Inputs: app_id (required), payload (required). Returns: object

update_llm_providerB

Replaces an LLM provider completely. Provide the provider ID and the full JSON payload.

Inputs: payload (required), provider_id (required). Returns: object

update_match_ruleA

Replaces a match rule completely. Provide the rule ID and the full JSON payload.

Inputs: payload (required), rule_id (required). Returns: object

update_policyA

Replaces a detection policy completely. Provide the policy ID and the full JSON payload.

Inputs: payload (required), policy_id (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 18 tools

    Disambiguation4/5

    Tools are clearly distinguished by resource type and action (e.g., list_llm_providers vs. get_llm_provider). The only potential ambiguity is between list_policies and list_policy_summaries, but descriptions clarify their differences.

    Naming Consistency5/5

    All tool names follow the verb_noun pattern with snake_case, and prefixes like list_, get_, update_, delete_, create_, and check_ are used consistently across resources.

    Tool Count4/5

    18 tools is reasonable for managing multiple resource types (LLM providers, applications, match rules, policies), though it is slightly high. The count is within the typical well-scoped range.

    Completeness2/5

    Missing create operations for LLM applications, providers, and match rules, and missing delete for applications and match rules. This creates workflow gaps where new resources cannot be created from scratch via the MCP.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      Connects AI agents with the CrowdStrike Falcon platform to enable intelligent security analysis, providing programmatic access to detections, incidents, threat intelligence, vulnerabilities, and other security capabilities for advanced security operations and automation.
      281
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to manage zrok tunnels, shares, and access programmatically through environment management, share creation/deletion/listing, and access control actions.
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents and users to interact with the Britive platform for dynamic access, query configurations, reporting, and access activity.
      1
      -
    • A
      license
      B
      quality
      C
      maintenance
      Enables AI agents to directly manage Beyond Identity resources such as identities, groups, applications, SSO configurations, and credentials via natural language tool calls.
      36
      10 npm
      Apache 2.0