loading…
Search for a command to run...
loading…
Enables MCP clients to interact with Palo Alto Networks firewalls and Panorama, providing tools to retrieve address objects, security zones, policies, and syste
Enables MCP clients to interact with Palo Alto Networks firewalls and Panorama, providing tools to retrieve address objects, security zones, policies, and system information.
A Model Context Protocol (MCP) server for interfacing with Palo Alto Networks Next-Generation Firewalls (NGFW) using the modelcontextprotocol Python SDK.
This package provides an MCP server that enables MCP clients (like Windsurf) to interact with Palo Alto Networks NGFW appliances via their XML API. The server is built using the FastMCP abstraction from the modelcontextprotocol Python SDK and provides tool-calling capabilities for retrieving firewall configuration data.
FastMCP class from the modelcontextprotocol Python SDKuv (recommended) or pip# Using uv (recommended)
uv pip install .
# Using pip
pip install .
The server requires the following environment variables to be set (can be provided via a .env file in the project root):
PANOS_HOSTNAME: Hostname or IP address of the Palo Alto Networks NGFWPANOS_API_KEY: API key for authenticating with the Palo Alto Networks NGFWOptional environment variables:
PANOS_DEBUG: Set to true to enable debug logging (default: false)Example .env file:
PANOS_HOSTNAME=192.168.1.1
PANOS_API_KEY=your-api-key-here
PANOS_DEBUG=true
python -m palo_alto_mcp
This will launch the MCP server as a network server, exposing HTTP/SSE endpoints for integration with Windsurf and other MCP clients.
/sse — Main Server-Sent Events (SSE) endpoint for client-server communication/messages/ — Message endpoint for SSE transport (required for Windsurf/MCP clients)Ensure your client configuration points to these endpoints for correct operation.
The server is designed to be used with MCP clients like Windsurf. It follows the command-based integration pattern using the standard I/O transport provided by the SDK.
Example client configuration in mcp_config.json:
{
"tools": [
{
"name": "panos",
"command": "palo-alto-mcp",
"args": [],
"env": {
"PANOS_HOSTNAME": "192.168.1.1",
"PANOS_API_KEY": "your-api-key-here"
}
}
]
}
show_system_infoGet system information from the Palo Alto Networks firewall.
Example Response:
# Palo Alto Networks Firewall System Information
**hostname**: fw01.example.com
**model**: PA-VM
**serial**: 0123456789
**sw-version**: 10.2.3
...
retrieve_address_objectsGet address objects configured on the Palo Alto Networks firewall or Panorama. Address objects are grouped by location (shared, device group, or vsys).
Example Response:
# Palo Alto Networks Firewall Address Objects
## Shared Address Objects
### web-server
- **Type**: ip-netmask
- **Value**: 10.1.1.100/32
- **Description**: Web Server
## Device-group:Production Address Objects
### internal-network
- **Type**: ip-netmask
- **Value**: 10.1.0.0/16
- **Description**: Internal Network
- **Tags**: internal, production
retrieve_security_zonesGet security zones configured on the Palo Alto Networks firewall.
Example Response:
# Palo Alto Networks Firewall Security Zones
## trust
- **Type**: layer3
- **Interfaces**:
- ethernet1/1
- ethernet1/2
## untrust
- **Type**: layer3
- **Interfaces**:
- ethernet1/3
retrieve_security_policiesGet security policies configured on the Palo Alto Networks firewall.
Example Response:
# Palo Alto Networks Firewall Security Policies
## allow-outbound
- **Description**: Allow outbound traffic
- **Action**: allow
- **Source Zones**:
- trust
- **Source Addresses**:
- any
- **Destination Zones**:
- untrust
- **Destination Addresses**:
- any
- **Applications**:
- web-browsing
- ssl
- **Services**:
- application-default
# Clone the repository
git clone https://github.com/cdot65/pan-os-mcp.git
cd pan-os-mcp
# Install development dependencies
uv pip install -e ".[dev]"
pytest
# Run linting
ruff check .
# Run type checking
pyright
palo-alto-mcp/
├── src/
│ └── palo_alto_mcp/
│ ├── __init__.py # Package initialization
│ ├── __main__.py # Command-line entry point
│ ├── config.py # Configuration management
│ ├── server.py # Main FastMCP server implementation
│ └── pan_os_api.py # API client for Palo Alto NGFW XML API
├── tests/ # Unit and integration tests
├── pyproject.toml # Python package definition
└── README.md # Documentation
MIT
FastMCP class from the modelcontextprotocol Python SDK for MCP server implementationpydantic-settings for configuration managementxml.etree.ElementTree for parsing XML responsesRun in your terminal:
claude mcp add palo-alto-networks-mcp-server -- npx Security
Low riskAutomated heuristic from public metadata — not a security guarantee.