Skip to main content

Palo Alto Networks MCP Server

A Model Context Protocol (MCP) server for interfacing with Palo Alto Networks Next-Generation Firewalls (NGFW) using the modelcontextprotocol Python SDK.

Overview

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.

Features

  • Retrieve address objects from Palo Alto Networks firewalls and Panorama
  • Retrieve security zones from Palo Alto Networks firewalls
  • Retrieve security policies from Palo Alto Networks firewalls
  • Get system information from Palo Alto Networks firewalls
  • Support for Panorama device groups and shared address objects
  • Built using the FastMCP class from the modelcontextprotocol Python SDK
  • Exposes network (HTTP/SSE) endpoints for integration with Windsurf and MCP clients

Installation

Prerequisites

  • Python 3.10 or higher
  • uv (recommended) or pip

Install from Source

# Using uv (recommended)
uv pip install .

# Using pip
pip install .

Configuration

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 NGFW
  • PANOS_API_KEY: API key for authenticating with the Palo Alto Networks NGFW

Optional 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

Usage

Running the Server (Network/SSE mode)

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 Endpoints

  • /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.

Integration with MCP Clients

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"
      }
    }
  ]
}

Available Tools

show_system_info

Get 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_objects

Get 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_zones

Get 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_policies

Get 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

Development

Setup Development Environment

# 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]"

Running Tests

pytest

Code Quality

# Run linting
ruff check .

# Run type checking
pyright

Project Structure

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

License

MIT

Patterns and Technologies Used

  • FastMCP: Using the FastMCP class from the modelcontextprotocol Python SDK for MCP server implementation
  • Async/Await: Using Python's async/await pattern for non-blocking I/O operations
  • Environment Variables: Configuration via environment variables
  • Pydantic Settings: Using pydantic-settings for configuration management
  • Type Hints: Strong typing with Python type hints
  • Context Managers: Using async context managers for resource management
  • XML Parsing: Using the built-in xml.etree.ElementTree for parsing XML responses
  • Panorama Support: Handling Panorama device groups and shared objects

Metadata

Release files for iflow-mcp_cdot65-palo-alto-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_cdot65-palo-alto-mcp 0.1.0
File Size Uploaded
iflow_mcp_cdot65_palo_alto_mcp-0.1.0.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_cdot65-palo-alto-mcp 0.1.0
File Interpreter ABI Platform
iflow_mcp_cdot65_palo_alto_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.5 kB

Release files / iflow_mcp_cdot65_palo_alto_mcp-0.1.0.tar.gz

Download URL iflow_mcp_cdot65_palo_alto_mcp-0.1.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ebcae6f0b53c1b7b69a1610cdbe7f2f6b96fae831479b25ba81036d6524b2315
BLAKE2b-256 checksum
How to use checksums
fab211e525a63fa8ebb483e84863909c4d8d4740cc83d6ca4859318ec93f1b8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / iflow_mcp_cdot65_palo_alto_mcp-0.1.0-py3-none-any.whl

Download URL iflow_mcp_cdot65_palo_alto_mcp-0.1.0-py3-none-any.whl
Size 10.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f357d4700a6b8aeacfb7689cdfe4dfd09992b6b4e4f53d4ad340bc0231bfd99f
BLAKE2b-256 checksum
How to use checksums
532850868da7eeb2317e0c4d819c01b5e34fafba2afc2286dafcf55ed62a2cc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page