Cisco Catalyst Center MCP Server
A Model Context Protocol (MCP) server for Cisco Catalyst Center, providing network management capabilities through structured tools.
Features
This MCP server provides focused, high-value tools for Cisco Catalyst Center:
Network Monitoring
get_client_counts- Get counts of wired and wireless clients connected to the networkget_network_devices- Query network device inventory with flexible filteringget_network_health- Get overall network health by device categoryget_site_health- Get health information for sites (areas and buildings)get_client_detail- Get detailed information about a specific client by MAC address
Issues & Assurance
get_issues- Retrieve network issues with filtering by priority, status, and more
Compliance & Lifecycle Management
get_compliance_detail- Get detailed compliance status for devices (EOX, IMAGE, PSIRT, etc.)get_compliance_count- Get aggregate count of devices by compliance criteriaget_eox_summary- Get network-wide End-of-Life/End-of-Support summaryget_eox_devices- Get EoX status for all devices in the networkget_eox_device_details- Get detailed EoX bulletins for a specific device
Prerequisites
- Python 3.10 or higher
- Cisco Catalyst Center instance (v2.3.7.9 or compatible)
- Valid Catalyst Center credentials with API access
Installation
Using uv (Recommended)
- Install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
Clone this repository or download the source code
Initialize and install dependencies:
cd catalyst-center-mcp
uv sync
- Create a
.envfile from the example:
cp .env.example .env
- Edit
.envwith your Catalyst Center credentials:
CATALYST_CENTER_URL=https://your-catalyst-center.example.com
CATALYST_CENTER_USERNAME=your_username
CATALYST_CENTER_PASSWORD=your_password
CATALYST_CENTER_VERIFY_SSL=true
Usage
Running the MCP Server
Start the server in development mode:
uv run mcp dev src/server.py
Or run directly:
uv run src/server.py
The server will start and be available for MCP clients to connect to via stdio transport.
Using with Claude Desktop
Add this server to your Claude Desktop configuration file:
Option 1: Using environment variables directly
{
"mcpServers": {
"catalyst-center": {
"command": "uv",
"args": ["run", "src/server.py"],
"cwd": "/path/to/catalyst-center-mcp",
"env": {
"CATALYST_CENTER_URL": "https://your-catalyst-center.example.com",
"CATALYST_CENTER_USERNAME": "your_username",
"CATALYST_CENTER_PASSWORD": "your_password",
"CATALYST_CENTER_VERIFY_SSL": "true"
}
}
}
}
Option 2: Using .env file (recommended)
Create a .env file in the project directory with your credentials, then:
{
"mcpServers": {
"catalyst-center": {
"command": "uv",
"args": ["run", "src/server.py"],
"cwd": "/path/to/catalyst-center-mcp"
}
}
}
Tool Examples
Get Client Counts
# Get current wired and wireless client counts
result = await get_client_counts()
# Returns: {"wired_count": 150, "wireless_count": 75, "total_count": 225, "timestamp": "current"}
Get Network Devices
# Get all devices
devices = await get_network_devices()
# Filter by hostname
devices = await get_network_devices(hostname="switch.*")
# Filter by device family
devices = await get_network_devices(device_family="Switches and Hubs", limit=50)
Get Network Health
# Get current network health by device category
health = await get_network_health()
# Returns health scores for Access, Distribution, Core, Router, and Wireless devices
Get Issues
# Get all active P1 issues
issues = await get_issues(priority="P1", issue_status="ACTIVE")
# Get issues for a specific site
issues = await get_issues(site_id="site-uuid-here")
# Get AI-driven issues
issues = await get_issues(ai_driven="YES")
Get Site Health
# Get health for all sites
sites = await get_site_health()
# Get only building sites
sites = await get_site_health(site_type="BUILDING")
Get Client Detail
# Get detailed info for a specific client
client = await get_client_detail(mac_address="00:11:22:33:44:55")
Get Compliance Detail
# Get all non-compliant devices
compliance = await get_compliance_detail(compliance_status="NON_COMPLIANT")
# Get EOX compliance status for specific devices
compliance = await get_compliance_detail(
compliance_type="EOX",
device_uuid="device-uuid-1,device-uuid-2"
)
# Get PSIRT (security advisory) compliance
compliance = await get_compliance_detail(compliance_type="PSIRT", limit=100)
Get Compliance Count
# Count all non-compliant devices
count =
Tools 11
get_client_countsGet counts of wired and wireless clients connected to the networkget_network_devicesQuery network device inventory with flexible filteringget_network_healthGet overall network health by device categoryget_site_healthGet health information for sitesget_client_detailGet detailed information about a specific client by MAC addressget_issuesRetrieve network issues with filtering by priority, status, and moreget_compliance_detailGet detailed compliance status for devicesget_compliance_countGet aggregate count of devices by compliance criteriaget_eox_summaryGet network-wide End-of-Life/End-of-Support summaryget_eox_devicesGet EoX status for all devices in the networkget_eox_device_detailsGet detailed EoX bulletins for a specific deviceEnvironment Variables
CATALYST_CENTER_URLrequiredThe URL of your Cisco Catalyst Center instanceCATALYST_CENTER_USERNAMErequiredUsername for API accessCATALYST_CENTER_PASSWORDrequiredPassword for API accessCATALYST_CENTER_VERIFY_SSLWhether to verify SSL certificates