Skip to main content
Glama
PanOS MCP Server

PanOS MCP Server

by Antxine

PanOS MCP Server

License: MIT GitHub stars Tests GitHub release

Control your Palo Alto Networks firewall with AI. PanOS MCP is an MCP (Model Context Protocol) server that connects AI assistants — Claude, Cursor, and others — directly to PAN-OS firewalls and Panorama via the PAN-OS XML API. Ask questions, inspect policies, and make configuration changes in plain English instead of navigating the GUI or writing API scripts.

Supports PA-Series firewalls (PA-220, PA-415, PA-440, PA-445, PA-450, PA-460, PA-1400, PA-3400, PA-5400, PA-7500 and more), VM-Series, CN-Series, and Panorama — any device running PAN-OS with API access enabled.

Warning: This server gives an AI model direct access to your firewall configuration via the PanOS API. AI models can make mistakes, misinterpret instructions, or take unintended actions that may disrupt network traffic, modify security policies, or cause outages. Use at your own risk. Always review AI-proposed changes before committing, use a read-only API key where possible, and never run against production firewalls without understanding the consequences.

117 tools across 16 modules covering firewall management, monitoring, and configuration changes — all from within your AI assistant.

What you can do

Talk to your firewall in plain English. Some examples:

  • "Show me all security rules that allow traffic from the internet to the DMZ"

  • "Which GlobalProtect users are currently connected?"

  • "Create an address object for 10.10.0.0/24 called corp-network and add it to the allow-internal group"

  • "Check HA status — is the standby firewall in sync?"

  • "Show me the last 50 threat log entries"

  • "Move the block-social-media rule above the allow-web rule and commit"

  • "List all IPSec tunnels and their current state"

  • "What software version is running on each managed device in Panorama?"

Related MCP server: Palo Alto Device Server

Features

  • Read-only inspection of firewall state, policies, objects, logs, and more

  • Configuration management via XPath-based set/delete with staged commits

  • Panorama support for centralized management of device groups, templates, and shared objects

  • Multi-firewall mode — manage multiple PA-Series devices or Panorama instances simultaneously

  • Secure credential storage — API keys stored in the OS keychain, never in plaintext

  • Input validation with Zod schemas for early error detection

  • Safety labels on every tool: [READ-ONLY], [MODIFIES CONFIG], or [ADVANCED]

Prerequisites

  • Node.js 22.19+

  • A PanOS firewall or Panorama appliance with API access enabled

  • A PanOS API key (how to generate)

To generate a PanOS API key directly from a firewall, use the XML API keygen endpoint:

curl -k -X GET 'https://<FIREWALL_IP_OR_HOST>/api/?type=keygen&user=<USERNAME>&password=<PASSWORD>'

This sends credentials in the request URL and skips TLS certificate verification. Use it only from a trusted management network, and prefer a scoped or read-only API key where possible.

Quick Start

Single firewall vs. multi-firewall: The Desktop Extension supports one firewall configured at install time. For managing multiple firewalls or Panorama instances simultaneously, use the npx or Claude Code CLI installation with the panos-keygen setup described in Multiple firewalls.

Claude Desktop — Desktop Extension (single firewall)

  1. Download the latest panos-mcp.mcpb from Releases

  2. Double-click the file — Claude Desktop opens an install dialog

  3. Enter your Firewall Host and API Key when prompted

The API key is stored securely in your OS keychain, not in plaintext config files.

Claude Desktop — npx (single or multiple firewalls)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "panos": {
      "command": "npx",
      "args": ["-y", "github:apius-tech/Palo-MCP"],
      "env": {
        "PANOS_HOST": "your-firewall-or-panorama",
        "PANOS_API_KEY": "your-api-key"
      }
    }
  }
}

Config file location: macOS ~/Library/Application Support/Claude/claude_desktop_config.json · Windows %APPDATA%\Claude\claude_desktop_config.json

Claude Code (CLI)

claude mcp add panos -- npx -y github:apius-tech/Palo-MCP \
  --env PANOS_HOST=your-firewall-or-panorama \
  --env PANOS_API_KEY=your-api-key

Cursor

Open Cursor Settings (Ctrl+Shift+J) → MCP → Add new MCP server, or add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "panos": {
      "command": "npx",
      "args": ["-y", "github:apius-tech/Palo-MCP"],
      "env": {
        "PANOS_HOST": "your-firewall-or-panorama",
        "PANOS_API_KEY": "your-api-key"
      }
    }
  }
}

Replace your-firewall-or-panorama with your firewall/Panorama IP or hostname, and your-api-key with your PanOS API key.

Multiple firewalls

For managing more than one firewall or Panorama, use the panos-keygen CLI to register each one. It generates an API key, stores it in your OS keychain, and writes the host entry to ~/.config/panos-mcp/firewalls.json:

npx panos-keygen --host fw-hq.example.com     --user admin --name hq-fw
npx panos-keygen --host fw-branch.example.com --user admin --name branch-fw
npx panos-keygen --host panorama.example.com  --user admin --name panorama

You will be prompted for the password. The API key is stored in the OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service) — never in the JSON file.

If you already have API keys, you can write them directly to firewalls.json with api_key fields — they will be auto-migrated to the keychain on the next server startup:

{
  "firewalls": [
    { "name": "hq-fw",  "host": "fw-hq.example.com",  "api_key": "LUFRPT1..." },
    { "name": "panorama", "host": "panorama.example.com", "api_key": "LUFRPT2..." }
  ]
}

Override the config path with PANOS_FIREWALLS_CONFIG=/custom/path.json if needed. name is the identifier you pass to tools (max 63 chars); host may include or omit the https:// prefix.

When multiple entries are configured, every tool accepts a firewall: <name> parameter — required in multi-mode, optional when a single entry or PANOS_HOST/PANOS_API_KEY env vars are used. Ask the model to call list_firewalls to see which targets are configured.

Linux headless servers: If no keychain daemon is available (e.g. servers without libsecret), API keys fall back to plaintext in firewalls.json with a warning. Restrict the file with chmod 600 ~/.config/panos-mcp/firewalls.json in that case.

Organization notes

Conventions that the configuration does not show (which device group serves which traffic, where exception rules go, which AD group is which team) can be written in a local Markdown file, kept outside the repository:

~/.config/panorama-mcp/org-notes.md

Override the path with PANOS_ORG_NOTES=/custom/path.md. The notes are appended to the server instructions, start_ticket_diagnosis, the playbook and the diagnose_ticket prompt. They are re-read on every call (server instructions only at startup). Example:

- DG-Users-Rules: traffic of regular users. DG-VDI-Rules: traffic from VDI sessions.
  Put a user's exception in the device group matching where they connect from.

Timeouts and caching

MCP clients drop a request after about 60 seconds (GitHub Copilot CLI included). Each tool call therefore has a time budget (PANOS_TOOL_BUDGET_SECONDS, default 50): log jobs are stopped before it runs out and the backward log search returns what it found with a lookback_start_days value to resume. Client cancellations stop the running log jobs on Panorama.

Config reads are cached for PANOS_CONFIG_CACHE_SECONDS (default 300, 0 disables), since a diagnosis reads the rules and objects of every device group several times. PANOS_LOG_TIMEOUT (default 120) still caps a single log job.

Tool Categories

Category

Tools

Description

System

4

Firewall info, HA status, sessions, resources

Network

10

Interfaces, zones, routing, ARP, VLANs, DHCP, DNS proxy, static routes (get, add, delete)

Security

18

Security rules CRUD, profiles, profile groups, PBF rules CRUD, DoS, QoS rules CRUD

Objects

16

Address/service objects and groups (get, add, delete), application filters, tags (get, add, delete)

NAT

5

NAT rules (get, add, move, delete, enable/disable)

User-ID

3

User-IP mappings, groups, config

Admin

3

Admins, roles, auth profiles

VPN

3

IPSec tunnels, GlobalProtect users and config

Panorama

29

Device groups, templates, shared objects, pre/post rules CRUD, DG NAT rules CRUD, push status, HA

Logs

5

Traffic, threat, system, URL, and config logs

Threat

4

WildFire, antivirus, content versions, URL categories

Certificates

7

Certificates, decryption rules (get, add, move, delete, enable/disable) and profiles

Licenses

2

License info and usage

Config

5

Set/delete config, commit, Panorama commit, Panorama push

Utility

2

Arbitrary op commands, XPath config reads

Firewalls

1

List configured firewall targets

Safety Labels

Every tool is labeled to indicate its impact:

  • [READ-ONLY] — Only reads data; no changes to the firewall

  • [MODIFIES CONFIG] — Stages or commits configuration changes that affect live traffic

  • [ADVANCED] — Accepts arbitrary commands; impact depends on the input

API Key

Generate a PanOS API key from the firewall web UI or CLI:

Web UI: Device → Administrators → your admin user → Generate API Key

CLI:

curl -k 'https://YOUR-FIREWALL/api/?type=keygen&user=admin&password=YOUR-PASSWORD'

See PanOS documentation for details.

Proxy support

If your firewall is reachable only via a proxy (management network behind a jump host, remote access via SOCKS5, corporate HTTP proxy), set one of the following environment variables before starting the server:

Variable

Purpose

PANOS_PROXY

Explicit override. Used regardless of NO_PROXY. Recommended for MCP deployments.

HTTPS_PROXY / https_proxy

Standard — same semantics as most HTTP clients.

HTTP_PROXY / http_proxy

Fallback.

ALL_PROXY / all_proxy

Fallback (common for SOCKS).

NO_PROXY / no_proxy

Comma-separated list of hostnames/suffixes to bypass. * disables proxying entirely. Ignored when PANOS_PROXY is set.

Supported URL schemes:

  • http://[user:pass@]host:port — HTTP CONNECT proxy

  • https://[user:pass@]host:port — HTTPS CONNECT proxy

  • socks5://[user:pass@]host:port — SOCKS5, client-side DNS

  • socks5h://[user:pass@]host:port — SOCKS5, proxy-side DNS (use this when the firewall hostname only resolves on the far side of the proxy)

  • socks4://[user@]host:port / socks4a://[user@]host:port

Example — SOCKS5 with remote DNS:

export PANOS_PROXY=socks5h://10.0.1.168:2080

Self-signed firewall certificates are accepted through the proxy tunnel (the server already disables cert validation for the PanOS target).

Development

git clone https://github.com/apius-tech/Palo-MCP.git
cd Palo-MCP
npm install
cp .env.example .env   # fill in PANOS_HOST and PANOS_API_KEY
npm run build           # compile TypeScript
npm run dev             # watch mode (rebuild on changes)
npm test                # run tests
npm run start           # run the server
npm run pack:extension  # build Desktop Extension (.mcpb)

Examples

"Show me the firewall system info"

Uses get_firewall_info to retrieve hostname, model, serial number, and software version.

"List all security rules on the firewall"

Uses get_security_rules to retrieve the full security policy rulebase.

"Create an address object for the 10.0.1.0/24 subnet called lab-network, then commit"

Uses set_config to create the address object in the candidate configuration, then commit to activate the change on the running firewall.

Privacy

  • No data collection — This extension does not collect, store, or transmit any data to third parties.

  • Direct communication only — All API calls go directly from your machine to your PanOS firewall or Panorama. No traffic is routed through intermediary servers.

  • Local credential storage — API keys are stored in your OS keychain (Desktop Extension and multi-firewall mode via panos-keygen), or in local environment variables. They are never sent anywhere other than your firewall.

  • No telemetry or analytics — This extension contains no tracking, telemetry, or analytics of any kind.

  • Data retention — No data is retained by the extension or its authors. Firewall responses exist only transiently in memory to serve the active request and are not persisted, logged, or shared. The only data stored at rest is your API key, kept locally in your OS keychain or environment variables under your control.

  • Third-party sharing — None. No data is shared with the authors, Anthropic, or any third party beyond the direct connection to your own firewall.

  • Contact — For privacy questions or data requests, open a GitHub issue. Maintained by Apius Technologies SA.

Disclaimer

This software is provided "as is", without warranty of any kind. This tool connects an AI model to live network infrastructure. AI models can hallucinate, misunderstand context, and execute unintended changes. The authors are not responsible for any damage, data loss, outages, or security incidents caused by the use of this software. You are solely responsible for any actions taken by the AI model through this server.

Recommendations:

  • Test in a lab environment before using in production

  • Use a read-only API key for inspection tasks

  • Always review and confirm changes before committing

  • Monitor firewall logs for unexpected configuration changes

Security

Please do not open a public GitHub issue for security vulnerabilities. See SECURITY.md for private reporting via GitHub Private Vulnerability Reporting or email.

License

MIT

Available Tools

91 tools
diagnose_flowA
Read-only

[READ-ONLY] Analyzes a flow (source -> destination:port) on a firewall: User-ID mapping and groups of the source, rule the firewall actually matches (test security-policy-match with the user), rules allowing the requested application, and recent traffic logs explained. Use for 'no rule allows X', upload app functions, App-ID or network issues.

Inputs: destination (required), destination_port (required), user, device, +6 more.

diagnose_threat_blockA
Read-only

[READ-ONLY] Analyzes a threat/file block (antivirus, WildFire, anti-spyware, vulnerability, file blocking, data filtering): finds the log, the rule and the security profile actually applied (profile group resolved), whether an exception for that threat ID ALREADY exists (in the applied profile or elsewhere), the matching file-blocking rule, and the WildFire verdict.

Inputs: user, period, src_ip, filename, +4 more.

diagnose_url_accessA
Read-only

[READ-ONLY] Full analysis of why a URL is blocked/allowed: existing custom categories covering it (or same-domain entries that do not match), PAN-DB category, rules and URL filtering profiles using those categories, recent URL logs for the user, and conclusions. Prevents proposing a category that already exists.

Inputs: url (required), user, device, period, +3 more.

diagnose_user_blocksA
Read-only

[READ-ONLY] START HERE for a ticket. Builds a timeline of everything that blocked a user or source IP across traffic, threat, URL, WildFire, data filtering, decryption and GlobalProtect logs, grouped and explained (which layer blocked, why, what to check next). With reported_url, flags blocks on OTHER domains at the same time (upload/storage/CDN/SSO dependencies of the site).

Inputs: user, period, src_ip, firewall, +3 more.

edl_lookupA
Read-only

[READ-ONLY] Checks whether an IP, domain or URL is present in the External Dynamic Lists applying to a firewall (config from Panorama, current content from the firewall), including EDL exception lists.

Inputs: value (required), name, device, firewall, +1 more.

find_security_rulesA
Read-only

[READ-ONLY] Searches security or decryption rules (pre/post) in Panorama's running config. Matches 'contains' against rule name, zones, addresses, users, applications, services, categories, tags and description. With 'device_group', rules of that group AND everything it inherits (shared, parent groups) are returned in evaluation order; with 'device', only rules applying to that firewall. Output flags rules without log forwarding.

Inputs: device, policy, contains, firewall, +3 more.

get_active_sessionsA
Read-only

[READ-ONLY] Retrieves active session count and summary from the firewall. Executes: show session info.

Inputs: firewall.

get_address_groupsB
Read-only

[READ-ONLY] Retrieves all address groups that contain multiple address objects. Reads config at: /config/.../vsys/entry/address-group.

Inputs: firewall.

get_address_objectsA
Read-only

[READ-ONLY] Retrieves all address objects (IP addresses, ranges, FQDNs) defined on the firewall. Reads config at: /config/.../vsys/entry/address.

Inputs: firewall.

get_admin_rolesA
Read-only

[READ-ONLY] Retrieves administrator role definitions and their permissions. Reads config at: /config/.../vsys/entry/admin-role.

Inputs: firewall.

get_adminsA
Read-only

[READ-ONLY] Retrieves all administrator accounts configured on the firewall. Reads config at: /config/mgt-config/users.

Inputs: firewall.

get_antivirus_versionA
Read-only

[READ-ONLY] Retrieves current antivirus, threat, and WildFire signature versions and release dates. Executes: show system info (extracts signature fields).

Inputs: firewall.

get_application_filtersA
Read-only

[READ-ONLY] Retrieves application filters used for application-based policy rules. Reads config at: /config/.../vsys/entry/application-filter.

Inputs: firewall.

get_arp_tableA
Read-only

[READ-ONLY] Retrieves ARP table entries from the firewall. Executes: show arp entry all.

Inputs: firewall.

get_auth_profilesA
Read-only

[READ-ONLY] Retrieves authentication profiles including RADIUS, LDAP, and TACACS+ configurations. Reads config at: /config/shared/authentication-profile.

Inputs: firewall.

get_certificatesA
Read-only

[READ-ONLY] Retrieves SSL/TLS certificates configured on the firewall. Reads config at: /config/shared/certificate.

Inputs: firewall.

get_config_logsA
Read-only

[READ-ONLY] Retrieves recent configuration change logs from the firewall using the PanOS log API (type=log). Supports filtering by query and limiting result count.

Inputs: nlogs, query, firewall.

get_config_xpathA
Read-only

[READ-ONLY] Retrieves configuration at a specific XPath location. This is a flexible read tool for querying any part of the PanOS configuration tree.

Inputs: xpath (required), firewall.

get_content_versionsA
Read-only

[READ-ONLY] Retrieves available content update versions (antivirus, applications, threats). Executes: request content upgrade info.

Inputs: firewall.

get_decryption_profilesA
Read-only

[READ-ONLY] Retrieves SSL decryption profiles. Reads config at: /config/.../profiles/decryption.

Inputs: firewall.

get_decryption_rulesA
Read-only

[READ-ONLY] Retrieves SSL decryption policy rules. Reads config at: /config/.../rulebase/decryption/rules.

Inputs: firewall.

get_dhcp_leasesA
Read-only

[READ-ONLY] Retrieves DHCP server lease information. Executes: show dhcp server lease all.

Inputs: firewall.

get_dns_proxyA
Read-only

[READ-ONLY] Retrieves DNS proxy configuration. Reads config at: /config/.../network/dns-proxy.

Inputs: firewall.

get_dos_profilesA
Read-only

[READ-ONLY] Retrieves DoS protection profiles. Reads config at: /config/.../profiles/dos-protection.

Inputs: firewall.

get_firewall_infoA
Read-only

[READ-ONLY] Retrieves system information (hostname, model, serial, software version) from the PanOS firewall. Executes: show system info.

Inputs: firewall.

get_globalprotect_configA
Read-only

[READ-ONLY] Retrieves GlobalProtect gateway and portal configuration. Reads config at: /config/.../vsys/entry/global-protect.

Inputs: firewall.

get_globalprotect_usersA
Read-only

[READ-ONLY] Retrieves currently connected GlobalProtect VPN users. Executes: show global-protect-gateway current-user.

Inputs: firewall.

get_ha_statusA
Read-only

[READ-ONLY] Retrieves high-availability (HA) state and peer information from the firewall. Executes: show high-availability state.

Inputs: firewall.

get_interfacesA
Read-only

[READ-ONLY] Retrieves all network interfaces with their status, IP addresses, and configuration. Executes: show interface all.

Inputs: firewall.

get_ipsec_tunnelsA
Read-only

[READ-ONLY] Retrieves IPSec VPN tunnel status and security associations. Executes: show vpn ipsec-sa.

Inputs: firewall.

get_licensesA
Read-only

[READ-ONLY] Retrieves license status and expiration dates for all features. Executes: request license info.

Inputs: firewall.

get_license_usageB
Read-only

[READ-ONLY] Retrieves license usage information including VM model, serial, capacity tier, and mode. Executes: show system info (extracts license fields).

Inputs: firewall.

get_nat_rulesA
Read-only

[READ-ONLY] Retrieves all NAT policy rules including source NAT, destination NAT, and bidirectional rules. Reads config at: /config/.../rulebase/nat/rules.

Inputs: firewall.

get_pbf_rulesA
Read-only

[READ-ONLY] Retrieves policy-based forwarding (PBF) rules. Reads config at: /config/.../rulebase/pbf/rules.

Inputs: firewall.

get_qos_rulesA
Read-only

[READ-ONLY] Retrieves QoS policy rules. Reads config at: /config/.../rulebase/qos/rules.

Inputs: firewall.

get_routing_tableA
Read-only

[READ-ONLY] Retrieves the current routing table from the firewall. Executes: show routing route.

Inputs: firewall.

get_security_profile_groupsB
Read-only

[READ-ONLY] Retrieves security profile groups that combine multiple security profiles. Reads config at: /config/.../vsys/entry/profile-group.

Inputs: firewall.

get_security_profilesA
Read-only

[READ-ONLY] Retrieves security profiles including antivirus, vulnerability, spyware, and URL filtering profiles. Reads config at: /config/.../vsys/entry/profiles.

Inputs: firewall.

get_security_rulesA
Read-only

[READ-ONLY] Retrieves all security policy rules from the firewall. Reads config at: /config/.../rulebase/security/rules.

Inputs: firewall.

get_service_groupsA
Read-only

[READ-ONLY] Retrieves all service groups that contain multiple service objects. Reads config at: /config/.../vsys/entry/service-group.

Inputs: firewall.

get_service_objectsA
Read-only

[READ-ONLY] Retrieves all service objects (port/protocol definitions) from the firewall. Reads config at: /config/.../vsys/entry/service.

Inputs: firewall.

get_static_routesA
Read-only

[READ-ONLY] Retrieves static routes from a virtual router. Reads config at: /config/.../virtual-router/entry/routing-table/ip/static-route.

Inputs: firewall, virtual_router.

get_system_logsB
Read-only

[READ-ONLY] Retrieves recent system logs from the firewall using the PanOS log API (type=log). Supports filtering by query and limiting result count.

Inputs: nlogs, query, firewall.

get_system_resourcesA
Read-only

[READ-ONLY] Retrieves system resource utilization including CPU, memory, and disk usage. Executes: show system resources.

Inputs: firewall.

get_tagsA
Read-only

[READ-ONLY] Retrieves all tags defined on the firewall. Reads config at: /config/.../vsys/entry/tag.

Inputs: firewall.

get_threat_logsA
Read-only

[READ-ONLY] Retrieves recent threat logs from the firewall using the PanOS log API (type=log). Supports filtering by query and limiting result count.

Inputs: nlogs, query, firewall.

get_traffic_logsA
Read-only

[READ-ONLY] Retrieves recent traffic logs from the firewall using the PanOS log API (type=log). Supports filtering by query and limiting result count.

Inputs: nlogs, query, firewall.

get_troubleshooting_playbookA
Read-only

[READ-ONLY] Returns the troubleshooting playbook: visibility pitfalls, third-party dependencies, URL filtering, file/threat false positives, App-ID, User-ID, NAT, decryption, DNS security, EDL, zone protection. Read it when the cause is unclear or before concluding.

Inputs: no named parameters.

get_url_categoriesB
Read-only

[READ-ONLY] Retrieves predefined URL filtering categories. Reads config at: /config/predefined/pan-url-categories.

Inputs: firewall.

get_url_filter_logsA
Read-only

[READ-ONLY] Retrieves recent URL filtering logs from the firewall using the PanOS log API (type=log&log-type=url). Shows URLs visited and actions taken (allow/block/continue/override) by URL filtering policy.

Inputs: nlogs, query, firewall.

get_userid_configB
Read-only

[READ-ONLY] Retrieves User-ID configuration settings including agent configuration and group mapping. Reads config at: /config/.../vsys/entry/user-id-agent.

Inputs: firewall.

get_userid_groupsA
Read-only

[READ-ONLY] Retrieves user groups known to the firewall via User-ID. Executes: show user group list.

Inputs: firewall.

get_userid_mappingsA
Read-only

[READ-ONLY] Retrieves IP-to-user mappings from User-ID, showing which users are mapped to which IP addresses. Executes: show user ip-user-mapping all.

Inputs: firewall.

get_vlansB
Read-only

[READ-ONLY] Retrieves VLAN configuration from the firewall. Reads config at: /config/.../network/vlan.

Inputs: firewall.

get_wildfire_statusA
Read-only

[READ-ONLY] Retrieves WildFire cloud connection status and statistics. Executes: show wildfire status.

Inputs: firewall.

get_zonesA
Read-only

[READ-ONLY] Retrieves all security zones configured on the firewall. Reads config at: /config/.../vsys/entry/zone.

Inputs: firewall.

gp_current_usersB
Read-only

[READ-ONLY] GlobalProtect users currently connected to a gateway firewall (show global-protect-gateway current-user), optionally for one user.

Inputs: user, device, firewall, device_group.

list_firewallsA
Read-only

[READ-ONLY] Lists all configured firewall targets. Shows names and hosts (never API keys). Indicates whether the 'firewall' parameter is required for other tools.

Inputs: no named parameters.

panorama_get_collector_groupsB
Read-only

[READ-ONLY] Retrieves collector group configuration from Panorama. Reads config at: /config/.../log-collector-group.

Inputs: firewall.

panorama_get_commit_statusA
Read-only

[READ-ONLY] Retrieves the status of pending commits in Panorama. Executes: show jobs all.

Inputs: firewall.

panorama_get_device_group_hierarchyA
Read-only

[READ-ONLY] Retrieves the device group hierarchy showing parent-child relationships. Reads config at: /config/readonly/.../device-group.

Inputs: firewall.

panorama_get_device_group_nat_rulesA
Read-only

[READ-ONLY] Retrieves NAT rules from a device group (pre or post rulebase). Reads config at: /config/.../device-group/entry/{pre|post}-rulebase/nat/rules.

Inputs: rulebase (required), device_group (required), firewall.

panorama_get_device_groupsB
Read-only

[READ-ONLY] Retrieves all device groups configured in Panorama. Reads config at: /config/.../device-group.

Inputs: firewall.

panorama_get_ha_statusA
Read-only

[READ-ONLY] Retrieves Panorama high-availability status for Panorama HA pairs. Executes: show high-availability state.

Inputs: firewall.

panorama_get_log_collectorsA
Read-only

[READ-ONLY] Retrieves log collector configuration and status from Panorama. Executes: show log-collector all.

Inputs: firewall.

panorama_get_managed_devicesA
Read-only

[READ-ONLY] Retrieves all firewalls managed by Panorama with their connection status. Executes: show devices all.

Inputs: firewall.

panorama_get_managed_device_softwareA
Read-only

[READ-ONLY] Retrieves software and content versions on all managed firewalls. Executes: show devices all.

Inputs: firewall.

panorama_get_post_rulesA
Read-only

[READ-ONLY] Retrieves post-rules from a device group (rules pushed after local firewall rules). Reads config at: /config/.../device-group/entry/post-rulebase/security/rules.

Inputs: device_group (required), firewall.

panorama_get_pre_rulesA
Read-only

[READ-ONLY] Retrieves pre-rules from a device group (rules pushed before local firewall rules). Reads config at: /config/.../device-group/entry/pre-rulebase/security/rules.

Inputs: device_group (required), firewall.

panorama_get_push_statusB
Read-only

[READ-ONLY] Retrieves the status of the last configuration push to managed devices. Executes: show config push status.

Inputs: firewall.

panorama_get_shared_address_groupsA
Read-only

[READ-ONLY] Retrieves shared address groups defined at Panorama level. Reads config at: /config/shared/address-group.

Inputs: firewall.

panorama_get_shared_address_objectsA
Read-only

[READ-ONLY] Retrieves shared address objects defined at Panorama level. Reads config at: /config/shared/address.

Inputs: firewall.

panorama_get_shared_profile_groupsA
Read-only

[READ-ONLY] Retrieves shared security profile groups defined at Panorama level. Reads config at: /config/shared/profile-group.

Inputs: firewall.

panorama_get_shared_security_profilesA
Read-only

[READ-ONLY] Retrieves shared security profiles defined at Panorama level. Reads config at: /config/shared/profiles.

Inputs: firewall.

panorama_get_shared_service_groupsA
Read-only

[READ-ONLY] Retrieves shared service groups defined at Panorama level. Reads config at: /config/shared/service-group.

Inputs: firewall.

panorama_get_shared_service_objectsA
Read-only

[READ-ONLY] Retrieves shared service objects defined at Panorama level. Reads config at: /config/shared/service.

Inputs: firewall.

panorama_get_templatesA
Read-only

[READ-ONLY] Retrieves all templates configured in Panorama. Reads config at: /config/.../template.

Inputs: firewall.

panorama_get_template_stacksA
Read-only

[READ-ONLY] Retrieves all template stacks configured in Panorama. Reads config at: /config/.../template-stack.

Inputs: firewall.

panorama_list_device_groupsA
Read-only

[READ-ONLY] Lists device groups with their parent chain and member firewalls (hostname, serial, connected). Policies of a device group include everything inherited from shared and its parents.

Inputs: refresh, firewall.

panorama_list_firewallsA
Read-only

[READ-ONLY] Lists firewalls managed by Panorama: hostname, serial, IP, model, version, connection and policy/template sync state. Use the hostname or serial as 'device' in other tools.

Inputs: filter, refresh, firewall.

run_show_commandA
Read-only

[READ-ONLY] Runs an arbitrary read-only operational command (root element must be or ) on Panorama, or on a managed firewall with 'device'. Use when no dedicated tool exists.

Inputs: command (required), device, firewall.

search_logsA
Read-only

[READ-ONLY] Searches logs stored on Panorama (traffic, threat, url, wildfire, data, globalprotect, userid, auth, decryption, system) with structured filters and a time window. Returns trimmed entries, each with a '_why' explanation of what blocked it. Structured filters are server-side for traffic/threat/url/wildfire/data/decryption; for other types user and src_ip are matched locally.

Inputs: log_type (required), app, rule, user, +13 more.

show_sessionsB
Read-only

[READ-ONLY] Active sessions on a managed firewall matching a filter (show session all filter). Useful while the user reproduces the issue.

Inputs: device, source, firewall, application, +4 more.

start_ticket_diagnosisA
Read-only

[READ-ONLY] Call this FIRST when the user shares a support ticket or asks to debug a blocked user: returns the diagnosis method, the rules to follow and the expected answer format.

Inputs: no named parameters.

test_security_policy_matchA
Read-only

[READ-ONLY] Asks a managed firewall which security rule matches a flow (test security-policy-match). This is the ground truth, including local rules invisible from Panorama. Include source_user so user/group-based rules are evaluated.

Inputs: source (required), destination (required), destination_port (required), to, +9 more.

test_url_categoryA
Read-only

[READ-ONLY] Asks a managed firewall how it categorizes a URL (test url): PAN-DB categories from the local cache and the cloud. Custom categories are not shown here: use url_category_find.

Inputs: url (required), device, firewall, device_group.

url_category_findA
Read-only

[READ-ONLY] Finds which existing custom URL categories already cover a URL (PAN-OS wildcard/prefix rules), which ones contain the same domain but do not match (pattern issue), and with 'device' the PAN-DB category. Run this BEFORE proposing any new URL category.

Inputs: url (required), device, firewall, device_group.

url_category_getA
Read-only

[READ-ONLY] Returns the entries of a custom URL category (URL list, or PAN-DB categories for 'Category Match'). Searches shared and every device group unless device_group is set.

Inputs: name (required), firewall, device_group.

url_category_listA
Read-only

[READ-ONLY] Lists custom URL categories (shared and device groups) with their type and number of entries. Use url_category_get for the entries.

Inputs: firewall, device_group, name_contains.

url_category_usageA
Read-only

[READ-ONLY] Shows where URL categories are used: security/decryption rules referencing them (in evaluation order when 'device' is set) and URL filtering profiles acting on them, with the rules using those profiles.

Inputs: categories (required), device, firewall, device_group.

userid_lookupA
Read-only

[READ-ONLY] User-ID state on a managed firewall: which user is mapped to an IP (show user ip-user-mapping) and/or which groups a user belongs to (show user user-ids match-user). A missing mapping means user/group-based rules cannot match that IP.

Inputs: ip, user, device, firewall, +1 more.

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 91 tools

    Disambiguation3/5

    There are several overlapping tools: get_globalprotect_users and gp_current_users both return current GlobalProtect users, get_active_sessions and show_sessions both retrieve active sessions, and list_firewalls, panorama_list_firewalls, and panorama_get_managed_devices all list firewalls in slightly different scopes. Descriptions help clarify the Panorama vs direct API distinction, but the duplicates cause ambiguity.

    Naming Consistency4/5

    The majority of tools follow a get_<resource> or panorama_get_<resource> pattern, which is clear and predictable. However, there are inconsistent verbs (list_firewalls vs get_firewall_info, panorama_list_firewalls vs panorama_get_managed_devices) and domain-specific names like gp_current_users, test_security_policy_match, find_security_rules, and diagnose_* that break the pattern. Overall, the names are readable and the resource is usually clear, so the inconsistency is minor.

    Tool Count1/5

    At 91 tools, the server far exceeds the well-scoped range and is in the extreme mismatch territory. While the domain is broad, this many tools overwhelms an agent's tool selection and many could be consolidated (e.g., generic get_* patterns for similar resources). The sheer count makes the tool surface feel bloated rather than focused.

    Completeness5/5

    For its stated read-only monitoring and troubleshooting purpose, the coverage is exceptionally thorough: it spans firewall system/network objects, security rules, NAT, VPN, logs, User-ID, GlobalProtect, Panorama management, and diagnostic workflows. The inclusion of run_show_command and get_config_xpath as flexible fallbacks closes any remaining gaps.

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with Palo Alto Networks APIs through a Model Context Protocol server. Generated using Postman MCP Generator, it provides automated tools for managing Palo Alto services through natural language commands.
      -
    • F
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables firewall policy governance by querying CMDB assets and auditing Panorama/Firewall policies. Supports asset searches, firewall object inspection, and security policy auditing to identify matching rules and configurations.
      -