Skip to main content
Glama
RobertBergman

Cisco Catalyst Center (DNAC) MCP Server

example_usage.py5.54 kB
#!/usr/bin/env python3 """ Example usage of DNAC MCP Server functions This script demonstrates how to use the DNAC wireless client tools directly in Python without the MCP server. """ import os import json from dnac_mcp import query_wireless_clients, get_client_health, WirelessClientAgent from dnacentersdk import api def example_query_all_clients(): """Example: Query all wireless clients""" print("\n" + "="*80) print("Example 1: Query All Wireless Clients") print("="*80) result = query_wireless_clients( base_url=os.getenv("DNAC_BASE_URL", "https://dnac.example.com"), username=os.getenv("DNAC_USERNAME", "admin"), password=os.getenv("DNAC_PASSWORD", "password"), max_results=10, # Limit for demo verify=False # Use True in production ) print(f"\nTotal clients: {result['total_count']}") print(f"Fetched: {result['fetched_count']}") print(f"Exceeded limit: {result['exceeded_limit']}") if result['clients']: print(f"\nFirst client:") print(json.dumps(result['clients'][0], indent=2)) if result['guidance']: print(f"\n{result['guidance']}") def example_query_by_ssid(): """Example: Query clients on specific SSID""" print("\n" + "="*80) print("Example 2: Query Clients by SSID") print("="*80) result = query_wireless_clients( base_url=os.getenv("DNAC_BASE_URL"), username=os.getenv("DNAC_USERNAME"), password=os.getenv("DNAC_PASSWORD"), ssid="Corporate-WiFi", # Filter by SSID verify=False ) print(f"\nClients on 'Corporate-WiFi': {result['fetched_count']}") def example_query_by_site(): """Example: Query clients at specific site""" print("\n" + "="*80) print("Example 3: Query Clients by Site") print("="*80) # You would get site_id from DNAC sites API site_id = "abc-123-def-456" # Example site ID result = query_wireless_clients( base_url=os.getenv("DNAC_BASE_URL"), username=os.getenv("DNAC_USERNAME"), password=os.getenv("DNAC_PASSWORD"), site_id=site_id, verify=False ) print(f"\nClients at site {site_id}: {result['fetched_count']}") def example_get_client_health(): """Example: Get health info for specific client""" print("\n" + "="*80) print("Example 4: Get Client Health") print("="*80) mac_address = "AA:BB:CC:DD:EE:FF" # Example MAC result = get_client_health( base_url=os.getenv("DNAC_BASE_URL"), username=os.getenv("DNAC_USERNAME"), password=os.getenv("DNAC_PASSWORD"), mac_address=mac_address, verify=False ) if 'error' not in result: print(f"\nHealth for {mac_address}:") print(json.dumps(result['health'], indent=2)) else: print(f"\nError: {result['error']}") def example_using_agent_directly(): """Example: Using WirelessClientAgent directly""" print("\n" + "="*80) print("Example 5: Using WirelessClientAgent Directly") print("="*80) # Initialize DNAC client dnac = api.DNACenterAPI( base_url=os.getenv("DNAC_BASE_URL"), username=os.getenv("DNAC_USERNAME"), password=os.getenv("DNAC_PASSWORD"), verify=False ) # Create agent with custom settings agent = WirelessClientAgent( dnac_client=dnac, max_results=50, # Custom limit rate_limit_delay=0.3, # Custom rate limit debug=True # Enable debug logging ) # Query clients with specific filters result = agent.get_clients( ssid="Guest-WiFi", band="5GHz" ) print(f"\n5GHz clients on Guest-WiFi: {result['fetched_count']}") def example_error_handling(): """Example: Proper error handling""" print("\n" + "="*80) print("Example 6: Error Handling") print("="*80) result = query_wireless_clients( base_url="https://invalid.dnac.com", username="invalid", password="invalid", max_results=10, verify=False, debug=False # Disable debug for cleaner output ) if 'error' in result and result['error']: print(f"\n✗ Error occurred: {result['error']}") print(f"Total count: {result['total_count']}") print(f"Fetched count: {result['fetched_count']}") else: print(f"\n✓ Success! Found {result['fetched_count']} clients") def main(): """Run all examples""" print("\n" + "="*80) print("DNAC MCP Server - Usage Examples") print("="*80) print("\nIMPORTANT: Set these environment variables before running:") print(" export DNAC_BASE_URL='https://dnac.example.com'") print(" export DNAC_USERNAME='admin'") print(" export DNAC_PASSWORD='your-password'") print() # Check if credentials are set if not all([os.getenv("DNAC_BASE_URL"), os.getenv("DNAC_USERNAME"), os.getenv("DNAC_PASSWORD")]): print("⚠️ WARNING: DNAC credentials not set. Examples will use placeholder values.") print() try: # Run examples example_query_all_clients() example_query_by_ssid() example_query_by_site() example_get_client_health() example_using_agent_directly() example_error_handling() except Exception as e: print(f"\n❌ Error running examples: {e}") import traceback traceback.print_exc() print("\n" + "="*80) print("Examples completed!") print("="*80) if __name__ == "__main__": main()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RobertBergman/dnac-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server