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.
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,扩展必须使用配对令牌认证,且只允许一个活动扩展连接:
- stdio — Bridge 与 MCP Client 通信(标准 MCP 传输)
- WebSocket (127.0.0.1:9876) — Bridge 与扩展进行已认证通信
- 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 扩展
- 打开
chrome://extensions/ - 开启右上角「开发者模式」
- 点击「加载已解压的扩展程序」→ 选择
developer-grow-mcp-extension目录 - 确认扩展已加载,Service Worker 状态为「活跃」
- 打开扩展「详情」→「扩展程序选项」,进入 Bridge 配对 页面
- 点击「生成令牌」,在令牌输入框中按
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. 登录华为云
- 在浏览器中访问
https://developer.huaweicloud.com/grow - 使用华为云账号登录(扫码或账号密码)
- 扩展自动继承浏览器 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 字符配对令牌,并校验响应对应待处理请求
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.