Lancontrol

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 3, 2026

UniFi controller: clients, devices, WLANs, health, alarms, events, sysinfo, identity.

VerifiedSTDIODesktop only

Overview

Lancontrol's local MCP server; no sign-in required; STDIO.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open Lancontrol in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

lancontrol

lancontrol reads UniFi Network controller state through a single action-router tool: connected clients, network devices, WLAN configurations, site health, active alarms, recent events, controller sysinfo, and the authenticated identity. One binary serves a command-line interface and a stdio MCP server.

This is a labelled core subset. The upstream surface defines 267 actions in total; lancontrol builds only the 8 preserved convenience actions plus help (9 action values). The generated families are omitted, on purpose and by name: official_* (78 actions), unifi_* (175 actions), and the 5 hybrid aliases (list_clients, list_devices, list_networks, list_wifi, get_system_info).

Configuration

Both variables are required for every action except help; a missing value errors before any request is made:

VariableRequiredPurpose
UNIFI_URLyesController base URL, e.g. https://unifi.local.
UNIFI_API_KEYyesAPI key, sent as the X-API-KEY header.
UNIFI_SITEnoUniFi site name. Defaults to default.

Never pass the API key as a tool argument; it is read from the environment only.

Install

bash
npx @reneturcios/lancontrol help

Or run the container image:

bash
docker run -i ghcr.io/cloudcorprecords/lancontrol

The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.

CLI

bash
lancontrol clientslancontrol deviceslancontrol wlanslancontrol healthlancontrol alarmslancontrol events --limit 25lancontrol sysinfolancontrol melancontrol help
lancontrol --version

Action commands print the upstream JSON payload. help prints the local action documentation and needs no configuration and no network. Exit codes: 0 on success, 1 when a call fails (including a missing-config or upstream API error), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

bash
npx -y @reneturcios/lancontrol mcp

MCP client configuration:

json
{  "mcpServers": {    "lancontrol": {      "command": "npx",      "args": ["-y", "@reneturcios/lancontrol", "mcp"],      "env": {        "UNIFI_URL": "https://unifi.local",        "UNIFI_API_KEY": "...",        "UNIFI_SITE": "default"      }    }  }}

Tool

One tool is exposed:

ToolInputWhat it returns
unifiaction (required, one of the 9 subset values), limit (optional integer, events only)The upstream payload for the chosen action, or local documentation for help.
ActionDescription
clientsConnected wireless and wired clients.
devicesNetwork devices: APs, switches, gateways.
wlansWiFi network configurations.
healthSite health summary.
alarmsActive alarms and alerts.
eventsRecent controller events.
sysinfoController system information.
meAuthenticated UniFi identity.
helpBuilt-in action documentation.

Upstream mapping (documented reconstruction)

The public spec names the actions but does not publish, in its convenience-action table, the exact controller path for each one. Each action is therefore implemented as a GET to a plausible documented UniFi internal endpoint under UNIFI_URL, with the X-API-KEY header:

ActionEndpoint
clientsGET /proxy/network/api/s/{site}/stat/sta
devicesGET /proxy/network/api/s/{site}/stat/device
wlansGET /proxy/network/api/s/{site}/rest/wlanconf
healthGET /proxy/network/api/s/{site}/stat/health
alarmsGET /proxy/network/api/s/{site}/stat/alarm
eventsGET /proxy/network/api/s/{site}/stat/event (plus ?_limit={limit} when a limit is supplied)
sysinfoGET /proxy/network/api/s/{site}/stat/sysinfo
meGET /proxy/network/api/self
helpno request — answered locally

HTTP failures surface the status plus the upstream message (meta.msg, message, or error) when present.

Development

bash
npm installnpm run build   # tsc -> dist/npm test        # node test runner over test/*.test.ts, no network (fake fetch fixtures)npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Source: README.md at commit b4b926c

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestNov 3, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts