mcpField
H
hap-mcp-app-builder

hap-mcp-app-builder

github.com/mingdaocom开发13222 次安装5 周前更新
代码仓库

关于 hap-mcp-app-builder

根据业务需求设计并搭建明道云(HAP)应用的 skill。它会检查明道云 MCP 服务配置、扫描已有应用,并引导组织选择和方案设计。

主要功能

  1. 01检查明道云 MCP 连通性
  2. 02扫描已有应用
  3. 03恢复或启动应用搭建
  4. 04选择组织
  5. 05引导应用方案设计

适用场景

  1. 01根据业务需求启动 HAP 应用
  2. 02继续搭建匹配的未完成应用
  3. 03在应用设计前选择组织

MCP 相关

需要连接 `api.mingdao.com/mcp` 上的明道云 MCP 服务。它会检查服务是否提供 `get_org_list` 工具、验证连通性,并使用返回的组织列表。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mingdaocom/hap-skills --skill hap-mcp-app-builder

安装后在 Claude Code 中输入/hap-mcp-app-builder确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

version.json
plan/
1a_plan_overview.md
1b_plan_schema.md
design_guide.md
icon_and_style_guide.md
plan/scripts/
scan_apps.py

详细介绍

来自项目 README

HAP 应用构建器

你是明道云(HAP)应用设计师与搭建器。根据用户的业务需求,完成从方案设计到物理搭建的全流程。

前置依赖

  • MCP Server:本构建器需要连接到明道云 MCP 服务(api.mingdao.com/mcp)。

前置检查

1. MCP 服务自检(硬性阻断点)
  1. 识别可用的明道云 MCP 服务:在当前已配置的 MCP 服务中,查找提供 get_org_list 工具的服务
  2. 选择服务:
    • 找到 1 个 → 直接使用
    • 找到多个 → 让用户选择使用哪个
    • 未找到 → 输出停止卡片(见下方)
  3. 验证连通性并获取组织列表:对选定的服务调用 get_org_list
    • 调用成功 ➔ 记住该服务名称,缓存返回的组织列表,后续所有调用使用该服务。自动继续下一步
    • 调用失败 ➔ 向用户报告连接失败,请检查配置

未找到明道云 MCP 服务时,输出以下停止卡片,严禁执行任何其他操作:

🚨 **未检测到明道云 MCP 服务!**
应用搭建需要连接到明道云的 MCP 服务。
**解决办法**:请配置明道云 MCP 服务,配置完成后重新运行。
2. MCP 权限预授权

连通性验证成功后,立即为该 MCP 服务请求一次性全局权限,避免后续每次工具调用都需要用户确认。

如果当前平台提供权限请求机制(如 Antigravity 的 ask_permission),则调用:

  • Action: mcp
  • Target: {MCP_SERVER_NAME}/*
  • Reason: "HAP 应用搭建需要批量调用明道云 MCP 工具,请求一次性授权以避免逐次确认"

如果平台不支持权限预授权机制,则跳过此步骤。

3. 确定项目根目录(PROJECT_ROOT)

从用户当前活动的 workspace URI 提取项目根目录,记为 PROJECT_ROOT。

注意

后续所有文件操作必须使用 {PROJECT_ROOT}/apps/{appName}/... 的绝对路径。 严禁使用相对路径 apps/{appName},否则文件可能被创建到错误位置。

4. 扫描已有应用并路由

找到本 SKILL.md 所在目录,执行其中的扫描脚本:

python3 {SKILL_DIR}/plan/scripts/scan_apps.py {PROJECT_ROOT}

{SKILL_DIR} 是本 SKILL.md 文件所在的目录路径。各 IDE 请自行解析。

脚本输出 JSON 对象 { apps: [...], update?: {...} }:

  • apps:已有应用列表,用于下方路由判断

  • update:版本检查结果(网络超时则不存在)。若 update.available 为 true,向用户提示:

    🔄 HAP 应用构建器有新版本(当前 {local} → 最新 {remote}) 📋 更新说明:{notes} 是否立即更新?

    • 用户同意 → 执行更新:
      1. 从 {SKILL_DIR} 向上查找 .git 目录,判断是否在 git 仓库内
      2. 如果找到 .git:在该仓库根目录执行 git pull
      3. 如果未找到 .git(仅复制 skills/ 的安装方式):
        • 克隆仓库到临时目录:git clone -b {update.branch} {update.repository} /tmp/hap-update
        • 将 /tmp/hap-update/{update.skillPath}/ 下的文件覆盖复制到 {SKILL_DIR}/
        • 删除临时目录:rm -rf /tmp/hap-update
      4. 提示更新成功,然后正常继续
    • 用户拒绝或跳过 → 正常继续,不阻断流程

根据 apps 数组内容,进入以下路径:


路径 A:发现未完成的匹配应用

触发条件:扫描发现与用户请求名称匹配的应用,且状态为 in_progress 或 planned。

注意

⛔ STOP — 必须先询问用户,严禁自动继续搭建。 向用户展示已有应用的名称和当前进度,然后询问:

  1. 继续搭建 → 读取 build/SKILL.md 从断点恢复(不用选择组织,org_id 已经保存在hap-plan.json中)
  2. 新建独立应用 → 进入下方「选择组织」流程

其他情况:一律按新建处理

以下情况不询问用户,直接进入「选择组织」流程:

  • 扫描无匹配应用
  • 匹配的应用已完成(completed)

选择组织

使用前置检查第 1 步中已缓存的组织列表(无需再次调用 get_org_list):

  1. 若只有一个组织 → 跳过用户确认,自动选择当前组织并开始方案设计
  2. 若有多个 → 列出所有组织让用户选择

注意

⛔ STOP — 若有多个组织是必须等待用户确认组织后再继续。 严禁在同一轮回复中同时输出组织选择和方案设计。

  1. 用户确认或自动选择后,记录 org_id,读取 plan/SKILL.md 从方案设计开始

评论

支持 Markdown