mcpField
📡
📡 UniFi Network MCP Server

📡 UniFi Network MCP Server

本地服务
github.com/sirkirby云与基础设施959今天更新

关于 📡 UniFi Network MCP Server

UniFi Network MCP Server 属于用于管理 Ubiquiti UniFi 部署的一组 MCP 服务,分别面向 Network、Protect 和 Access 应用。除领域工具外,还提供可选的 Agent 插件和远程访问组件。

主要功能

  1. 01Network、Protect 和 Access 服务
  2. 02按应用领域提供 MCP 工具
  3. 03延迟或完整工具发现
  4. 04带引导配置的 Agent 插件
  5. 05用于远程访问的 Cloud Relay

适用场景

  1. 01通过 MCP 客户端查询或管理 UniFi 控制器
  2. 02按任务选择 Network、Protect 或 Access 工具
  3. 03通过 MCP 适配器暴露选定工具
  4. 04远程将 MCP 请求路由至本地服务

MCP 相关

Network、Protect 和 Access MCP 服务将各应用功能作为工具提供给 MCP 客户端,并支持标准发现和调用。Cloud Relay 可将远程 MCP 请求路由到已配置的本地服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"unifi-network": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"pull"
]
}
}
}
启动命令docker run -i --rm pull

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocipull

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

UniFi MCP

UniFi MCP — 面向 UniFi 基础设施的 AI Agent

利用 Agent 和智能 Agent 工作流管理你的 UniFi 部署。

PyPI - Network PyPI - Protect PyPI - Access PyPI - Relay PyPI - API Server npm - Worker License: MIT Python 3.13+

服务

服务状态工具软件包
Network稳定210unifi-network-mcp
Protect稳定63unifi-protect-mcp
Access稳定37unifi-access-mcp

插件

从 Claude Code、Codex 或 OpenClaw 市场安装这些插件;快速开始说明了具体方法。

插件提供内容
unifi-networkNetwork MCP 服务、其 Agent 技能和引导式设置
unifi-protectProtect MCP 服务、其 Agent 技能和引导式设置
unifi-accessAccess MCP 服务、其 Agent 技能和引导式设置
unifi-intelligence跨产品调查,同时使用 Network 和 Protect,并为每项结论提供引文。事件调查在本地运行;安全巡查和访客审计需要云端工作器。此插件需要 Network 和 Protect 插件

Agent 技能表列出了每个插件附带的所有技能。

选择集成方式

你正在构建的内容使用原因
AI 助手或其他现有 MCP 客户端Network、Protect 或 Access MCP 服务标准 MCP 发现、工具调用、权限和确认流程
自定义应用、自动化服务、代码执行运行时或 MCP 适配器unifi-api-server你的代码可控制调用顺序、数据关联、资源限制和审批流程
为 MCP 客户端提供远程访问Cloud Relay经过身份验证的远程 MCP 路由,无需直接暴露本地服务

MCP 适配器可以公开少量工具,并以 unifi-api-server 作为后端。这样一来,特定于应用的数据关联、分支、循环和 代码隔离就无需放入通用 MCP 服务中。

云中继

组件状态软件包
Relay SidecarBetaunifi-mcp-relay
Worker GatewayBetaunifi-mcp-worker(CLI)

云中继将托管在 Cloudflare 上的 Worker 网关与局域网中的 Relay sidecar 配对。Worker 提供经过身份验证的边缘 MCP 端点、Durable Object broker、多位置路由、令牌边界以及部署/管理 CLI。Relay sidecar 是本地 MCP HTTP 客户端和转发器:它通过 HTTP 发现已配置的本地 MCP 服务,并与 Worker 建立出站 WebSocket 连接。远程请求的路径为 MCP client → Worker gateway → outbound WebSocket → Relay sidecar → local MCP servers over HTTP;API 服务不在此路径中。只读工具支持基于注解的多位置扇出,而写入操作需要明确指定位置。使用 npm install -g unifi-mcp-worker && unifi-mcp-worker install 部署 Worker,然后参阅 Relay sidecar README,连接本地服务。

REST + GraphQL API

组件状态软件包
API ServerBetaunifi-api-server · GHCR 镜像

unifi-api-server 是一项独立的 HTTP 服务,供自定义应用、 自动化和适配器使用。它提供类型化 REST 资源、只读 GraphQL 查询、SSE 流、受范围限制的 API 密钥及管理功能,以及用于受支持控制器操作的 REST 操作 端点。它与 MCP 服务共享 unifi-core 管理器,但不会代理或依赖这些服务。

快速入门和部署模式请参阅 apps/api/README.md。

这是什么?

UniFi MCP 是一组 Model Context Protocol 服务,可让 AI 助手和自动化工具与 Ubiquiti UniFi 控制器交互。每个服务面向特定的 UniFi 应用(Network、Protect、Access),并将其功能作为 MCP 工具开放——可查询、可组合,且默认安全。

MCP HTTP 访问

MCP HTTP 未经身份验证,适用于可信的本地客户端。HTTP 默认处于禁用状态;启用后,软件包会绑定到 loopback 地址。Docker Compose 会在容器网络中启用它,并在主机 127.0.0.1 上发布 3000–3002 端口。远程访问请使用经过身份验证的 TLS 代理或 Cloud Relay,并禁止直接访问后端。请参阅传输安全模型和 HTTP 设置与迁移。

设置默认值用途
UNIFI_MCP_HTTP_ENABLEDfalse启用 HTTP 传输
UNIFI_MCP_HOST127.0.0.1绑定地址;Compose 在容器内明确使用 0.0.0.0
UNIFI_MCP_HTTP_FORCEfalse允许在容器 PID 1 之外使用 HTTP
UNIFI_MCP_ALLOWED_HOSTSlocalhost,127.0.0.1完整的受信 Host 标头列表;Compose 会另行添加所需的内部主机
UNIFI_MCP_ENABLE_DNS_REBINDING_PROTECTIONtrue验证 Host 标头,以防止 DNS 重绑定请求

MCP 发现

UniFi MCP 将标准 MCP 路径作为首选:支持该路径的客户端通过 tools/list 发现当前已注册的工具,并通过 tools/call 调用这些工具。默认的 lazy 模式会优先公开元工具,以缩小初始上下文;而 eager 模式会直接注册所有选定的领域工具,供偏好完整标准工具列表的客户端使用。

延迟加载元工具 — *_tool_index、*_execute、*_batch、*_batch_status,以及仅限延迟加载模式的 *_load_tools — 支持筛选发现、间接执行、批处理编排和可选的直接注册。这些工具独立于下文所述的协议版本响应兼容策略。请参阅 MCP 发现与延迟加载元工具,了解各模式的具体行为。

MCP 响应大小

对于已提供结构化输出的工具结果,默认响应模式为 adaptive。该模式根据 MCP 初始化时公布的规范日期型 protocolVersion 对每个请求进行分类,而非根据客户端的产品名称或应用版本进行分类。对于公布 MCP 2025-06-18 或更高版本的请求,content 中会包含简洁文本,structuredContent 中则完整提供一次结果;对于公布较早修订版(例如 2024-11-05 或 2025-03-26)的请求,或修订版元数据缺失或格式错误的请求,content 中仍会包含完整的兼容性 JSON。将 UNIFI_MCP_CONTENT_MODE=compat 设为强制使用这种重复的兼容格式,或将 UNIFI_MCP_CONTENT_MODE=compact 设为强制使用简洁文本加完整结构化结果,即使请求未经协商也是如此。对于任何仅从 content 获取完整结果的客户端,无论其公布的修订版为何,都请使用 compat。

延迟加载元工具仍然仅使用 content;它们不属于上文所述的 2025-06-18 之前协议类别。对于结构化的内部结果,*_execute 和 *_batch_status 会在 content 中提供一个规范化的 JSON 负载,而非嵌套的传输对;仅使用 content 的执行结果则保持不变。响应模式不会将这些元工具转换为使用 structuredContent。

UNIFI_NETWORK_MCP_CONTENT_MODE、UNIFI_PROTECT_MCP_CONTENT_MODE 和 UNIFI_ACCESS_MCP_CONTENT_MODE 可分别覆盖对应服务的全局设置。无论传输内容是否精简,Network 的 unifi_get_dashboard 默认使用 summary=true,而 unifi_list_rogue_aps 默认返回最多 100 条记录的摘要页面;如需完整的所选数据,请传入 summary=false。

快速开始

使用你的 Agent 安装

将以下代码块粘贴到你的编码 Agent 中。它会引导 Agent 使用规范的版本化设置指南,并限制它可以更改的内容:

Install UniFi MCP for me using the official instructions at:
https://github.com/sirkirby/unifi-mcp/blob/main/docs/agent-install.md

Before changing anything, identify my agent client and operating system, ask
whether I need Network, Protect, Access, or more than one, and show me the exact
commands and configuration files you plan to change. Wait for my confirmation.
Do not ask me to paste a password or API key into chat. Prefer an indirect
credential provider or the client's secure secret prompt. Keep mutation
permissions in confirm mode and explicitly deny create, update, and delete
unless I opt in. After setup, reload the client, verify the MCP connection and
tool list, and run one harmless read-only check.

该指南涵盖原生插件、按产品范围使用 npx skills add 安装、OpenCode 内置的 MCP 支持,以及 Antigravity、Cursor 和 Devin Desktop 当前的手动安装方式。安装 skills 会添加 Agent 指南,但不会自行注册 MCP 服务。

请参阅更新日志,了解各个插件版本的变更;更新现有安装前,请参阅插件升级指南。

Claude Code(推荐)

通过插件市场安装——包含 MCP 服务、Agent 技能和引导式设置:

/plugin marketplace add sirkirby/unifi-mcp
/plugin install unifi-network@unifi-plugins
/unifi-network:unifi-network-setup

如有需要,可对 Protect 或 Access 重复此操作:

/plugin install unifi-protect@unifi-plugins
/plugin install unifi-access@unifi-plugins

对于跨产品技能,/plugin install unifi-intelligence@unifi-plugins 也会安装所需的 Network 和 Protect 插件。Claude Code 不会为作为依赖项安装的插件打开 选项对话框,因此请运行尚未配置的产品的设置命令(/unifi-network:unifi-network-setup、 /unifi-protect:unifi-protect-setup)。

执行产品插件的 /plugin install 会立即打开其选项对话框;可直接在其中填写,或关闭对话框后运行设置命令。每个插件的设置命令都会引导你连接到控制器并配置权限,并将结果保存为该插件的 Claude Code 选项。此插件市场默认关闭自动更新;更新步骤请参阅插件升级指南。

各客户端的前提条件、版本范围和验证状态请参阅插件支持矩阵。

Codex

注册 UniFi MCP 插件市场,然后在 Codex 的 /plugins 界面中安装插件:

codex plugin marketplace add sirkirby/unifi-mcp

启动 codex,运行 /plugins,打开 UniFi MCP 插件市场,然后安装 unifi-network、unifi-protect 或 unifi-access。unifi-intelligence 会添加跨产品技能;Codex 不会安装插件依赖项,因此请先安装并设置 unifi-network 和 unifi-protect。安装后,请让 Codex 运行插件的设置技能,例如:

使用 unifi-network-setup 技能为 Codex 进行配置。

设置技能会将控制器设置和凭据提供程序引用保存到私有文件 ~/.config/unifi-mcp/<product>.env 中,插件自身的服务会读取此文件;同时,它采用与 Claude Code 相同的“确认前预览”安全模式。Codex 会在会话开始时自行安装插件升级,服务也会随插件一同更新,因此无需重新运行任何操作。如果你在插件 1.0.0 之前运行过 Codex 设置,请运行一次性 --refresh;详情请参阅插件升级指南。

UniFi 账户要求

MCP 服务使用本地管理员/服务账户,通过本地 UniFi 控制器 API 进行身份验证。请勿在 MCP 设置中使用 Ubiquiti SSO 云账户。目前,Network MCP 不支持需要 SSO MFA 或本地 2FA 的账户配置;请使用专用的本地管理员账户作为服务账户,并且不启用 MFA,同时将权限范围限定为你愿意授予 MCP 服务的权限。

OpenClaw

OpenClaw 可以从市场安装相同的 UniFi 插件包,并将其技能和 MCP 服务定义映射到嵌入式 Pi 会话中:

openclaw plugins install unifi-network --marketplace https://github.com/sirkirby/unifi-mcp
openclaw gateway restart

在终端中,OpenClaw 会要求你确认来源和插件的功能。如果没有终端(例如在脚本中运行),请添加 --force --accept-capabilities;否则 OpenClaw 会拒绝操作。

然后运行 OpenClaw 中对应的设置技能(unifi-network-setup、unifi-protect-setup 或 unifi-access-setup),或者自行运行插件的设置脚本。将密码指向凭据提供程序,以免机密出现在命令行中:

bash ~/.openclaw/extensions/unifi-network/scripts/set-env.sh --target openclaw \
  UNIFI_NETWORK_HOST=192.168.1.1 \
  UNIFI_NETWORK_USERNAME=admin \
  'UNIFI_NETWORK_PASSWORD_FILE=/absolute/path/to/password-file'

设置会将这些配置保存在 ~/.config/unifi-mcp/network.env 中,且只有你可以读取;插件自己的服务会读取该文件。设置不会在 openclaw.json 中添加条目,因此运行 openclaw plugins update 即可获取各服务的新版本,无需重新运行设置。openclaw.json 中的 mcp.servers.unifi-network 条目会替代插件的服务并固定其版本;在插件 1.0.0 之前运行设置会写入此条目,可通过 set-env.sh --target openclaw --refresh 一次性转换(参见升级指南)。根据需要,对 unifi-protect 或 unifi-access 重复此操作。仅在设置 unifi-network 和 unifi-protect 后安装 unifi-intelligence,以获取跨产品技能;OpenClaw 不会安装插件依赖项。

其他 MCP 客户端

直接运行服务:

uvx unifi-network-mcp@latest
uvx unifi-protect-mcp@latest
uvx unifi-access-mcp@latest

对于 Claude Desktop,请添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "unifi-network": {
      "command": "uvx",
      "args": ["unifi-network-mcp@latest"],
      "env": {
        // Server-specific vars take priority; UNIFI_* is the fallback
        "UNIFI_NETWORK_HOST": "192.168.1.1",
        "UNIFI_NETWORK_USERNAME": "admin",
        "UNIFI_NETWORK_PASSWORD": "your-password"
      }
    },
    "unifi-protect": {
      "command": "uvx",
      "args": ["unifi-protect-mcp@latest"],
      "env": {
        "UNIFI_PROTECT_HOST": "192.168.1.1",
        "UNIFI_PROTECT_USERNAME": "admin",
        "UNIFI_PROTECT_PASSWORD": "your-password"
      }
    },
    "unifi-access": {
      "command": "uvx",
      "args": ["unifi-access-mcp@latest"],
      "env": {
        "UNIFI_ACCESS_HOST": "192.168.1.1",
        "UNIFI_ACCESS_USERNAME": "admin",
        "UNIFI_ACCESS_PASSWORD": "your-password"
      }
    }
  }
}

提示: 如果所有服务都连接到同一控制器,可以使用共享的 UNIFI_HOST / UNIFI_USERNAME / UNIFI_PASSWORD 变量,而不必为每个服务重复设置。

使用示例

连接后,只需用自然语言向 AI Agent 提问:

网络

“显示访客 VLAN 上所有客户端的信号强度和数据用量” “创建一条防火墙规则,在午夜到早上 6 点之间阻止 IoT 设备访问互联网” “审查我的防火墙策略——是否存在冗余或冲突的规则?” “显示过去一小时流量最大的连接,并按目的地分组”

Protect

“列出过去一小时检测到移动的所有摄像头” “显示今天前门摄像头的智能检测事件——仅显示人员和车辆” “查找本周车道上白色货车的检测记录”

Access

“今天谁刷卡进入了办公室?按时间顺序显示所有门禁事件” “为 John Smith 创建访客通行证,允许其明天 9 点到 5 点进入主入口”

UniFi Intelligence(unifi-intelligence 插件)

“交换机 aa:bb:cc:00:10:02 今天早上 8:45 掉线了,纽约时间。8:00 到 9:00 之间发生了什么?”——引用 Network 事件和带覆盖范围信息的 Protect 摄像头映射事件 “显示过去一小时前门入口发生的所有情况”——需要云端工作器和中继

所有变更都采用预览后确认流程——你可以先准确查看将要更改的内容,再决定是否应用。

配置

在服务进程环境中设置这些变量(通过 Shell 导出、MCP 客户端的 env 块,或 Docker environment: / env_file:):

变量必需说明
UNIFI_HOST是控制器 IP 或主机名
UNIFI_USERNAME是本地管理员/服务账号用户名;请勿使用 Ubiquiti SSO 账号
UNIFI_PASSWORD是本地账号的密码
UNIFI_API_KEY否用于特定功能的 UniFi API 密钥,包括防火墙策略排序和某些 Protect 设置更新
CONFIG_PATH否由运维人员控制的自定义 YAML 文件的绝对路径;否则使用内置配置
UNIFI_SETTINGS_FILE否按用户设置文件的绝对路径(允许使用 ~),文件中包含 UNIFI_* 变量;见下文
UNIFI_DEFER_CONTROLLER_INIT否仅限 Network:启动时不连接控制器,而是在首次调用工具时连接。默认情况下,每个服务都会立即响应 MCP 客户端,并在后台建立连接
UNIFI_META_TOOLS_ENABLED否仅限 Network 的 eager 模式:设为 false 可省略间接元工具;需要设置 UNIFI_ENABLED_CATEGORIES 或 UNIFI_ENABLED_TOOLS

启动配置: 服务不会自动从工作目录加载 .env 文件或 config/config.yaml。MCP 客户端可能会在不可信项目中启动服务,因此项目文件不得控制凭据的发送位置,也不得削弱权限或脱敏措施。如果之前依赖自动加载,请在启动器中指定可信的环境文件(例如,uv run --env-file /absolute/path/to/trusted.env --with unifi-network-mcp unifi-network-mcp),或为自定义 YAML 设置绝对路径 CONFIG_PATH。仍支持 Docker Compose 的 env_file:。

按用户设置文件: UNIFI_SETTINGS_FILE 指定一个文件,服务会在其他内容读取配置之前于启动时读取该文件。Codex 插件的设置会写入 ~/.config/unifi-mcp/<product>.env,并将其指定给内置服务。文件内容为 KEY=VALUE 行(支持 # 注释和可选的成对引号;不支持 export、插值或多行值)。只接受 UNIFI_* 键,每个键的行为与通过导出设置完全相同,包括 _FILE / _COMMAND 提供方式和策略门控。进程环境中已有的变量优先。文件不存在不算错误。在 POSIX 系统上,文件必须归你所有,且不得允许组用户或其他用户写入(请设为 chmod 600);Windows 不会检查模式,因此请将文件保存在你的用户配置文件目录中。

若要避免 MCP 客户端及其启动的所有进程接触密钥,可将 UNIFI_PASSWORD_FILE 设为密码所在文件的路径,或将 UNIFI_PASSWORD_COMMAND 设为绝对路径的 argv,其标准输出为密码(约定)。UNIFI_API_KEY 和下文的各服务专用变量也支持相同的 _FILE / _COMMAND 后缀。详情见各服务的 docs/configuration.md。

多控制器设置

每个服务都支持自己的带前缀环境变量,其优先级高于共享的 UNIFI_* 变量。这样,你可以让 Network 和 Protect 服务连接到不同的控制器(或使用不同的凭据),同时由启动器显式加载一个受信任的环境文件:

共享(回退)Network 服务Protect 服务Access 服务
UNIFI_HOSTUNIFI_NETWORK_HOSTUNIFI_PROTECT_HOSTUNIFI_ACCESS_HOST
UNIFI_USERNAMEUNIFI_NETWORK_USERNAMEUNIFI_PROTECT_USERNAMEUNIFI_ACCESS_USERNAME
UNIFI_PASSWORDUNIFI_NETWORK_PASSWORDUNIFI_PROTECT_PASSWORDUNIFI_ACCESS_PASSWORD
UNIFI_PORTUNIFI_NETWORK_PORTUNIFI_PROTECT_PORTUNIFI_ACCESS_PORT
UNIFI_VERIFY_SSLUNIFI_NETWORK_VERIFY_SSLUNIFI_PROTECT_VERIFY_SSLUNIFI_ACCESS_VERIFY_SSL
UNIFI_API_KEYUNIFI_NETWORK_API_KEYUNIFI_PROTECT_API_KEYUNIFI_ACCESS_API_KEY

只有一个控制器? 只需设置共享的 UNIFI_* 变量——所有服务都会使用它们。只有当服务连接到不同控制器或使用不同凭据时,才需要设置特定于服务的变量。

有关完整配置说明,包括权限、传输方式和高级选项,请参阅 Network 服务文档、Protect 服务文档或 Access 服务文档。

密钥脱敏

工具和 API 响应默认会对已知的控制器敏感字段进行脱敏——Wi-Fi 密码、VPN 私钥/预共享密钥、完整的 VPN 配置文件(导入的 WireGuard/OpenVPN .conf/.ovpn 文件)、API 令牌、SNMP 团体字符串、SNMPv3 密码、设备 SSH 凭据和管理密钥,以及 Access 凭据令牌/PIN 值都会以 ***REDACTED*** 的形式返回。这样可以避免密钥进入 Agent 上下文和日志。

如果受信任的本地管理工作流确实需要原始值,可通过 UNIFI_REDACT_SENSITIVE_FIELDS=false 禁用该进程的脱敏,也可以使用特定于服务的覆盖项,例如 UNIFI_NETWORK_REDACT_SENSITIVE_FIELDS=false、UNIFI_PROTECT_REDACT_SENSITIVE_FIELDS=false、UNIFI_ACCESS_REDACT_SENSITIVE_FIELDS=false 或 UNIFI_API_REDACT_SENSITIVE_FIELDS=false。更新时如需保留现有密钥,只需省略该字段——不要将 ***REDACTED*** 标记传回;系统会拒绝这样做,以确保占位符绝不会被写成真实密钥。有关已脱敏字段的完整列表,请参阅 PRIVACY.md。

Agent 技能

每个插件都附带 Agent 技能,帮助 Agent 高效完成常见任务,而不只是提供原始工具访问能力:

技能插件功能
网络健康检查unifi-network对设备、健康子系统和警报进行批量诊断,并提供参考文档,帮助解读结果
防火墙管理器unifi-network通过自然语言管理防火墙,并提供策略模板、配置快照和变更跟踪
防火墙审计器unifi-network基于 16 项基准进行安全审计,采用 100 分制评分,并进行拓扑分析和趋势跟踪
安全摘要unifi-protect汇总 Protect 事件并明确说明覆盖范围限制;可选读取 Access 和 Network 数据以补充关联假设
UniFi Accessunifi-access门禁控制、凭证、访客和访问策略,并支持实时事件流和活动摘要
事件调查unifi-intelligence使用只读事件证据工具调查一个 Network 设备事件,并结合 Protect 摄像头信息,注明覆盖范围
安全巡查unifi-intelligence根据云端工作器合并后的地点时间线了解区域活动
访客审计unifi-intelligence根据云端工作器时间线并列查看 Access 事件和 Network 证据,并说明身份信息限制

技能包含设备状态、警报类型、防火墙架构和事件字段的参考文档。Agent 负责收集和解读证据;防火墙评分 CLI 根据受支持的发现结果计算分数。防火墙快照、差异和模板应用均遵循技能说明。

每项非设置类技能都会声明必需和可选服务,并要求报告包含“覆盖范围和限制”部分。缺少必需依赖项时,工作流会停止;对于缺失的可选数据源、读取失败和结果数量上限,都会予以说明。安全巡查和访客审计需要通过已连接的中继获取云端工作器合并后的时间线;请参阅跨产品功能。

架构

这是一个包含共享包的单体仓库:

apps/
  network/          # UniFi Network MCP server (stable, 210 tools)
  protect/          # UniFi Protect MCP server (stable, 63 tools)
  access/           # UniFi Access MCP server (stable, 37 tools)
  api/              # Independent REST + GraphQL API server (beta)
  worker/           # Cloudflare Worker gateway + npm CLI
packages/
  unifi-core/       # Shared UniFi connectivity (auth, detection, retry)
  unifi-mcp-shared/ # Shared MCP patterns (permissions, tools, diagnostics, config)
  unifi-mcp-relay/  # Cloud relay sidecar (bridges local servers to Cloudflare Worker)
plugins/
  unifi-network/    # Claude Code/Codex/OpenClaw plugin: MCP server + agent skills + setup
  unifi-protect/    # Claude Code/Codex/OpenClaw plugin: MCP server + agent skills + setup
  unifi-access/     # Claude Code/Codex/OpenClaw plugin: MCP server + agent skills + setup
  unifi-intelligence/ # Skills-only plugin; needs unifi-network and unifi-protect
skills/
  _shared/          # Shared utilities for skill scripts (MCP client, config)
docs/               # Ecosystem-level documentation

apps/ 中的每个 Python 服务都是依赖共享包的独立包。apps/worker/ 则刻意独立:它是一个自包含的 TypeScript/Node 应用,用于 Cloudflare Worker 网关和 npm CLI。将其保留在此仓库中,可确保中继协议变更和工作器契约测试同步进行。

详情请参阅 docs/ARCHITECTURE.md。

开发

make sync   # Install Python workspace + worker npm dependencies
make check  # Format check + lint + generated drift checks + tests + worker typecheck
make build  # Build deployable artifacts, including worker typecheck

参与贡献

有关开发工作流(包括如何使用单体仓库、运行测试和提交 PR),请参阅 CONTRIBUTING.md。

支持项目

UniFi MCP 作为独立的开源项目维护。赞助有助于支付项目开发、测试和维护所需的持续 AI 成本,以及 Network、Protect、Access、API、中继和插件包的实时控制器兼容性测试、版本维护、文档编写和问题分类处理。

如果遇到可复现的 Network、Protect 或 Access MCP 问题,且服务能够启动并注册工具,请在提交公开 Bug 报告前生成并检查可选的已脱敏支持包。如果服务无法启动,请改用 Bug 报告中的手动表单字段。支持包比普通诊断日志更安全,但仍只是经过脱敏处理,并非匿名。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。