前言¶
在 DeepSeek Harness(DSH)里做局域网运维时,模型往往需要查路由器状态、在线终端、DHCP 与端口映射,而不是只给一段「请登录 Web 后台」的说明。爱快(iKuai)提供 JSON API,但要把接口封装成模型可调用的工具、管好凭据、并默认限制写操作,需要一层宿主集成。下面介绍社区插件 dsh-ikuai-mcp(维护者 MingShi350),它把爱快 API 挂成 MCP stdio 服务,并在 DSH 凭据中心存放连接参数。
这是什么¶
dsh-ikuai-mcp 是 DSH 的「联网工具」类插件:纯 Node、零依赖的 MCP stdio server,外加 DSH 宿主侧少量工具。模型侧可见 11 个 mcp__ikuai__* 只读工具,以及通用读写入口 ikuai_api_call(写操作默认关闭);宿主侧还有 ikuai_credentials_status、ikuai_set_credentials、ikuai_ping,用于配置与连通性检查。连接参数不硬编码在对话里,而是走 DSH 凭据中心(或环境变量),改 IP 或密码一般无需重启 DSH。
与「只在浏览器里点爱快后台」相比,价值在于:同一套 DSH 会话里可以直接查 CPU、接口、在线设备、DNS、路由、VLAN、DDNS、端口映射等,并在明确开启写权限且每次确认后,才通过通用 API 调用做变更。
核心功能¶
只读工具(11 个 MCP 工具)¶
插件把爱快 JSON API 的常用查询封装为固定工具,README 中对应关系如下(工具名 → 爱快 func_name):
| 工具 | 说明 |
|---|---|
ikuai_status |
系统状态:CPU、内存、温度、在线终端数、连接数、运行时长、WAN 线路等 |
ikuai_interfaces |
LAN/WAN 物理端口、上下线、内外网 IP/网关、VLAN 失败项 |
ikuai_online_devices |
在线终端:IP/MAC/名称/流量/连接数,支持分页与排序 |
ikuai_dhcp_pools |
各 LAN/VLAN 地址池、租期、网关、DNS |
ikuai_dhcp_bindings |
静态绑定与动态租约(static_status: 1 表示静态) |
ikuai_dns_config |
本机 DNS 开关、上游 DNS、代理规则、缓存 |
ikuai_static_routes |
用户静态路由规则与生效路由表 |
ikuai_vlan_config |
VLAN ID、名称、成员端口、tag |
ikuai_ddns_config |
DDNS 配置与最近解析 IP(敏感字段会脱敏) |
ikuai_port_mapping |
端口映射、1:1 映射、UPnP 租约 |
ikuai_api_call |
任意 func_name 的通用调用,用于 ACL、QoS、流控等未单独封装的模块 |
写权限与安全默认¶
- 非
show/get/list/query/search类调用默认拒绝;开启写需设置IKUAI_ALLOW_WRITES=1(凭据中心或环境变量),且每次写调用必须传confirm: true。 - 插件不提供「让模型自己打开写权限」的工具。
- 爱快常用自签证书,客户端会放开证书校验;文档要求仅在受信内网使用,不要指向公网设备。
- 密码明文存于
~/.dsh/.credentials.yaml(权限 0600),结果中对常见敏感字段名尽力脱敏。
版本与运行环境¶
- npm 包版本 0.1.1(见仓库
package.json)。 - 需要 Node >= 18;peer 依赖
@deepseek-ai/cordis^4.0.2。 - 许可:MIT。API 用法参考 beck-8/ikuai-mcp,本仓库为独立 Node 实现。
安装与启用¶
官方 README 建议把仓库或安装说明交给 DSH 里的 AI 按步骤执行;下面是与资料一致的命令(profile 以 web 为例,请换成你实际使用的 profile)。
- 安装进 profile(三选一,占位符换成实际值):
dsh plugin --profile web add /绝对路径/dsh-ikuai-mcp # 本地目录(必须是绝对路径)
dsh plugin --profile web add github:MingShi350/dsh-ikuai-mcp # GitHub
dsh plugin --profile web add dsh-ikuai-mcp # npm
- 确认 bundle 已写入(输出中应包含带
ikuai的 bundle 名):
node -e 'const p=require(process.env.HOME+"/.dsh/profiles/web/package.json");console.log(p.dsh.profile.bundles.filter(b=>b.includes("ikuai")))'
-
重启 dsh web。文档说明由用户自行重启,避免 agent 直接 kill 宿主进程中断当前会话;若安装了 dshmarket,可用界面「待重启」旁的一键重启。
-
配置连接参数(见下一节)。不要猜测 IP 和密码,应向设备管理员确认。
-
验证:先调用
ikuai_credentials_status,再调用ikuai_ping。
装好后如何自检¶
| 现象 | 含义 |
|---|---|
工具列表出现 11 个 mcp__ikuai__* |
MCP 侧已就绪,可继续配置凭据 |
仅有 ikuai_credentials_status / ikuai_set_credentials / ikuai_ping |
宿主半已起,MCP 子进程未起:检查能力面板 mcp-server:ikuai、bundle 是否包含插件、是否已重启 |
| 以上都没有 | 回到安装第 1 步 |
配置连接参数¶
取值优先级:环境变量 > DSH 凭据中心 > 默认值。
| 键 | 默认值 | 说明 |
|---|---|---|
IKUAI_URL |
https://192.168.1.1 |
爱快 Web 管理地址;只写 192.168.1.1 会自动补 https:// |
IKUAI_USERNAME |
admin |
Web 登录用户名 |
IKUAI_PASSWORD |
空 | 必须配置,否则工具报「未配置 IKUAI_PASSWORD」 |
推荐:在 DSH「设置 → 凭据中心」新增上述三项,密码不进对话记录。也可让 agent 调用 ikuai_set_credentials(会先试连,成功才写入;密码会出现在会话记录中,GUI 更安全)。
凭据中心修改后约 5 秒内生效,一般无需重启;若同名环境变量已设置,环境变量优先,会盖住凭据中心。
验证示例(在 DSH 工具调用中):
ikuai_credentials_status → 查看四项生效值与来源(env / 凭据中心 / 默认值)
ikuai_ping → 登录探测
mcp__ikuai__ikuai_status → 读取 CPU / 内存 / 在线终端数等
ikuai_ping 常见结果:登录成功;code=1005 表示账号或密码错误;ECONNREFUSED 表示地址或端口不对;响应非 JSON 常表示该端口不是爱快管理页。
典型用法¶
日常只读巡检¶
在凭据配置完成且 ikuai_ping 成功后,模型可直接调用例如:
mcp__ikuai__ikuai_status:总览设备负载与 WAN。mcp__ikuai__ikuai_online_devices:查某 IP/MAC 是否在线、流量与连接数(默认可较大,可按需调小limit)。mcp__ikuai__ikuai_dhcp_bindings/mcp__ikuai__ikuai_port_mapping:核对静态绑定与映射是否与文档一致。
需要改配置时¶
- 在凭据中心设置
IKUAI_ALLOW_WRITES = 1(或环境变量,后者需重启 DSH)。 - 写之前用只读或
show拿到原记录(含id/uuid)。 - 通过
ikuai_api_call调用对应func_name,并传"confirm": true。爱快 V4 模块名与 V3 不同,插件会对部分旧名做候选回退;排序参数需大写ORDER_BY与ORDER。
写操作能影响 DHCP、路由、端口映射等,务必在受控环境、明确意图下使用。
适用场景与注意¶
适合:已在 DSH 中开发或运维、内网有爱快软路由(文档写明在 iKuai V4 4.0.311 x64 上完整实测,V3 依赖模块名回退)、希望用对话查状态或经闸门做少量 API 写操作的用户。
务必知晓:
- 插件以 当前 dsh 进程权限 运行,安装前应自行审阅 GitHub 源码 与 MIT 许可证。
- 会话约 10 分钟重登;爱快并发登录会互相顶号,避免与 Web UI 同时做写操作。
- 未单独封装 Docker、QEMU、行为审计等模块,需时用
ikuai_api_call透传。 - DSH 社区目录 SkillHub 插件页 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录与仓库为准。
结尾¶
dsh-ikuai-mcp 把爱快 JSON API 收成 DSH 内的 MCP 只读工具集,凭据进 DSH 凭据中心,写操作默认关闭且需显式确认。若你在 Harness 里做内网路由运维,可按 README 安装到 profile、配置 IKUAI_* 后用 ikuai_ping 与 ikuai_status 验证。