Skip to main content
Glama
nntkio

UniFi MCP Server

by nntkio

block_client

Block network access for a specific device by its MAC address to restrict unauthorized connections.

Instructions

Block a client from accessing the network

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
macYesMAC address of the client to block

Implementation Reference

  • The execution logic for the block_client tool within the unified call_tool handler.
    case "block_client":
        mac = arguments.get("mac", "")
        await client.block_client(mac)
        return [
            TextContent(
                type="text",
                text=f"Client {mac} has been blocked from the network.",
            )
        ]
  • Input schema and metadata for the block_client tool, defined in list_tools().
    Tool(
        name="block_client",
        description="Block a client from accessing the network",
        inputSchema={
            "type": "object",
            "properties": {
                "mac": {
                    "type": "string",
                    "description": "MAC address of the client to block",
                }
            },
            "required": ["mac"],
        },
    ),
  • Decorators registering the tool list and call handlers for all tools including block_client.
    @server.list_tools()
    async def list_tools() -> list[Tool]:
        """List all available UniFi MCP tools."""
        return [
            # Device tools
            Tool(
                name="get_devices",
                description="Get all UniFi network devices (access points, switches, gateways)",
                inputSchema={
                    "type": "object",
                    "properties": {},
                    "required": [],
                },
            ),
            Tool(
                name="restart_device",
                description="Restart a UniFi network device by its MAC address",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "mac": {
                            "type": "string",
                            "description": "MAC address of the device to restart (e.g., '00:11:22:33:44:55')",
                        }
                    },
                    "required": ["mac"],
                },
            ),
            # Client tools
            Tool(
                name="get_clients",
                description="Get all currently connected clients on the UniFi network",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "include_offline": {
                            "type": "boolean",
                            "description": "Include offline/historical clients",
                            "default": False,
                        }
                    },
                    "required": [],
                },
            ),
            Tool(
                name="block_client",
                description="Block a client from accessing the network",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "mac": {
                            "type": "string",
                            "description": "MAC address of the client to block",
                        }
                    },
                    "required": ["mac"],
                },
            ),
            Tool(
                name="unblock_client",
                description="Unblock a previously blocked client",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "mac": {
                            "type": "string",
                            "description": "MAC address of the client to unblock",
                        }
                    },
                    "required": ["mac"],
                },
            ),
            Tool(
                name="disconnect_client",
                description="Force disconnect a client from the network",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "mac": {
                            "type": "string",
                            "description": "MAC address of the client to disconnect",
                        }
                    },
                    "required": ["mac"],
                },
            ),
            # Site tools
            Tool(
                name="get_sites",
                description="Get all UniFi sites configured on the controller",
                inputSchema={
                    "type": "object",
                    "properties": {},
                    "required": [],
                },
            ),
            Tool(
                name="get_site_health",
                description="Get health status for the current site",
                inputSchema={
                    "type": "object",
                    "properties": {},
                    "required": [],
                },
            ),
            Tool(
                name="get_networks",
                description="Get all network configurations for the current site",
                inputSchema={
                    "type": "object",
                    "properties": {},
                    "required": [],
                },
            ),
            # Activity tools
            Tool(
                name="get_device_activity",
                description="Get activity for a specific device including connected clients and their traffic",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "mac": {
                            "type": "string",
                            "description": "MAC address of the device (AP or switch)",
                        }
                    },
                    "required": ["mac"],
                },
            ),
        ]
    
    
    @server.call_tool()
    async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]:
  • Underlying UniFiClient method that performs the actual API call to block the client.
    async def block_client(self, mac: str) -> bool:
        """Block a client from the network.
    
        Args:
            mac: Client MAC address.
    
        Returns:
            True if block command was sent successfully.
        """
        await self._request(
            "POST",
            "/api/s/{site}/cmd/stamgr",
            json={"cmd": "block-sta", "mac": mac.lower()},
        )
        return True

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/nntkio/unifiMCP'

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