Cisco FMC Firewall Operations
MCP Server
- Repository: CiscoDevNet/CiscoFMC-MCP-server-community
- Transport: HTTP (
http://<host>:8000/mcp) — requires HTTPS reverse proxy for production
- Install:
git clone + pip install -r requirements.txt + python -m sfw_mcp_fmc.server (or Docker)
- Requires:
FMC_BASE_URL, FMC_USERNAME, FMC_PASSWORD
Available Tools (4)
| Tool |
What It Does |
list_fmc_profiles |
Discover all configured FMC instances (single or multi-FMC mode). Returns profile IDs, display names, and aliases. Use this first to select which FMC to query. |
find_rules_by_ip_or_fqdn |
Search rules within a specific access policy by IP address or FQDN. Matches source/destination network objects against the given indicator. |
find_rules_for_target |
Resolve FTD devices or HA clusters to their assigned access policies, then search those policies. Use when you know the firewall device name but not the policy name. |
search_access_rules |
FMC-wide rule search with multiple filter types: network indicators (IP, FQDN), identity indicators (SGT tags, realm users/groups), and policy name filters. The most powerful search tool. |
Key Concepts
| Concept |
What It Means |
| FMC |
Firepower Management Center — centralized management for Cisco Secure Firewalls (FTD) |
| FTD |
Firepower Threat Defense — the firewall appliance/virtual managed by FMC |
| Access Policy |
Collection of access rules (ACLs) applied to FTD devices — permit/deny by source/dest/port/app |
| Access Rule |
Individual rule within a policy — source zones, dest zones, source/dest networks, ports, action (allow/block/monitor) |
| SGT |
Security Group Tag — TrustSec identity-based tag for micro-segmentation |
| HA Cluster |
High Availability pair of FTD devices sharing the same policy |
| Profile |
FMC connection configuration (URL, credentials) — supports multi-FMC environments |
Workflow: Firewall Rule Audit
When a user asks "what firewall rules exist for 10.1.1.0/24?":
- Discover FMCs:
list_fmc_profiles — identify which FMCs manage this network
- Search rules:
search_access_rules with network indicator 10.1.1.0/24
- For each match: Extract rule name, action (allow/block), source/dest zones, source/dest networks, ports, logging settings
- Cross-reference: Check if rules are overly permissive (any/any), redundant, or shadowed
- Report: Formatted rule table with security assessment
Workflow: "Can Host A Reach Host B?"
When investigating connectivity through the firewall:
- Identify FTD: Which firewall sits between source and destination?
- Resolve policy:
find_rules_for_target with the FTD device name
- Search source IP:
find_rules_by_ip_or_fqdn for the source IP in the resolved policy
- Search dest IP: Same for destination IP
- Analyze: Do the matching rules permit the required port/protocol?
- Report: "Traffic from 10.1.1.50 to 10.2.1.100:443 is ALLOWED by rule 'Web-Servers-Inbound' (line 47)" or "BLOCKED by implicit deny"
Workflow: Security Group Tag (SGT) Policy Review
When auditing TrustSec/SGT-based policies:
- Search by SGT:
search_access_rules with identity indicator for a specific SGT value
- List matching rules: Which rules reference this SGT in source or destination?
- Check actions: Are SGT-based rules enforcing proper segmentation?
- Cross-reference: Use
ise-posture-audit to verify SGT assignment policies in ISE
- Report: SGT policy coverage analysis
Workflow: Multi-FMC Environment Audit
When managing multiple FMC instances:
- List all FMCs:
list_fmc_profiles — see all managed FMC instances
- For each FMC:
search_access_rules with common indicators
- Compare policies: Are policies consistent across FMCs?
- Identify drift: Rules present in one FMC but not another
- Report: Cross-FMC policy consistency analysis
Integration with Other Skills
| Skill |
How They Work Together |
pyats-security |
FMC rule audit + device-level ACL verification via pyATS |
ise-posture-audit |
FMC SGT rules + ISE SGT assignment and TrustSec matrix |
ise-incident-response |
FMC rules for quarantine verification + ISE endpoint investigation |
aws-security-audit |
Cross-platform security: FMC on-prem + AWS cloud security posture |
gcp-cloud-logging |
FMC firewall logs vs GCP firewall logs for hybrid environments |
nso-device-ops |
FMC policies + NSO device config for end-to-end policy view |
servicenow-change-workflow |
ServiceNow CR gating before any FMC policy modifications |
github-ops |
Commit FMC rule snapshots to Git for config-as-code tracking |
Multi-FMC Configuration
Single FMC mode (set in .env):
FMC_BASE_URL=https://fmc.example.com
FMC_USERNAME=api-user
FMC_PASSWORD=changeme
FMC_VERIFY_SSL=false
Multi-FMC mode (profile directory):
profiles/
dc-east.env # FMC for DC East
dc-west.env # FMC for DC West
dmz.env # FMC for DMZ firewalls
Each profile .env contains:
FMC_PROFILE_ID=dc-east
FMC_PROFILE_DISPLAY_NAME=DC East FMC
FMC_PROFILE_ALIASES=10.1.1.10,fmc-east
FMC_BASE_URL=https://fmc-east.example.com
FMC_USERNAME=api-user
FMC_PASSWORD=changeme
FMC_VERIFY_SSL=false
Important Rules
- Read-only — all 4 tools are search/query operations; no rule modifications
- HTTP transport — server runs on port 8000, front with HTTPS proxy for production
- Multi-FMC — always call
list_fmc_profiles first to select the right FMC instance
- FMC API rate limits — FMC REST API has per-user rate limits; avoid rapid-fire queries
- Record in GAIT — log all firewall policy investigations for audit trail
Environment Variables
FMC_BASE_URL — FMC URL (e.g., https://fmc.example.com)
FMC_USERNAME — FMC API username
FMC_PASSWORD — FMC API password
FMC_VERIFY_SSL — SSL verification (true/false)
FMC_PROFILES_DIR — path to multi-FMC profiles directory (optional)
FMC_PROFILE_DEFAULT — default profile name (optional)
1---2name: fmc-firewall-ops3description: Cisco Secure Firewall FMC — access policy search, rule inspection, FTD device targeting, multi-FMC profile management. Use when searching firewall rules by IP or FQDN, checking if host A can reach host B through the firewall, auditing FMC access policies, or reviewing SGT-based segmentation rules.4license: Apache-2.05---6
7# Cisco FMC Firewall Operations
8
9## MCP Server
10
11- **Repository**: [CiscoDevNet/CiscoFMC-MCP-server-community](https://github.com/CiscoDevNet/CiscoFMC-MCP-server-community)
12- **Transport**: HTTP (`http://<host>:8000/mcp`) — requires HTTPS reverse proxy for production
13- **Install**: `git clone` + `pip install -r requirements.txt` + `python -m sfw_mcp_fmc.server` (or Docker)
14- **Requires**: `FMC_BASE_URL`, `FMC_USERNAME`, `FMC_PASSWORD`
15
16## Available Tools (4)
17
18| Tool | What It Does |
19|------|-------------|
20| `list_fmc_profiles` | Discover all configured FMC instances (single or multi-FMC mode). Returns profile IDs, display names, and aliases. Use this first to select which FMC to query. |
21| `find_rules_by_ip_or_fqdn` | Search rules within a specific access policy by IP address or FQDN. Matches source/destination network objects against the given indicator. |
22| `find_rules_for_target` | Resolve FTD devices or HA clusters to their assigned access policies, then search those policies. Use when you know the firewall device name but not the policy name. |
23| `search_access_rules` | FMC-wide rule search with multiple filter types: network indicators (IP, FQDN), identity indicators (SGT tags, realm users/groups), and policy name filters. The most powerful search tool. |
24
25## Key Concepts
26
27| Concept | What It Means |
28|---------|---------------|
29| **FMC** | Firepower Management Center — centralized management for Cisco Secure Firewalls (FTD) |
30| **FTD** | Firepower Threat Defense — the firewall appliance/virtual managed by FMC |
31| **Access Policy** | Collection of access rules (ACLs) applied to FTD devices — permit/deny by source/dest/port/app |
32| **Access Rule** | Individual rule within a policy — source zones, dest zones, source/dest networks, ports, action (allow/block/monitor) |
33| **SGT** | Security Group Tag — TrustSec identity-based tag for micro-segmentation |
34| **HA Cluster** | High Availability pair of FTD devices sharing the same policy |
35| **Profile** | FMC connection configuration (URL, credentials) — supports multi-FMC environments |
36
37## Workflow: Firewall Rule Audit
38
39When a user asks "what firewall rules exist for 10.1.1.0/24?":
40
411. **Discover FMCs**: `list_fmc_profiles` — identify which FMCs manage this network
422. **Search rules**: `search_access_rules` with network indicator `10.1.1.0/24`
433. **For each match**: Extract rule name, action (allow/block), source/dest zones, source/dest networks, ports, logging settings
444. **Cross-reference**: Check if rules are overly permissive (any/any), redundant, or shadowed
455. **Report**: Formatted rule table with security assessment
46
47## Workflow: "Can Host A Reach Host B?"
48
49When investigating connectivity through the firewall:
50
511. **Identify FTD**: Which firewall sits between source and destination?
522. **Resolve policy**: `find_rules_for_target` with the FTD device name
533. **Search source IP**: `find_rules_by_ip_or_fqdn` for the source IP in the resolved policy
544. **Search dest IP**: Same for destination IP
555. **Analyze**: Do the matching rules permit the required port/protocol?
566. **Report**: "Traffic from 10.1.1.50 to 10.2.1.100:443 is ALLOWED by rule 'Web-Servers-Inbound' (line 47)" or "BLOCKED by implicit deny"
57
58## Workflow: Security Group Tag (SGT) Policy Review
59
60When auditing TrustSec/SGT-based policies:
61
621. **Search by SGT**: `search_access_rules` with identity indicator for a specific SGT value
632. **List matching rules**: Which rules reference this SGT in source or destination?
643. **Check actions**: Are SGT-based rules enforcing proper segmentation?
654. **Cross-reference**: Use `ise-posture-audit` to verify SGT assignment policies in ISE
665. **Report**: SGT policy coverage analysis
67
68## Workflow: Multi-FMC Environment Audit
69
70When managing multiple FMC instances:
71
721. **List all FMCs**: `list_fmc_profiles` — see all managed FMC instances
732. **For each FMC**: `search_access_rules` with common indicators
743. **Compare policies**: Are policies consistent across FMCs?
754. **Identify drift**: Rules present in one FMC but not another
765. **Report**: Cross-FMC policy consistency analysis
77
78## Integration with Other Skills
79
80| Skill | How They Work Together |
81|-------|----------------------|
82| `pyats-security` | FMC rule audit + device-level ACL verification via pyATS |
83| `ise-posture-audit` | FMC SGT rules + ISE SGT assignment and TrustSec matrix |
84| `ise-incident-response` | FMC rules for quarantine verification + ISE endpoint investigation |
85| `aws-security-audit` | Cross-platform security: FMC on-prem + AWS cloud security posture |
86| `gcp-cloud-logging` | FMC firewall logs vs GCP firewall logs for hybrid environments |
87| `nso-device-ops` | FMC policies + NSO device config for end-to-end policy view |
88| `servicenow-change-workflow` | ServiceNow CR gating before any FMC policy modifications |
89| `github-ops` | Commit FMC rule snapshots to Git for config-as-code tracking |
90
91## Multi-FMC Configuration
92
93Single FMC mode (set in `.env`):
94```
95FMC_BASE_URL=https://fmc.example.com
96FMC_USERNAME=api-user
97FMC_PASSWORD=changeme
98FMC_VERIFY_SSL=false
99```
100
101Multi-FMC mode (profile directory):
102```
103profiles/
104 dc-east.env # FMC for DC East
105 dc-west.env # FMC for DC West
106 dmz.env # FMC for DMZ firewalls
107```
108
109Each profile `.env` contains:
110```
111FMC_PROFILE_ID=dc-east
112FMC_PROFILE_DISPLAY_NAME=DC East FMC
113FMC_PROFILE_ALIASES=10.1.1.10,fmc-east
114FMC_BASE_URL=https://fmc-east.example.com
115FMC_USERNAME=api-user
116FMC_PASSWORD=changeme
117FMC_VERIFY_SSL=false
118```
119
120## Important Rules
121
122- **Read-only** — all 4 tools are search/query operations; no rule modifications
123- **HTTP transport** — server runs on port 8000, front with HTTPS proxy for production
124- **Multi-FMC** — always call `list_fmc_profiles` first to select the right FMC instance
125- **FMC API rate limits** — FMC REST API has per-user rate limits; avoid rapid-fire queries
126- **Record in GAIT** — log all firewall policy investigations for audit trail
127
128## Environment Variables
129
130- `FMC_BASE_URL` — FMC URL (e.g., `https://fmc.example.com`)
131- `FMC_USERNAME` — FMC API username
132- `FMC_PASSWORD` — FMC API password
133- `FMC_VERIFY_SSL` — SSL verification (true/false)
134- `FMC_PROFILES_DIR` — path to multi-FMC profiles directory (optional)
135- `FMC_PROFILE_DEFAULT` — default profile name (optional)