A comprehensive MCP server for configuring and managing Cisco ACI (Application Centric Infrastructure) fabrics through the APIC REST API.
ACI Model Context Protocol (MCP) Server
A comprehensive MCP server for configuring and managing Cisco ACI (Application Centric Infrastructure) fabrics through the APIC REST API.
Overview
This MCP server provides 35+ tools for complete ACI fabric management, including:
- Tenant Management: Create, list, get, update, and delete tenants
- Application Profiles: Manage application profiles within tenants
- Endpoint Groups (EPGs): Configure and manage endpoint groups
- Bridge Domains: Create and manage Layer 2 domains
- VRFs: Manage Virtual Routing and Forwarding instances
- Contracts: Define and manage security policies
- Health Monitoring: Monitor fabric health and faults
- Node Management: Manage fabric nodes and interfaces
Installation
Prerequisites
- Node.js 18+ and npm
- Access to a Cisco APIC controller
- Valid APIC credentials (username/password or certificate)
Setup
-
Clone and Install:
cd aci-mcp-server npm install -
Configure Authentication:
Option A: Environment Variables
cp .env.example .env # Edit .env with your APIC details export ACI_APIC_URL="https://your-apic.domain.com" export ACI_USERNAME="admin" export ACI_PASSWORD="your_password"Option B: Configuration Files
cp aci-config.json.example aci-config.json # Edit aci-config.json with your settingsOption C: Certificate Authentication
export ACI_APIC_URL="https://your-apic.domain.com" export ACI_USERNAME="admin" export ACI_CERT_NAME="your-cert-name" export ACI_PRIVATE_KEY_PATH="/path/to/private.key" -
Build the Server:
npm run build -
Test Connection:
npm start # Should connect to APIC and display available tools
Configuration
Authentication Methods
The server supports two authentication methods:
- Username/Password: Standard APIC login
- Certificate: X.509 certificate-based authentication (recommended for production)
Tool Configuration
Configure which tools are available using aci-mcp-config.json:
{
"serverConfig": {
"name": "aci",
"toolSelectionMode": "whitelist",
"enableAllTools": false,
"tenantFocus": "production"
},
"toolConfiguration": {
"enabledTools": ["list_tenants", "get_fabric_health", ...],
"disabledTools": []
}
}
Tool Modes:
core: Essential tools (35 tools) - Defaultall: All available tools (50+ tools)
Environment Variable Configuration:
export ACI_TOOL_MODE=core # or 'all'
export ACI_TENANT_FOCUS=production # Focus on specific tenant
Available Tools
Tenant Management (5 tools)
list_tenants- List all tenantsget_tenant- Get specific tenant detailscreate_tenant- Create new tenantupdate_tenant- Update tenant configurationdelete_tenant- Delete tenant
Application Profile Management (5 tools)
list_application_profiles- List application profilesget_application_profile- Get specific application profilecreate_application_profile- Create new application profileupdate_application_profile- Update application profiledelete_application_profile- Delete application profile
Endpoint Group Management (6 tools)
list_endpoint_groups- List endpoint groupsget_endpoint_group- Get specific EPG detailscreate_endpoint_group- Create new EPGupdate_endpoint_group- Update EPG configurationdelete_endpoint_group- Delete EPGget_endpoint_group_stats- Get EPG statistics
Bridge Domain Management (5 tools)
list_bridge_domains- List bridge domainsget_bridge_domain- Get specific bridge domaincreate_bridge_domain- Create new bridge domainupdate_bridge_domain- Update bridge domaindelete_bridge_domain- Delete bridge domain
VRF Management (5 tools)
list_vrfs- List VRFsget_vrf- Get specific VRF detailscreate_vrf- Create new VRFupdate_vrf- Update VRF configurationdelete_vrf- Delete VRF
Contract Management (8 tools)
list_contracts- List contractsget_contract- Get contract detailscreate_contract- Create new contractupdate_contract- Update contractdelete_contract- Delete contractlist_filters- List filterscreate_filter- Create new filterdelete_filter- Delete filter
Health & Monitoring (8 tools)
get_fabric_health- Get overall fabric healthlist_faults- List fabric faultsget_fault_summary- Get fault summary by severitylist_nodes- List fabric nodesget_node_health- Get node health statuslist_interfaces- List fabric interfacesget_interface_stats- Get interface statisticsget_system_info- Get APIC system information