Prisma Sdwan Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Prisma Sdwan Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Disclaimer: This project is a personal work developed independently for educational and open-source purposes. It is not an official product of Palo Alto Networks, Inc. or any of its affiliates. All trademarks, service marks, and company names are the property of their respective owners.
A robust Model Context Protocol (MCP) server for Palo Alto Networks Prisma SD-WAN.
This server bridges the gap between AI agents (like Claude, Gemini, or custom LLMs) and your Prisma SD-WAN fabric. It enables secure, read-only access to operational data, allowing agents to perform tasks like inventory audits, health checks, topology analysis, and policy verification through natural language.
The Prisma SD-WAN MCP Server abstracts the complexity of the Prisma SASE API into clean, semantic tools that AI models can understand and call autonomously. Instead of navigating REST endpoints, pagination, and token management, your AI agent simply asks for what it needs.
Core Design Principles:
generate_site_config, which produces a local YAML file. No changes are pushed to your Prisma SD-WAN tenant.| Category | Capabilities |
|---|---|
| Site Management | List all SD-WAN sites, retrieve individual site details and configurations |
| Element Inventory | View ION devices, their status, hardware details, and software versions |
| Network Topology | Retrieve the full SD-WAN topology graph showing site-to-site connectivity |
| Interfaces | Inspect LAN and WAN interfaces per site and element |
| Routing | Query BGP peer configurations and static routes per element |
| Policy & Security | View policy set definitions and security zone assignments |
| Events & Alarms | Query recent events and retrieve active alarms filtered by severity |
| Applications | Browse application definitions used across the fabric |
| Config Generation | Generate validated site configuration YAML files from template data |
git clone <repo-url>
cd prisma-sdwan
pip install fastmcp prisma-sase python-dotenv pyyaml jsonschemadocker build -t prisma-sdwan-mcp .| Variable | Description | Required |
|---|---|---|
PAN_CLIENT_ID | Service Account Client ID (e.g., [email protected]) | Yes |
PAN_CLIENT_SECRET | Service Account Client Secret | Yes |
PAN_TSG_ID | Tenant Service Group ID | Yes |
PAN_REGION | API region: americas or europe (default: americas) | No |
Create a .env file in the prisma-sdwan/ directory:
[email protected]
PAN_CLIENT_SECRET=abc123-your-secret-here
PAN_TSG_ID=1234567890
PAN_REGION=americasSecurity Note: Never commit your.envfile to version control. It's already included in.gitignore.
The server supports three transport modes depending on how your AI client connects.
Best for local integrations like Claude Desktop or CLI-based MCP clients.
python prisma_sdwan_mcp_server.py --transport stdioBest for remote or web-based AI agents.
python prisma_sdwan_mcp_server.py --transport sse --host 0.0.0.0 --port 8000python prisma_sdwan_mcp_server.py --transport streamable-http --host 0.0.0.0 --port 8000# Stdio mode (default)
docker run -i --rm \
-e [email protected] \
-e PAN_CLIENT_SECRET=your-secret \
-e PAN_TSG_ID=1234567890 \
prisma-sdwan-mcp --transport stdio
# SSE mode with port mapping
docker run -d --rm \
-p 8000:8000 \
-e [email protected] \
-e PAN_CLIENT_SECRET=your-secret \
-e PAN_TSG_ID=1234567890 \
prisma-sdwan-mcp --transport sse --host 0.0.0.0 --port 8000Add the following to your Claude Desktop MCP configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"prisma-sdwan": {
"command": "python",
"args": [
"/absolute/path/to/prisma_sdwan_mcp_server.py",
"--transport",
"stdio"
],
"env": {
"PAN_CLIENT_ID": "[email protected]",
"PAN_CLIENT_SECRET": "your-secret",
"PAN_TSG_ID": "1234567890"
}
}
}
}With Docker:
{
"mcpServers": {
"prisma-sdwan": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "PAN_CLIENT_ID",
"-e", "PAN_CLIENT_SECRET",
"-e", "PAN_TSG_ID",
"prisma-sdwan-mcp",
"--transport", "stdio"
],
"env": {
"PAN_CLIENT_ID": "[email protected]",
"PAN_CLIENT_SECRET": "your-secret",
"PAN_TSG_ID": "1234567890"
}
}
}
}Add to your settings.json:
{
"mcpServers": {
"prisma-sdwan": {
"command": "python",
"args": [
"/absolute/path/to/prisma_sdwan_mcp_server.py",
"--transport",
"stdio"
],
"env": {
"PAN_CLIENT_ID": "[email protected]",
"PAN_CLIENT_SECRET": "your-secret",
"PAN_TSG_ID": "1234567890"
}
}
}
}Any MCP-compatible client can connect using the stdio transport. Point it at prisma_sdwan_mcp_server.py with the --transport stdio argument and supply the required environment variables.
All tools return JSON-formatted data optimized for LLM consumption.
| Tool Name | Description | Parameters |
|---|---|---|
get_sites | List all SD-WAN sites or retrieve a specific site by ID | site_id (optional) |
get_elements | List all ION device elements or a specific element | element_id (optional) |
get_machines | Hardware inventory: chassis serial numbers, models, and machine details | machine_id (optional) |
get_interfaces | LAN and WAN interfaces for a given element at a site | site_id, element_id |
get_wan_interfaces | WAN interface configurations for a site | site_id |
get_policy_sets | SD-WAN policy set definitions (path, QoS, NAT rules) | None |
get_security_zones | Security zone definitions across the fabric | None |
get_bgp_peers | BGP peer configurations for a specific element at a site | site_id, element_id |
get_static_routes | Static route table for an element | site_id, element_id |
get_element_status | Operational status and health of an ION element | element_id |
get_software_status | Software version, upgrade state, and image details | element_id |
get_app_defs | Application definitions used in policy and reporting | None |
get_topology | Full SD-WAN anynet topology graph (nodes, links, and status) | None |
get_events | Recent events across all severity levels (critical, major, minor) | limit (optional, default: 20) |
get_alarms | Active major and critical alarms | limit (optional, default: 20) |
generate_site_config | Generate a validated site configuration YAML file | site_id, elements, filename (optional), overwrite (optional) |
Once connected, try asking your AI agent:
┌──────────────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ AI Agent │ MCP │ Prisma SD-WAN MCP │ REST │ Prisma SASE API │
│ (Claude, etc.) │◄──────►│ Server │◄──────►│ api.sase.palo... │
│ │ stdio/ │ prisma_sdwan_mcp_ │ HTTPS │ │
│ │ SSE │ server.py │ │ │
└──────────────────┘ └──────────────────────┘ └─────────────────────┘The server acts as a translation layer:
get_sites)Key Implementation Details:
prisma_sdwan_mcp_server.pyprisma_sase SDK with automatic token refreshschema.json) for generated YAML files| Problem | Likely Cause | Fix |
|---|---|---|
Connection refused or timeout | No internet connectivity to Prisma SASE API | Verify you can reach api.sase.paloaltonetworks.com from your host |
Authentication failed | Incorrect credentials | Double-check PAN_CLIENT_ID, PAN_CLIENT_SECRET, and PAN_TSG_ID |
403 Forbidden | Insufficient permissions | Ensure the service account role includes SD-WAN read access |
Token expired errors | Shouldn't happen (auto-refresh) | If persistent, restart the server. Tokens are refreshed every 15 minutes automatically |
ModuleNotFoundError: prisma_sase | Missing dependency | Run pip install prisma-sase |
| Empty responses | Tenant has no data | Verify your TSG ID matches a tenant with active SD-WAN sites |
Region mismatch | Wrong API region | Set PAN_REGION=europe if your tenant is in the EU region |
Server logs are written to stderr. To capture them:
python prisma_sdwan_mcp_server.py --transport stdio 2>debug.logContributions are welcome! Here's how to get started:
git checkout -b feature/my-new-tool)@mcp.tool() pattern)When adding new tools:
prisma_sdwan_mcp_server.py following the @mcp.tool() decorator patternjson.dumps(data, indent=2) from every toolThis project is licensed under the MIT License.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.