EaseCation User Center MCP Server

EaseCation User Center MCP Server

An MCP server for the EaseCation user center that provides admin and user tools to interact with UC backend services.

Category
访问服务器

README

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

环境要求

  • 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://ucapi.easecation.net
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://ucapi.easecation.net
  • 不要把真实 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

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选