dsh-ikuai-mcp:在 DSH 里通过 MCP 只读查询爱快软路由

前言

在 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)。

  1. 安装进 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
  1. 确认 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")))'
  1. 重启 dsh web。文档说明由用户自行重启,避免 agent 直接 kill 宿主进程中断当前会话;若安装了 dshmarket,可用界面「待重启」旁的一键重启。

  2. 配置连接参数(见下一节)。不要猜测 IP 和密码,应向设备管理员确认。

  3. 验证:先调用 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:核对静态绑定与映射是否与文档一致。

需要改配置时

  1. 在凭据中心设置 IKUAI_ALLOW_WRITES = 1(或环境变量,后者需重启 DSH)。
  2. 写之前用只读或 show 拿到原记录(含 id/uuid)。
  3. 通过 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 验证。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye