42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
"""Interface monitoring tools."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from mcp.server.fastmcp import FastMCP
|
|
|
|
from cisco_switch_mcp.client import run_show_command
|
|
from cisco_switch_mcp.guards import validate_interface
|
|
|
|
|
|
def register(mcp: FastMCP) -> None:
|
|
@mcp.tool()
|
|
def cisco_switch_show_interfaces_status() -> str:
|
|
"""Get brief interface status (port, VLAN, speed, duplex, status)."""
|
|
return run_show_command("show interfaces status")
|
|
|
|
@mcp.tool()
|
|
def cisco_switch_show_interfaces_description() -> str:
|
|
"""Get interface descriptions."""
|
|
return run_show_command("show interfaces description")
|
|
|
|
@mcp.tool()
|
|
def cisco_switch_show_interface(interface: str) -> str:
|
|
"""Get detailed statistics for one interface (e.g. GigabitEthernet1/0/1)."""
|
|
iface = validate_interface(interface)
|
|
return run_show_command(f"show interfaces {iface}")
|
|
|
|
@mcp.tool()
|
|
def cisco_switch_show_interfaces_counters() -> str:
|
|
"""Get interface error and packet counters."""
|
|
return run_show_command("show interfaces counters errors")
|
|
|
|
@mcp.tool()
|
|
def cisco_switch_show_port_channel_summary() -> str:
|
|
"""Get EtherChannel / port-channel summary."""
|
|
return run_show_command("show etherchannel summary")
|
|
|
|
@mcp.tool()
|
|
def cisco_switch_show_ip_interface_brief() -> str:
|
|
"""Get L3 interface IP summary (SVIs and routed ports)."""
|
|
return run_show_command("show ip interface brief")
|