Skip to main content
Glama
EaseCation

EaseCation User Center MCP Server

Official
by EaseCation

EaseCation User Center MCP Server

面向 easecation-user-center 的现代 MCP Server,基于最新的 TypeScript SDK 设计思路实现,支持:

  • McpServer 声明式工具注册

  • structuredContent + outputSchema

  • tool annotations(只读/副作用提示)

  • stdioStreamable HTTP 双 transport

  • 管理员态 admin_* 工具

  • 用户态 me_* 工具,适合个人 agent 服务

核心定位

这个仓库不是简单把 UC 后端接口“裸转发”成 MCP。

它做了三层整理:

  1. 把管理员态和用户态分开,避免权限语义混乱。

  2. 把返回值统一成结构化 MCP 输出,便于 agent 稳定消费。

  3. 提供几个面向 agent 的聚合工具,例如:

    • me_get_account_overview

    • me_get_ecid_overview

    • admin_get_player_snapshot

Related MCP server: mcpdeployment

环境要求

  • Node.js 18+

  • 推荐 Node.js 22+

安装

npm install

配置

复制环境变量模板:

cp .env.example .env

常用配置项

  • EC_API_BASE_URL 默认 http://127.0.0.1:9000,真实环境建议显式设置成 UC 后端域名

  • EC_ENABLE_ADMIN_TOOLS 是否启用管理员态工具

  • EC_ENABLE_USER_TOOLS 是否启用用户态工具

  • EC_ADMIN_JWT_TOKEN 管理员 access token

  • EC_ADMIN_REFRESH_TOKEN 管理员 refresh token。配置后会在 access token 失效时自动续期

  • EC_USER_JWT_TOKEN 用户 access token

  • EC_USER_REFRESH_TOKEN 用户 refresh token。配置后会在 access token 失效时自动续期

  • MCP_TRANSPORT stdiostreamable-http

  • MCP_HTTP_BEARER_TOKEN 远程 streamable-http 入口的 Bearer Token。只要把真实 UC token 部署到云端,就应该同时配置它

本地联调

对接真实 UC 后端

.env 改成真实环境:

EC_API_BASE_URL=https://my.easecation.net/api
EC_ENABLE_ADMIN_TOOLS=true
EC_ENABLE_USER_TOOLS=true
EC_ADMIN_JWT_TOKEN=your-real-admin-access-token
EC_ADMIN_REFRESH_TOKEN=your-real-admin-refresh-token
EC_USER_JWT_TOKEN=your-real-user-access-token
EC_USER_REFRESH_TOKEN=your-real-user-refresh-token
MCP_TRANSPORT=stdio

推荐同时配置 access token 和 refresh token。当前端 JWT 只有 5 分钟有效期时,MCP 会在遇到 401EPF_code=8003 时自动调用 /user/refresh,刷新后重试一次原请求。

启动

stdio 模式

npm start

Streamable HTTP 模式

MCP_TRANSPORT=streamable-http
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3100
MCP_HTTP_PATH=/mcp
MCP_HTTP_BEARER_TOKEN=replace-with-a-random-secret
npm start

默认监听:

http://127.0.0.1:3100/mcp

同时提供:

  • GET /healthz

  • GET /

适合反向代理、函数计算健康检查和部署后探活。

如果配置了 MCP_HTTP_BEARER_TOKEN,只有带 Authorization: Bearer <token>X-Mcp-Bearer-Token: <token> 的请求才能访问 POST /mcpGET /healthzGET / 仍然保持开放,便于探活。

Claude Desktop 配置

{
  "mcpServers": {
    "ec-usercenter": {
      "command": "node",
      "args": ["/absolute/path/to/ec-usercenter-mcp-server/src/index.js"],
      "env": {
        "EC_API_BASE_URL": "http://127.0.0.1:9000",
        "EC_ENABLE_ADMIN_TOOLS": "true",
        "EC_ENABLE_USER_TOOLS": "true",
        "EC_ADMIN_JWT_TOKEN": "your-admin-access-token",
        "EC_ADMIN_REFRESH_TOKEN": "your-admin-refresh-token",
        "EC_USER_JWT_TOKEN": "your-user-access-token",
        "EC_USER_REFRESH_TOKEN": "your-user-refresh-token",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

主要工具

用户态 me_*

  • me_get_current_user

  • me_list_ecids

  • me_get_account_overview

  • me_get_ecid_detail

  • me_get_binding_info

  • me_get_email_security

  • me_get_ticket_list

  • me_get_ticket_count

  • me_get_ticket_detail

  • me_get_ticket_choices

  • me_get_admin_recruitment_time

  • me_search_players

  • me_get_scoretop

  • me_get_vip_gift_status

  • me_get_console_player_url

  • me_get_year_summary

  • me_get_ticket_creation_context

  • me_get_ecid_overview

管理员态 admin_*

  • admin_get_current_user

  • admin_check_staff_permission

  • admin_query_tickets

  • admin_get_ticket_detail

  • admin_get_ticket_count

  • admin_get_my_tickets

  • admin_get_ticket_ai_reply

  • admin_assign_ticket

  • admin_search_players

  • admin_get_player_basic

  • admin_get_player_info

  • admin_get_player_tickets

  • admin_get_player_logs

  • admin_get_player_bans

  • admin_get_player_chat_history

  • admin_get_player_auth_history

  • admin_get_player_exchange_log

  • admin_get_player_recording_history

  • admin_get_player_merchandise

  • admin_get_player_tasks

  • admin_get_player_snapshot

MCP 资源

  • ec-usercenter://capabilities

用于查看当前启用的模式、工具列表和后端地址。

脚本

npm test
npm run smoke
npm run fc:plan
npm run fc:deploy
npm run fc:info
npm run fc:smoke:mcp -- --url https://example.com --bearer your-shared-token

npm run smoke 适合在你已经配置好真实 .env 后做快速连通性探测。

部署

目标形态

仓库内置了面向阿里云 Function Compute 3.0 的 Streamable HTTP 部署方案:

  • s.yaml:生产环境

设计上和 easecation-user-center 一致,走 GitHub Actions + Serverless Devs;但实现比 user-center 更轻,没有拆 OSS/CDN/后端三段流水线,而是单函数直发。

当前 FC 模板使用 custom.debian10。按阿里云官方文档要求,模板已显式把 /var/fc/lang/nodejs20/bin 注入 PATH,这样实例内可以直接执行 npm start

本机手动部署

要求:

  • 已安装并配置 aliyun CLI

  • 有可用的阿里云 AK

  • 本地 .env 已准备好 UC token / refresh token

安装 Serverless Devs:

npm install -g @serverless-devs/s

配置 access:

s config add --AccessKeyID <ak> --AccessKeySecret <sk> --region cn-hangzhou -f -a default

部署前建议先看计划:

npm run fc:plan

部署:

npm run fc:deploy

查看云端信息:

npm run fc:info
aliyun fc GetFunction --region cn-hangzhou --functionName ec-usercenter-mcp-server
aliyun fc ListTriggers --region cn-hangzhou --functionName ec-usercenter-mcp-server

如果生产部署里启用了真实 admin_*me_* 工具,强烈建议同时设置 MCP_HTTP_BEARER_TOKEN,否则等于把带权限的 MCP 公网暴露出去。

GitHub Actions

仓库现在的 GitHub Actions 入口有 2 条 workflow:

  • .github/workflows/quality-check.yml

  • .github/workflows/deploy-fc.yml

其中生产部署复用:

  • .github/workflows/reusable-fc-deploy.yml

生产环境 workflow 默认改成手动触发。和 user-center 不同,这个 MCP 服务会持有真实 UC token,所以不建议把 push main 直接绑定到生产部署。

部署 workflow 会做这些事:

  1. npm ci

  2. npm test

  3. s plan

  4. s deploy

  5. s info

  6. aliyun fc GetFunction / ListTriggers

  7. 调用 GET /healthz 做远程探活

  8. 调用 MCP resources/read / tools/list 做远程协议探活

GitHub Environment / Secrets

建议在 GitHub 里创建一个 Environment:

  • production

每个环境至少配置这些 secrets:

  • ALIYUN_ACCESS_KEY_ID

  • ALIYUN_ACCESS_KEY_SECRET

  • MCP_HTTP_BEARER_TOKEN

  • EC_ADMIN_JWT_TOKENEC_ADMIN_REFRESH_TOKEN

  • EC_USER_JWT_TOKENEC_USER_REFRESH_TOKEN

可选:

  • FEISHU_WEBHOOK

说明:

  • workflow 会根据 secrets 是否存在,自动决定是否启用 admin_* / me_* 工具

  • 只要启用了 admin_*me_* 远程工具,workflow 会强制要求 MCP_HTTP_BEARER_TOKEN

  • 生产 workflow 默认连 https://my.easecation.net/api

  • 不要把真实 token 写进仓库文件,只放 GitHub Environment secrets 或本地 .env

设计说明

  • 返回结果统一为:

    • structuredContent

    • content

  • 读取类工具会带 readOnlyHint

  • admin_assign_ticket 明确标记为有副作用工具

  • 工具名称显式区分 admin_*me_*,避免权限混淆

后续建议

如果你还要继续扩展个人 agent 能力,建议下一步优先补这几类聚合工具:

  • me_get_ticket_snapshot

  • me_get_media_profile

  • me_get_security_overview

  • admin_get_ticket_snapshot

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server providing tools for user information management with capabilities for retrieving, searching, and adding user data stored in a JSON file.
    6
    2
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Unified MCP server for ArcGIS Online and Enterprise providing tools for user/group management, item management, geoprocessing, feature layer queries/editing, and server administration.
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server with HTTP/stdio support, a web admin panel for managing services, capabilities, and user permissions with Bearer token authentication, enabling relay and access control for MCP tools.
    -