HWC Growth Center MCP Extension
HWC Growth Center MCP Extension
华为云开发者成长中心 MCP 扩展 — 通过 Chrome 扩展 + Node.js Bridge 架构,为 CLI 和 MCP Client 提供签到、积分查询、任务列表等能力。已验证多账号全自动签到流程。
能力边界
能做的
能力 | 说明 | 对应工具 |
每日签到 | 自动检测签到状态,未签到则执行签到 |
|
签到状态查询 | 查询今日是否已签到、连续天数、累计次数 |
|
积分查询 | 查询当前可用积分 (beans) |
|
积分明细 | 查询积分获取/消耗记录 |
|
任务列表 | 查询成长中心全部任务及完成状态 |
|
积分兑换 | 兑换奖品 |
|
不能做的
自动完成成长任务(如创建云开发环境、发布博客、参加赛事等)— 这些需要在浏览器中手动操作
自动登录 — 需要用户在浏览器中手动登录华为云账号
无浏览器运行 — Chrome 扩展必须在浏览器中运行,关闭浏览器则无法调用 API
前置条件
Chrome 浏览器已打开且已登录
developer.huaweicloud.comChrome 扩展已加载且 Service Worker 处于活跃状态
accountName自动从页面 DOM 提取并存入chrome.storage,无需手动指定
架构
MCP Client (CLI / Agent / Claude) ←stdio→ Bridge [Node.js] ←WebSocket→ Chrome Extension
↓
fetch (浏览器上下文,携带 Cookie)
↓
https://devdata.huaweicloud.comChrome 扩展 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. 安装依赖
# 在仓库根目录 developer-grow-mcp-extension/ 下执行
npm install2. 加载 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(可选)
# 在仓库根目录 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。
工具列表
工具名 | 描述 | 参数 | API 字段映射 |
| 签到 |
|
|
| 签到状态 | 无 |
|
| 任务列表 |
|
|
| 当前积分 | 无 |
|
| 积分明细 |
|
|
| 积分兑换 |
|
|
API 端点
操作 | 方法 | 路径 | 关键字段 |
CSRF 获取 | GET |
| 响应头 |
签到状态 | GET |
|
|
执行签到 | POST |
| body: |
积分查询 | GET |
|
|
任务列表 | POST |
| body: |
所有业务 API 前缀: https://devdata.huaweicloud.com/rest/developer/fwdu
注意:任务列表 API 的分页参数使用 snake_case (
page_no,page_size),且需同时放在 query string 和 JSON body 中。
故障排查
问题 | 原因 | 解决方案 |
Bridge 报 EADDRINUSE | 旧进程占用端口 | 杀掉旧 node 进程,或设 |
扩展未连接 | Bridge 未运行或扩展未加载 | 先加载扩展,再运行 CLI |
CSRF fetch failed: 404 | CSRF URL 域名错误 | 确认指向 |
CSRF is nil (403) | CSRF Token 过期 | 正常现象,自动刷新重试 |
SESSION_EXPIRED | 浏览器 Cookie 过期 | 重新登录 |
修改代码后无效 | Chrome 缓存 Service Worker |
|
ERR_NETWORK_IO_SUSPENDED | Service Worker 被挂起 | 正常现象, |
| 任务列表参数格式错误 | 使用 |
签到返回 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 字符配对令牌,并校验响应对应待处理请求
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dwight2458/developer-grow-mcp-extension'
If you have feedback or need assistance with the MCP directory API, please join our Discord server