Illumio

by alexgoller

1 stars
296 downloads
Not rated
GitHub

About

Integrates with Illumio's Policy Compute Engine API to enable workload management, label operations, and traffic analysis for zero trust security environments.

Details

Author
alexgoller
Repository
alexgoller/illumio-mcp-server
GitHub stars
1
Downloads
296
License
Other
Categories
Cloud Service, Infrastructure, Security, Productivity, Developer Tools, Design, Workplace, AI, Communication, API, Other

- Full CRUD on workloads, labels, IP lists, services, and rulesets
- Traffic flow analysis with filtering by policy decision
- Automated ringfencing — app-to-app segmentation policies in one command
- Selective enforcement with configurable consumer flavors
- Infrastructure service identification via graph centrality analysis
- Deny rule management including override deny for emergencies
- Event monitoring with severity and type filters
- PCE health checks for connectivity and credentials verification

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Illumio
    Command (node, npx, python, etc.) uv
    Arguments
    • Argument 1 --directory
    • Argument 2 /path/to/illumio-mcp-server
    • Argument 3 run
    • Argument 4 illumio-mcp
    Environment
    • API_KEY api_key
    • PCE_HOST your-pce-host
    • PCE_PORT your-pce-port
    • API_SECRET api_secret
    • PCE_ORG_ID 1

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

You should run this using the uv command, which makes it easier to pass in environment variables and run it in the background.

export MCP_PUBLIC_URL=https://mcp.illumio.example
export MCP_OAUTH_ISSUER=https://login.microsoftonline.com/<tenant-id>/v2.0
export MCP_OAUTH_JWKS_URL=https://login.microsoftonline.com/<tenant-id>/discovery/v2.0/keys
export MCP_OAUTH_AUDIENCE=https://mcp.illumio.example
export MCP_OAUTH_REQUIRED_SCOPE=illumio-mcp.use   # default; override if needed
illumio-mcp-http --host 127.0.0.1 --port 8080

The server refuses to start without these env vars (unless MCP_DEV_INSECURE=1).

MCP clients discover the AS via the standard RFC 9728 endpoint:

GET /.well-known/oauth-protected-resource

Unauthenticated requests to /mcp return 401 with
WWW-Authenticate: Bearer resource_metadata="<URL>", which any spec-compliant
MCP client (Claude Desktop, ChatGPT, MCP Inspector) follows automatically to
run PKCE auth code flow against the configured AS.

MCP_DEV_INSECURE=1 illumio-mcp-http

The server logs a prominent warning. Do NOT use in production.

export MCP_PCE_MODE=shared
export PCE_HOST=https://your-pce.example.com
export PCE_PORT=8443
export PCE_ORG_ID=1
export API_KEY=your_pce_api_key_name
export API_SECRET=your_pce_api_key_secret

get-workloads

Retrieve workloads with optional filtering by name, hostname, IP, labels, and max results.

create-workload

Create an unmanaged workload with name, IP addresses, and labels.

update-workload

Update an existing workload's properties.

delete-workload

Remove a workload from PCE.

get-labels

Retrieve labels with optional filtering by key, value, and max results.

create-label

Create a new label with key-value pair.

update-label

Update an existing label.

delete-label

Remove a label.

get-rulesets

Get rulesets with optional filtering by name, description, and enabled status.

create-ruleset

Create a new ruleset with scopes.

update-ruleset

Update ruleset properties.

delete-ruleset

Remove a ruleset.

create-deny-rule

Create a deny rule (regular or override deny) in a ruleset.

update-deny-rule

Update an existing deny rule.

delete-deny-rule

Remove a deny rule.

get-iplists

Get IP lists with optional filtering by name, description, FQDN, and max results.

create-iplist

Create a new IP list.

update-iplist

Update an existing IP list.

delete-iplist

Remove an IP list.

get-services

Get services with optional filtering by name, port, protocol, and max results.

create-service

Create a new service definition.

update-service

Update an existing service.

delete-service

Remove a service.

get-traffic-flows

Get detailed traffic flow data with filtering by date range, source/destination, service, policy decision, and more.

get-traffic-flows-summary

Get aggregated traffic summaries grouped by app, env, port, and protocol.

create-ringfence

Automated app-to-app segmentation policy creation, analyzing traffic flows to create a ruleset with allow and deny rules.

identify-infrastructure-services

Discover which apps are infrastructure services by analyzing traffic patterns.

provision-policy

Provision pending draft changes to move them from draft to active state.

compare-draft-active

Compare draft vs active policy to preview what would change on provisioning.

enforcement-readiness

Assess whether an app is ready for enforcement, returning a readiness score with actionable recommendations.

ringfence-batch

Ringfence multiple apps at once with optional infrastructure service identification.

get-workload-enforcement-status

Get enforcement mode status across workloads, grouped by app and environment.

get-policy-coverage-report

Generate a policy coverage report for an app showing what traffic is covered by existing rules.

find-unmanaged-traffic

Find traffic involving unmanaged workloads or IP addresses.

detect-lateral-movement-paths

Detect potential lateral movement paths by analyzing app-to-app traffic patterns.

compliance-check

Check policy compliance against frameworks and returns a compliance score with per-check findings.

get-events

Get PCE events with optional filtering by event type, severity, status, and result limits.

check-pce-connection

Verify PCE connectivity and credentials.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "illumio": {
            "env": {
                "API_KEY": "api_key",
                "PCE_HOST": "your-pce-host",
                "PCE_PORT": "your-pce-port",
                "API_SECRET": "api_secret",
                "PCE_ORG_ID": "1"
            },
            "args": [
                "--directory",
                "/path/to/illumio-mcp-server",
                "run",
                "illumio-mcp"
            ],
            "command": "uv"
        }
    }
}

Linux

{
    "env": {
        "API_KEY": "api_key",
        "PCE_HOST": "your-pce-host",
        "PCE_PORT": "your-pce-port",
        "API_SECRET": "api_secret",
        "PCE_ORG_ID": "1"
    },
    "args": [
        "--directory",
        "/path/to/illumio-mcp-server",
        "run",
        "illumio-mcp"
    ],
    "command": "uv"
}

Macos

{
    "env": {
        "API_KEY": "api_key",
        "PCE_HOST": "your-pce-host",
        "PCE_PORT": "your-pce-port",
        "API_SECRET": "api_secret",
        "PCE_ORG_ID": "1"
    },
    "args": [
        "--directory",
        "/path/to/illumio-mcp-server",
        "run",
        "illumio-mcp"
    ],
    "command": "uv"
}

Windows

{
    "env": {
        "API_KEY": "api_key",
        "PCE_HOST": "your-pce-host",
        "PCE_PORT": "your-pce-port",
        "API_SECRET": "api_secret",
        "PCE_ORG_ID": "1"
    },
    "args": [
        "--directory",
        "/path/to/illumio-mcp-server",
        "run",
        "illumio-mcp"
    ],
    "command": "uv"
}

Illumio MCP Server

A Model Context Protocol (MCP) server that provides an interface to interact with Illumio PCE (Policy Compute Engine). This server enables programmatic access to Illumio workload management, label operations, traffic flow analysis, automated ringfencing, and infrastructure service identification.

<a href="https://glama.ai/mcp/servers/xhqzxlo9iy">
Illumio Server MCP server
</a>

What can it do?

Use conversational AI to talk to your PCE:

- Full CRUD on workloads, labels, IP lists, services, and rulesets
- Traffic analysis — query flows, get summaries, filter by policy decision
- Automated ringfencing — analyze traffic and create app-to-app segmentation policies with one command
- Selective enforcement — add deny rules for apps in selective mode with configurable consumer flavors
- Infrastructure service identification — discover which apps are infrastructure services using graph centrality analysis, so you know what to policy first
- Deny rule management — create, update, and delete deny rules (including override deny for emergencies)
- Event monitoring — query PCE events with severity and type filters
- PCE health checks — verify connectivity and credentials

Prerequisites

- Python 3.8+
- Access to an Illumio PCE instance
- Valid API credentials for the PCE

Installation

1. Clone the repository:

git clone https://github.com/alexgoller/illumio-mcp-server.git
cd illumio-mcp-server

2. Install dependencies:

uv sync

Configuration

You should run this using the uv command, which makes it easier to pass in environment variables and run it in the background.

Using uv and Claude Desktop

On MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json

Add the following to the custom_settings section:

"mcpServers": {
    "illumio-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/illumio-mcp-server",
        "run",
        "illumio-mcp"
      ],
      "env": {
        "PCE_HOST": "your-pce-host",
        "PCE_PORT": "your-pce-port",
        "PCE_ORG_ID": "1",
        "API_KEY": "api_key",
        "API_SECRET": "api_secret"
      }
    }
  }
}

HTTP transport with OAuth Resource Server (Phase 3a)

The server runs over HTTP using the MCP Streamable HTTP transport (spec rev
2025-03-26) and validates OAuth 2.1 bearer tokens issued by your IdP. This is
Phase 3a: identity is enforced; per-user PCE keys land in Phase 3b.

Running with auth (production-shaped)

export MCP_PUBLIC_URL=https://mcp.illumio.example
export MCP_OAUTH_ISSUER=https://login.microsoftonline.com/<tenant-id>/v2.0
export MCP_OAUTH_JWKS_URL=https://login.microsoftonline.com/<tenant-id>/discovery/v2.0/keys
export MCP_OAUTH_AUDIENCE=https://mcp.illumio.example
export MCP_OAUTH_REQUIRED_SCOPE=illumio-mcp.use   # default; override if needed
illumio-mcp-http --host 127.0.0.1 --port 8080

The server refuses to start without these env vars (unless MCP_DEV_INSECURE=1).

MCP clients discover the AS via the standard RFC 9728 endpoint:

GET /.well-known/oauth-protected-resource

Unauthenticated requests to /mcp return 401 with
WWW-Authenticate: Bearer resource_metadata="<URL>", which any spec-compliant
MCP client (Claude Desktop, ChatGPT, MCP Inspector) follows automatically to
run PKCE auth code flow against the configured AS.

Running without auth (dev only)

MCP_DEV_INSECURE=1 illumio-mcp-http

The server logs a prominent warning. Do NOT use in production.

Health endpoints (always unauthenticated)

- GET /healthz — liveness
- GET /readyz — readiness (Phase 3a returns the same as healthz; Phase 3b/c will add PCE + JWKS reachability)

Two PCE modes (Phase 3b vs Phase 3e)

The HTTP server supports two ways to source PCE credentials, selected via
MCP_PCE_MODE:

| Mode | MCP_PCE_MODE | PCE creds | Onboarding | PCE-side audit |
|---|---|---|---|---|
| Per-user (default) | per_user | One PCE API key per authenticated user, encrypted in keystore | User registers via /setup page or register-pce-credentials tool | PCE logs show the real human via per-user API key |
| Shared | shared | One PCE service-account key from env (same as stdio) | None — works immediately for any authenticated user | PCE logs show the service account; the MCP audit log is the source of truth for "who did what" |

Choose per-user when:
- You want PCE-side audit attribution to identify the human
- Users are happy to provide their own PCE API key once
- You can tolerate the per-user PCE key sprawl (PCE has limits)

Choose shared when:
- The PCE limits API keys per user too aggressively for per-user mode
- You want zero-friction onboarding (no /setup step)
- You're OK relying on the MCP audit log alone for human-level attribution
- You operate the PCE service account yourself and rotate it on a schedule

In shared mode, /setup is not mounted, the credential-management tools
(register-pce-credentials, delete-pce-credentials) refuse with a friendly
error, and MCP_KEK is not required. SSO + JWT + role-based authz + audit
log + confirm tokens all still apply identically.

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.