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.
README
EaseCation User Center MCP Server
面向 easecation-user-center 的现代 MCP Server,基于最新的 TypeScript SDK 设计思路实现,支持:
McpServer声明式工具注册structuredContent + outputSchema- tool annotations(只读/副作用提示)
stdio与Streamable HTTP双 transport- 管理员态
admin_*工具 - 用户态
me_*工具,适合个人 agent 服务
核心定位
这个仓库不是简单把 UC 后端接口“裸转发”成 MCP。
它做了三层整理:
- 把管理员态和用户态分开,避免权限语义混乱。
- 把返回值统一成结构化 MCP 输出,便于 agent 稳定消费。
- 提供几个面向 agent 的聚合工具,例如:
me_get_account_overviewme_get_ecid_overviewadmin_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 tokenEC_ADMIN_REFRESH_TOKEN管理员 refresh token。配置后会在 access token 失效时自动续期EC_USER_JWT_TOKEN用户 access tokenEC_USER_REFRESH_TOKEN用户 refresh token。配置后会在 access token 失效时自动续期MCP_TRANSPORTstdio或streamable-httpMCP_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 会在遇到 401 或 EPF_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 /healthzGET /
适合反向代理、函数计算健康检查和部署后探活。
如果配置了 MCP_HTTP_BEARER_TOKEN,只有带 Authorization: Bearer <token> 或 X-Mcp-Bearer-Token: <token> 的请求才能访问 POST /mcp。GET /healthz 与 GET / 仍然保持开放,便于探活。
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_userme_list_ecidsme_get_account_overviewme_get_ecid_detailme_get_binding_infome_get_email_securityme_get_ticket_listme_get_ticket_countme_get_ticket_detailme_get_ticket_choicesme_get_admin_recruitment_timeme_search_playersme_get_scoretopme_get_vip_gift_statusme_get_console_player_urlme_get_year_summaryme_get_ticket_creation_contextme_get_ecid_overview
管理员态 admin_*
admin_get_current_useradmin_check_staff_permissionadmin_query_ticketsadmin_get_ticket_detailadmin_get_ticket_countadmin_get_my_ticketsadmin_get_ticket_ai_replyadmin_assign_ticketadmin_search_playersadmin_get_player_basicadmin_get_player_infoadmin_get_player_ticketsadmin_get_player_logsadmin_get_player_bansadmin_get_player_chat_historyadmin_get_player_auth_historyadmin_get_player_exchange_logadmin_get_player_recording_historyadmin_get_player_merchandiseadmin_get_player_tasksadmin_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。
本机手动部署
要求:
- 已安装并配置
aliyunCLI - 有可用的阿里云 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 会做这些事:
npm cinpm tests plans deploys infoaliyun fc GetFunction / ListTriggers- 调用
GET /healthz做远程探活 - 调用 MCP
resources/read/tools/list做远程协议探活
GitHub Environment / Secrets
建议在 GitHub 里创建一个 Environment:
production
每个环境至少配置这些 secrets:
ALIYUN_ACCESS_KEY_IDALIYUN_ACCESS_KEY_SECRETMCP_HTTP_BEARER_TOKENEC_ADMIN_JWT_TOKEN或EC_ADMIN_REFRESH_TOKENEC_USER_JWT_TOKEN或EC_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
设计说明
- 返回结果统一为:
structuredContentcontent
- 读取类工具会带
readOnlyHint admin_assign_ticket明确标记为有副作用工具- 工具名称显式区分
admin_*和me_*,避免权限混淆
后续建议
如果你还要继续扩展个人 agent 能力,建议下一步优先补这几类聚合工具:
me_get_ticket_snapshotme_get_media_profileme_get_security_overviewadmin_get_ticket_snapshot
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。