A collection of Model Context Protocol (MCP) servers for Palo Alto Networks Cortex XSIAM security operations. These servers enable AI agents (like Gemini) to interact with XSIAM through standardized tool interfaces for threat intelligence enrichment, log analysis, asset management, and security operations.
This repository contains MCP server implementations that bridge AI agents with Cortex XSIAM capabilities:
- Standalone Server: Consolidated MCP server combining all XSIAM tools in one deployable package
- XSIAM Integration: MCP server that runs as an XSIAM integration (native deployment inside XSIAM)
- Threat intel enrichment: IP, domain, URL, file/hash
- XQL execution and log queries (Corelight NDR, Palo Alto NGFW, Umbrella DNS)
- Lookup datasets: list/create/add/query/remove
- Asset and vulnerability lookups; tenant info
- Security cases/issues search
- Network fabric lookups (Arista IP/MAC)
- Reference docs/resources: XQL language, dataset fields, query examples
- Slack file download utility
┌────────────────────────────────────────────────┐
│ AI Agent (Gemini) │
└───────────────────────┬────────────────────────┘
│ MCP Protocol
│
┌───────────────┴──────────────┐
│ │
┌───────▼────────┐ ┌────────▼────────┐
│ Standalone │ │ XSIAM │
│ MCP Server │ │ Integration │
└───────┬────────┘ └────────┬────────┘
│ │
│ XSIAM Public API │
│ │
└───────────────┬──────────────┘
│
┌─────────▼──────────┐
│ Cortex XSIAM/XDR │
│ Platform │
└────────────────────┘
Recommended for most use cases
A fully-featured, independently deployable MCP server that combines all XSIAM tools in one package.
Key Features:
- 25+ tools across 6 modules
- Threat intelligence enrichment (IP, domain, URL, file)
- XQL query execution and log analysis
- Asset inventory and vulnerability management
- Lookup dataset management
- Network fabric lookups (Arista, Cisco Umbrella)
- Slack file download integration
- Docker support with SSL/TLS
- Comprehensive XQL documentation and examples
Deployment:
- Docker container
- Local Python environment
- HTTP/HTTPS transport
- STDIO transport for Claude Desktop
View Standalone Documentation →
For native XSIAM deployment
An MCP server that runs as an XSIAM integration, leveraging XSIAM's API and executing tools directly within the XSIAM platform.
Key Features:
- Runs inside XSIAM as a native integration
- War Room/Playground command execution
- Same 25+ tools as standalone version
- Automatic credential management via XSIAM
Deployment:
- Upload as XSIAM integration
- Configure in XSIAM integrations panel
- Runs within XSIAM infrastructure
View XSIAM Integration Documentation →
Use when you want the MCP to run inside an XSIAM engine.
Parameters to configure in XSIAM (from integration.yml / UI):
xsiam_api_url(e.g.,https://api-<tenant>.xdr.<region>.paloaltonetworks.com)xsiam_standard_key(Standard API key value)xsiam_key_id(Standard API key ID)mcp_transport(streamable-httprecommended;stdiooptional)mcp_host/mcp_port/mcp_path(default0.0.0.0/9010//api/v1/stream/mcp)playground_id(required for tools that use War Room command execution)mcp_key(optional bearer token for MCP auth)slack_bot_token,ssl_pem,ssl_key(optional)
Notes:
- Deploy to an XSIAM engine.
- You do not need Docker/Compose here.
- Make sure your Standard API key has required scopes.
Use when you want to run outside XSIAM (local, VM, container, or Compose).
Environment setup (applies to Docker and Compose):
cd standalone
cp .env.example .env
# Fill CORTEX_MCP_PAPI_URL=https://api-<tenant>.xdr.<region>.paloaltonetworks.com
# Fill CORTEX_MCP_PAPI_AUTH_HEADER and CORTEX_MCP_PAPI_AUTH_ID with your Standard API key/valuedocker build -t cortex-mcp-standalone .
docker run --env-file .env -p 9020:9020 -i --rm cortex-mcp-standaloneYou can also pass env vars inline for quick tests:
docker run -p 9020:9020 \
-e CORTEX_MCP_PAPI_URL=... \
-e CORTEX_MCP_PAPI_AUTH_HEADER=... \
-e CORTEX_MCP_PAPI_AUTH_ID=... \
-e MCP_AUTH_TOKEN=... \
-i --rm cortex-mcp-standalonecd standalone
cp .env.example .env
# Fill MCP_* and CORTEX_* for the server; fill GEMINI/GOOGLE_* and MCP_URL/MCP_TOKEN for the agent.
docker compose up -dServices:
mcp-xsiamon port9020(streamable HTTP endpoint)agent-orionon port8501(Streamlit UI consuming the MCP)
cd standalone
pip install -r requirements.txt
python src/main.pyAll servers provide the same comprehensive toolkit:
enrich_ip- IP threat intelligence and reputationenrich_domain- Domain reputation and WHOISenrich_url- URL-specific threat analysisenrich_file- File hash reputation and malware familyget_cases- Security case management
run_xql_query- Execute custom XQL queriesquery_corelight_logs- NDR HTTP activity (Corelight)query_paloalto_firewall_logs- Firewall threat eventsumbrella_reporting_activity_get- DNS query history
ip_lookup_arista- Physical location in network fabricmac_lookup_arista- Device location by MAC address
get_assets- Search asset inventoryget_asset_by_id- Detailed asset informationget_assessment_results- Vulnerability assessmentsget_tenant_info- XSIAM tenant information
get_datasets- List available datasetscreate_dataset- Create new lookup datasetadd_lookup_data- Add/update lookup dataget_lookup_data- Query lookup datasetremove_lookup_data- Delete lookup data
get_issues- Search security issues
get_xql_doc- XQL language referenceget_xql_examples- Real-world XQL query examplesget_dataset_fields- Dataset schema and field mappings
slack_download_file- Download files from Slack
User: "Investigate IP 192.168.1.100"
Agent uses:
1. enrich_ip - Get threat intelligence
2. ip_lookup_arista - Find physical location
3. query_corelight_logs - Check HTTP activity
4. query_paloalto_firewall_logs - Check for threats
User: "Hunt for suspicious domain communications"
Agent uses:
1. get_xql_doc - Learn XQL syntax
2. get_dataset_fields - Find relevant fields
3. run_xql_query - Execute custom threat hunting query
4. enrich_domain - Analyze discovered domains
User: "Find all Windows servers with critical vulnerabilities"
Agent uses:
1. get_assets - Search for Windows servers
2. get_assessment_results - Get vulnerability data
3. get_asset_by_id - Detailed info on critical systems
User: "Analyze traffic from specific IPs"
Agent uses:
1. get_lookup_data - Get subnet-to-location mapping
2. query_corelight_logs - HTTP activity analysis
3. query_paloalto_firewall_logs - Security events
Shared required values (both variants):
CORTEX_MCP_PAPI_URL=https://api-<tenant>.xdr.<region>.paloaltonetworks.com(do NOT include/public_api/v1; the client appends it)CORTEX_MCP_PAPI_AUTH_HEADER= Standard API key valueCORTEX_MCP_PAPI_AUTH_ID= Standard API key ID
Optional (commonly used):
- Transport:
MCP_TRANSPORT=streamable-httporstdio;MCP_HOST,MCP_PORT,MCP_PATH - MCP auth:
MCP_AUTH_TOKEN(bearer required by clients) - Playground:
PLAYGROUND_ID(needed for War Room command execution in the integration) - TLS:
SSL_CERT_PEM,SSL_KEY_PEM(one-line PEM with\n) - Slack:
SLACK_BOT_TOKEN - Agent (Compose):
MCP_URL,MCP_TOKEN,GEMINI_API_KEY,GOOGLE_APPLICATION_CREDENTIALS,GEMINI_MODEL,UI_USER,UI_PASSWORD
.env usage:
- Standalone: copy
standalone/.env.exampleto.envand fill the values. Compose and Docker both read this file. - XSIAM integration: values are entered via the integration parameters in the XSIAM UI (mirrors the variables above).
Obtain Standard API credentials from XSIAM:
- Navigate to Settings > Configurations > API Keys
- Create a new Standard API key
- Save the API Key and API Key ID
- Configure role-based access as needed
For secured HTTP transport, set MCP_AUTH_TOKEN:
- Clients must send
Authorization: Bearer <token>header - Token verified using timing-safe comparison
- 1-hour token expiry with auto-renewal
mcpservers/
├── standalone/ # Standalone MCP server
│ ├── src/
│ │ ├── main.py # Server initialization
│ │ ├── config.py # Configuration management
│ │ ├── client/ # XSIAM API client
│ │ └── modules/ # Tool modules
│ ├── resources/ # XQL docs and examples
│ ├── Dockerfile # Container build
│ └── README.md # Standalone docs
│
├── xsiam/ # XSIAM integration
│ ├── integration.py # Integration code
│ ├── integration.yml # XSIAM metadata
│ └── Dockerfile # Container for XSIAM
│
├── LICENSE # MIT License
└── README.md # This file
- Issues: GitHub Issues
- Documentation: Standalone README
- XSIAM Docs: Cortex XSIAM Documentation