HWC Growth Center MCP Extension

HWC Growth Center MCP Extension

Enables daily check-in, points and task queries for Huawei Cloud Developer Growth Center via a Chrome extension and Node.js bridge.

Category
访问服务器

README

HWC Growth Center MCP Extension

华为云开发者成长中心 MCP 扩展 — 通过 Chrome 扩展 + Node.js Bridge 架构,为 CLI 和 MCP Client 提供签到、积分查询、任务列表等能力。已验证多账号全自动签到流程。

能力边界

能做的

能力 说明 对应工具
每日签到 自动检测签到状态,未签到则执行签到 hwc_sign
签到状态查询 查询今日是否已签到、连续天数、累计次数 hwc_get_sign_status
积分查询 查询当前可用积分 (beans) hwc_get_points
积分明细 查询积分获取/消耗记录 hwc_get_points_detail
任务列表 查询成长中心全部任务及完成状态 hwc_get_tasks
积分兑换 兑换奖品 hwc_exchange

不能做的

  • 自动完成成长任务(如创建云开发环境、发布博客、参加赛事等)— 这些需要在浏览器中手动操作
  • 自动登录 — 需要用户在浏览器中手动登录华为云账号
  • 无浏览器运行 — Chrome 扩展必须在浏览器中运行,关闭浏览器则无法调用 API

前置条件

  • Chrome 浏览器已打开且已登录 developer.huaweicloud.com
  • Chrome 扩展已加载且 Service Worker 处于活跃状态
  • accountName 自动从页面 DOM 提取并存入 chrome.storage,无需手动指定

架构

MCP Client (CLI / Agent / Claude)  ←stdio→  Bridge [Node.js]  ←WebSocket→  Chrome Extension
                                                                          ↓
                                                                fetch (浏览器上下文,携带 Cookie)
                                                                          ↓
                                                              https://devdata.huaweicloud.com

Chrome 扩展 Service Worker 无法创建 WebSocket 服务器,因此引入 Node.js Bridge 中继。Bridge 仅监听 127.0.0.1,扩展必须使用配对令牌认证,且只允许一个活动扩展连接:

  1. stdio — Bridge 与 MCP Client 通信(标准 MCP 传输)
  2. WebSocket (127.0.0.1:9876) — Bridge 与扩展进行已认证通信
  3. Bridge 在两者间转发 JSON-RPC 消息,扩展未连接时自动排队请求

项目结构

developer-grow-mcp-extension/
├── manifest.json              # Chrome 扩展配置 (Manifest V3)
├── background.js              # Service Worker — WebSocket 客户端,连接 Bridge
├── content.js                 # Content Script — accountName 自动提取
├── options.html / options.js  # Bridge 配对令牌设置页
├── cli.mjs                    # CLI 入口 — 子命令分发 (hwc-grow)
├── agent.mjs                  # MCP 客户端 — 自动编排签到流程
├── package.json               # npm 包定义 (bin: hwc-grow)
├── bridge/
│   ├── server.js              # Node.js Bridge (stdio ↔ WebSocket 中继)
├── lib/
│   ├── api-client.js          # API 调用封装 (含日志 + accountName 自动获取)
│   ├── csrf-manager.js        # CSRF Token 管理 (自动刷新)
│   └── debug-log.js           # API 调用日志收集器
├── tools/
│   ├── index.js               # 工具注册表
│   ├── sign.js                # 签到 (POST, account_name 自动获取)
│   ├── sign-status.js         # 签到状态 (GET)
│   ├── tasks.js               # 任务列表 (POST, page_no/page_size)
│   ├── points.js              # 积分查询 (GET, beans)
│   ├── points-detail.js       # 积分明细 (POST)
│   └── exchange.js            # 积分兑换 (POST)
└── protocol/
    └── mcp.js                 # MCP 协议实现 (JSON-RPC 2.0)

安装

1. 安装依赖

cd tools/developer-grow-mcp-extension
npm install

2. 加载 Chrome 扩展

  1. 打开 chrome://extensions/
  2. 开启右上角「开发者模式」
  3. 点击「加载已解压的扩展程序」→ 选择 developer-grow-mcp-extension 目录
  4. 确认扩展已加载,Service Worker 状态为「活跃」
  5. 打开扩展「详情」→「扩展程序选项」,进入 Bridge 配对 页面
  6. 点击「生成令牌」,在令牌输入框中按 Ctrl+A、Ctrl+C 复制,再点击「保存」

如果管理页没有显示「扩展程序选项」,请在扩展卡片或详情页复制扩展 ID,然后直接访问:

chrome-extension://<扩展ID>/options.html

例如,当前开发环境中的地址是:

chrome-extension://dagglekhpkdmhdigehamipnnmeananja/options.html

解压加载的扩展 ID 可能因机器或安装方式不同而变化。上面的固定地址仅作为示例;其他开发者应使用自己在 chrome://extensions/ 中看到的扩展 ID。

3. 配置 Bridge 配对令牌

将扩展设置页生成的同一令牌配置为 MCP_BRIDGE_TOKEN。令牌至少 32 个字符,不要提交到仓库:

# Linux / macOS
export MCP_BRIDGE_TOKEN="扩展设置页中的令牌"
# PowerShell(当前终端)
$env:MCP_BRIDGE_TOKEN = "扩展设置页中的令牌"

4. 登录华为云

  1. 在浏览器中访问 https://developer.huaweicloud.com/grow
  2. 使用华为云账号登录(扫码或账号密码)
  3. 扩展自动继承浏览器 Cookie,content.js 自动提取 accountName 存入 chrome.storage

切换账号:在浏览器中重新登录另一个华为云账号,然后删除扩展并重新加载(Chrome 会缓存旧的 Service Worker 代码)

5. 安装 CLI(可选)

cd tools/developer-grow-mcp-extension
npm install -g .

安装后可直接使用 hwc-grow 命令。未全局安装也可用 node cli.mjs 代替。

使用方式

CLI 工具

# 一键完整流程(查状态 → 签到 → 查积分 → 查任务)
hwc-grow agent

# 单独签到(accountName 自动获取,无需传参)
hwc-grow sign

# 查签到状态
hwc-grow status

# 查积分
hwc-grow points

# 查任务列表(默认全部)
hwc-grow tasks
hwc-grow tasks --status=pending     # 仅待完成

# MCP Server 模式(供 OpenCode / Claude Desktop 调用)
hwc-grow serve

# 帮助
hwc-grow help

直接运行 agent.mjs

node agent.mjs              # 完整自动签到流程
node agent.mjs --status-only    # 仅查询签到状态
node agent.mjs --points         # 仅查询积分
node agent.mjs --tasks          # 查询任务列表
node agent.mjs --verbose        # 打印 JSON-RPC 原始通信

agent.mjs 和 hwc-grow 都会自动启动 Bridge,无需手动运行 bridge/server.js。

自动签到流程

1. hwc_get_sign_status  → 检查 sign_flag 是否已签到
2. 若未签到 → hwc_sign  → POST {account_name: "自动从DOM获取"}
3. hwc_get_points       → 查询 beans 确认积分变化
4. hwc_get_tasks        → 查看待完成任务列表

成功输出示例

🚀  启动 HWC Growth Center MCP Agent
📦  启动 Bridge...
🔗  初始化 MCP 连接...
✅  已连接: hwc-growth-mcp v1.0.0
🔍  查询签到状态...
📊  签到状态: 今日未签到 ✗
💰  当前积分: 5
📅  连续签到: 0 天
✍️  执行签到...
🎉  签到成功! 签到成功
📅  连续签到: 1 天
💰  查询最新积分...
✅  当前积分: 55
📋  查询待完成任务...
📝  待完成任务 (11):
   ✗ 首次开通华为云码道(CodeArts) (+50) [码道]
   ✗ 使用智能问答 (+30) [码道]
   ✗ 体验开发者空间 (+20) [开发者空间]
   ...
✅  自动签到流程完成

MCP Client 集成

OpenCode

在 ~/.config/opencode/opencode.json 中添加:

{
  "mcp": {
    "hwc-growth": {
      "type": "local",
      "command": ["hwc-grow", "serve"]
    }
  }
}

Claude Desktop

在 claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "hwc-growth": {
      "command": "hwc-grow",
      "args": ["serve"]
    }
  }
}

Bridge 的 WebSocket 端口只用于已配对的 Chrome 扩展。MCP Client 应通过 stdio 调用 hwc-grow serve,不会直接连接 WebSocket。

Skill + CLI 使用

本项目提供两种使用路径,互不冲突:

路径一:CLI 直接使用(本项目)

适合只需签到/查积分/查任务的场景。安装扩展 + CLI 后直接运行:

hwc-grow agent    # 每日一键签到

路径二:Skill 自动化执行(仓库根目录 skill/)

skill/SKILL.md 是面向 AI Agent 的 Skill 定义,通过 Playwright 执行器自动完成更多任务(签到 + 开通码道 + 体验开发者空间 + 创建云开发环境 + 智能问答)。适合需要批量自动完成成长任务的场景。

# Agent 执行 Skill 的统一 Prompt:
克隆 https://gitcode.com/deli007/hwcloud-grow.git,阅读 skill/SKILL.md 并执行

两条路径的关系:

CLI (本项目) Skill (skill/SKILL.md)
签到 ✅ 通过 Chrome 扩展 ✅ 通过 Playwright
查积分/任务 ✅ ✅
开通码道 ❌ ✅
创建开发环境 ❌ ✅
智能问答 ❌ ✅
需要浏览器 ✅ Chrome + 扩展 ✅ Playwright 控制的 Chromium
适合场景 日常签到 批量完成全部任务

工具列表

工具名 描述 参数 API 字段映射
hwc_sign 签到 accountName (可选,自动获取) account_name → POST body
hwc_get_sign_status 签到状态 无 sign_flag→signed, bonus→points, sign_continuity_count→continuousDays, sign_count→signCount
hwc_get_tasks 任务列表 status: all/completed/pending, pageNo, pageSize QueryMissionDtoList→tasks, is_finish→完成状态, bonus→积分
hwc_get_points 当前积分 无 beans→points
hwc_get_points_detail 积分明细 pageNo, pageSize records, total
hwc_exchange 积分兑换 prizeId, count id→orderId

API 端点

操作 方法 路径 关键字段
CSRF 获取 GET developer.huaweicloud.com/api/get-ainfo 响应头 csrf 字段
签到状态 GET .../growth/sign sign_flag, sign_continuity_count, sign_count
执行签到 POST .../growth/sign body: {account_name}
积分查询 GET .../growth/bonus-beans beans
任务列表 POST .../growth/mission/query-mission-list-by-condition body: {status, page_no, page_size} + query string

所有业务 API 前缀: https://devdata.huaweicloud.com/rest/developer/fwdu

注意:任务列表 API 的分页参数使用 snake_case (page_no, page_size),且需同时放在 query string 和 JSON body 中。

故障排查

问题 原因 解决方案
Bridge 报 EADDRINUSE 旧进程占用端口 杀掉旧 node 进程,或设 MCP_BRIDGE_PORT 换端口
扩展未连接 Bridge 未运行或扩展未加载 先加载扩展,再运行 CLI
CSRF fetch failed: 404 CSRF URL 域名错误 确认指向 developer.huaweicloud.com(非 devdata)
CSRF is nil (403) CSRF Token 过期 正常现象,自动刷新重试
SESSION_EXPIRED 浏览器 Cookie 过期 重新登录 developer.huaweicloud.com
修改代码后无效 Chrome 缓存 Service Worker chrome://extensions/ → 删除扩展 → 重新加载
ERR_NETWORK_IO_SUSPENDED Service Worker 被挂起 正常现象,chrome.alarms 会自动重连
pageNo不能为null 任务列表参数格式错误 使用 page_no/page_size(snake_case)+ query string
签到返回 user_id=null 未登录或 Cookie 过期 重新登录华为云

技术细节

  • CSRF Token: 从 developer.huaweicloud.com/api/get-ainfo 响应头获取,有效期约 15 分钟,过期自动刷新
  • accountName 自动获取: content.js 从页面 DOM 提取 → 存入 chrome.storage.local → sign.js 调用时自动读取,无需手动传参
  • Service Worker 保活: chrome.alarms 每 30 秒唤醒,检查并重连 Bridge
  • 请求排队: 扩展未连接时 Bridge 缓存请求,扩展连接后自动发送
  • 最小化诊断: 默认工具响应不包含原始后端响应、请求体、响应头或跨请求 API 日志;--verbose 仅显示 MCP JSON-RPC 通信
  • Bridge 安全边界: 仅监听 loopback,要求至少 32 字符配对令牌,并校验响应对应待处理请求

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选