MCP Hub
Back to servers

Cisco FMC MCP Server

A read-only Model Context Protocol server for Cisco Firepower Management Center (FMC) that allows LLMs to query firewall configurations, network objects, and deployment status via natural language.

Tools
2
Updated
Dec 11, 2025

MCP Server for Cisco FMC

A read-only Model Context Protocol (MCP) server for Cisco Firepower Management Center (FMC) 7.4.x.

This server allows LLMs like Claude to query your firewall configuration, search for network objects, and check deployment status—all through natural language.

Features

  • Read-Only Access: Safe exploration of FMC configuration without modification risk
  • Rate Limiting: Built-in token bucket rate limiter (120 req/min, 10 concurrent connections)
  • Automatic Token Refresh: Handles FMC's 30-minute token expiration and 3-refresh limit
  • Transparent Pagination: Automatically fetches all pages from large datasets

MCP Resources

ResourceDescription
fmc://system/infoFMC server version and system information
fmc://devices/listList of all managed firewall devices
fmc://objects/networkAll network objects (IPs, subnets)
fmc://deployment/statusDevices with pending changes

MCP Tools

ToolDescription
search_object_by_ipFind network objects containing a specific IP
get_deployment_statusCheck if devices are in sync

Installation

Prerequisites

  • Python 3.10+
  • uv (recommended) or pip
  • Access to a Cisco FMC 7.4.x instance

Using uv (Recommended)

# Clone the repository
git clone https://github.com/your-org/fmc-mcp.git
cd fmc-mcp

# Install dependencies
uv sync

Using pip

pip install -e .

Configuration

  1. Copy the example configuration:
cp .env.example .env
  1. Edit .env with your FMC credentials:
FMC_HOST=fmc.example.com
FMC_USERNAME=api_user
FMC_PASSWORD=your_password_here

Configuration Options

VariableRequiredDefaultDescription
FMC_HOSTYes-FMC hostname or IP
FMC_USERNAMEYes-API username
FMC_PASSWORDYes-API password
FMC_VERIFY_SSLNofalseSSL certificate verification
FMC_DOMAIN_UUIDNoautoDomain UUID (auto-discovered)
FMC_TIMEOUTNo60Request timeout in seconds

Usage

Running the Server

# Using uv
uv run python -m fmc_mcp

# Or using the CLI entry point
uv run mcp-server-fmc

Testing Connection

uv run python -c "from fmc_mcp.client import FMCClient; import asyncio; asyncio.run(FMCClient().test_connection())"

Claude Desktop Integration

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "fmc": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/fmc-mcp", "python", "-m", "fmc_mcp"]
    }
  }
}

Then restart Claude Desktop and try:

  • "What version is my FMC running?"
  • "List all firewall devices"
  • "Find the network object for IP 10.10.10.5"
  • "Are there any pending deployments?"

MCP Inspector Testing

# Install MCP Inspector
npx @anthropic/mcp-inspector

# Run the server
uv run python -m fmc_mcp

Development

Running Tests

# Run all tests
uv run pytest -v

# Run with coverage
uv run pytest --cov=src/fmc_mcp --cov-report=term-missing

Code Quality

# Linting
uv run ruff check src/ tests/

# Type checking
uv run mypy src/

API Rate Limits

The FMC API has strict rate limits that this server respects:

LimitValueHow We Handle It
Requests per minute120Token bucket rate limiter
Concurrent connections10Connection semaphore
Token lifetime30 minAuto-refresh on 401
Max token refreshes3Full re-authentication after 3

The server logs warnings when approaching rate limits:

  • WARNING when token bucket drops below 20%
  • ERROR on 429 (rate limited) responses

Security Notes

  • Read-Only: This server only performs GET requests
  • SSL: Disabled by default for lab environments; enable in production
  • Credentials: Store in .env, never commit to version control
  • API User: Create a dedicated read-only API user in FMC

License

Apache 2.0

Reviews

No reviews yet

Sign in to write a review