Skip to main content
Glama
vandreus

UniFi MCP Server

by vandreus

get_system_status

Retrieve current operational status and health metrics for UniFi network infrastructure to monitor performance and identify issues.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • MCP tool handler for 'get_system_status' which fetches the system status using the unifi client and returns it as formatted JSON in text content.
    handler: async () => {
      const status = await unifi.getSystemStatus();
      return {
        content: [{ type: 'text', text: JSON.stringify(status, null, 2) }]
      };
    }
  • Input schema for the 'get_system_status' tool, accepting no parameters.
    schema: z.object({}),
  • src/server.js:28-28 (registration)
    Registers the networkTools module containing the 'get_system_status' tool to the MCP server.
    registerToolsFromModule(networkTools);
  • Helper function getSystemStatus() that implements the core logic: aggregates comprehensive status data (hosts, sites, devices, clients) from UniFi Cloud API endpoints.
    export async function getSystemStatus() {
      const status = {
        timestamp: new Date().toISOString(),
        hosts: [],
        summary: {
          totalHosts: 0,
          totalSites: 0,
          totalDevices: 0,
          totalClients: 0,
          onlineDevices: 0,
          offlineDevices: 0
        }
      };
    
      try {
        const hostsResponse = await listHosts();
        const hosts = hostsResponse.data || [];
        status.summary.totalHosts = hosts.length;
    
        for (const host of hosts) {
          const hostStatus = {
            id: host.id,
            name: host.name || host.hostname,
            type: host.type,
            status: host.status,
            sites: [],
            deviceCount: 0,
            clientCount: 0
          };
    
          try {
            const sitesResponse = await getSitesForHost(host.id);
            const sites = sitesResponse.data || [];
            status.summary.totalSites += sites.length;
    
            for (const site of sites) {
              hostStatus.sites.push({
                id: site.id,
                name: site.name
              });
            }
          } catch (e) {
            // Site fetch may fail for some hosts
          }
    
          try {
            const devicesResponse = await getDevicesForHost(host.id);
            const devices = devicesResponse.data || [];
            hostStatus.deviceCount = devices.length;
            status.summary.totalDevices += devices.length;
    
            for (const device of devices) {
              if (device.state === 'ONLINE' || device.state === 1) {
                status.summary.onlineDevices++;
              } else {
                status.summary.offlineDevices++;
              }
            }
          } catch (e) {
            // Device fetch may fail
          }
    
          try {
            const clientsResponse = await getClientsForHost(host.id);
            const clients = clientsResponse.data || [];
            hostStatus.clientCount = clients.length;
            status.summary.totalClients += clients.length;
          } catch (e) {
            // Client fetch may fail
          }
    
          status.hosts.push(hostStatus);
        }
    
        status.ok = true;
      } catch (error) {
        status.ok = false;
        status.error = error.message;
      }
    
      return status;
    }

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/vandreus/Unifi-MCP'

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