UNPKG

@boybook/ec-usercenter-mcp-server

Version:

MCP server for EaseCation User Center ticket system - provides read-only access to tickets and player data

264 lines (196 loc) 6.37 kB
# EaseCation 用户中心 MCP Server 这是一个专为 EaseCation用户中心 设计的MCP(Model Context Protocol)服务器,提供对EaseCation用户中心工单系统的只读访问能力。 ## 功能特性 - **工单管理**:支持工单查询、详情获取、统计分析、AI回复建议等 - **玩家管理**:支持玩家搜索、基本信息查询、工单历史、操作日志等 - **权限管理**:支持用户信息获取和权限检查 - **只读访问**:仅提供查询类API,不包含创建、修改工单等写操作 - **管理员权限**:以管理员身份访问,可查看所有工单和玩家信息 ## 安装配置 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置环境变量 复制环境变量模板并填入配置信息: ```bash cp .env.example .env ``` 编辑 `.env` 文件,配置以下必需参数: ```bash # API 基础 URL EC_API_BASE_URL=https://ucapi.easecation.net # 管理员 JWT Token(必需) EC_JWT_TOKEN=your_admin_jwt_token_here # API 超时时间(可选,默认30秒) EC_API_TIMEOUT=30000 ``` ### 3. MCP 客户端配置 在使用此MCP服务器之前,需要在MCP客户端中添加服务器配置。以下是常见的配置示例: #### Claude Desktop 配置 在 Claude Desktop 的配置文件中添加: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "ec-usercenter": { "command": "npx", "args": ["@boybook/ec-usercenter-mcp-server"], "env": { "EC_API_BASE_URL": "https://ucapi.easecation.net", "EC_JWT_TOKEN": "your_admin_jwt_token_here", "EC_API_TIMEOUT": "30000" } } } } ``` #### 使用本地路径配置(开发环境) ```json { "mcpServers": { "ec-usercenter": { "command": "node", "args": ["/path/to/ec-usercenter-mcp-server/src/index.js"], "env": { "EC_API_BASE_URL": "https://ucapi.easecation.net", "EC_JWT_TOKEN": "your_admin_jwt_token_here", "EC_API_TIMEOUT": "30000" } } } } ``` #### 通用 MCP 客户端配置 ```json { "name": "ec-usercenter", "command": "npx", "args": ["@boybook/ec-usercenter-mcp-server"], "env": { "EC_API_BASE_URL": "https://ucapi.easecation.net", "EC_JWT_TOKEN": "your_admin_jwt_token_here" } } ``` ### 4. 安装和使用 #### 从 npm 安装(推荐) ```bash # 全局安装 npm install -g @boybook/ec-usercenter-mcp-server # 或者直接使用 npx(无需安装) npx @boybook/ec-usercenter-mcp-server ``` #### 本地开发 独立启动(用于调试): ```bash npm start ``` 或者开发模式(自动重启): ```bash npm run dev ``` #### 本地开发测试 确保npx入口工作正常: ```bash # 在项目根目录下 npm link npx ec-usercenter-mcp-server ``` #### 验证发布 ```bash # 检查包信息 npm view @boybook/ec-usercenter-mcp-server # 直接运行(npm可能需要几分钟同步) npx @boybook/ec-usercenter-mcp-server ``` ## 可用工具 ### 工单管理工具 (6个) 1. **query_tickets** - 高级工单查询 - 支持分页、多条件筛选 - 参数:page, pageSize, tid[], type[], status[], priority, initiator[], target[], advisor_uid[] 2. **get_ticket_detail** - 获取工单详情 - 包含完整历史记录 - 参数:tid (必需), anonymity (可选) 3. **get_ticket_list** - 获取工单列表 - 简化版工单列表 - 参数:type (可选), keyword (可选) 4. **get_ticket_count** - 获取工单统计 - 各类工单数量统计 - 参数:type (必需) 5. **get_ticket_ai_reply** - 获取AI回复建议 - 为指定工单生成回复建议 - 参数:tid (必需), prompt (可选) 6. **assign_ticket** - 分配工单 - 获取待处理工单进行分配 - 参数:type ('my'|'upgrade'|'unassigned') ### 玩家管理工具 (5个) 7. **search_players** - 搜索玩家 - 根据玩家名称搜索 - 参数:name (必需) 8. **get_player_basic** - 获取玩家基本信息 - 包含等级、金币、经验等 - 参数:ecid (必需) 9. **get_player_tickets** - 获取玩家工单历史 - 玩家相关的所有工单 - 参数:ecid (必需) 10. **get_player_logs** - 获取玩家操作历史 - 对玩家的管理操作记录 - 参数:ecid (必需) 11. **get_player_bans** - 获取玩家处罚历史 - 封禁、禁言等处罚记录 - 参数:ecid (必需) ### 认证管理工具 (2个) 12. **get_user_info** - 获取用户信息 - 当前Token对应的用户信息和权限 - 无参数 13. **check_staff_permission** - 检查管理员权限 - 验证管理员权限 - 参数:authorizer (必需) ## 工单类型说明 - **AG**: 误判申诉 - **AP**: 申请 - **RP**: 举报玩家 - **SP**: 商品补发 - **AW**: 微信解冻 - **OP**: 玩法咨询 - **JY**: 建议 - **RS**: 举报员工 - **MB**: 媒体绑定 - **MA**: 媒体审核 - **AB**: 媒体审核 - **MM**: 媒体月报 - **OT**: 其他 ## 错误处理 服务器会处理以下类型的错误: - **配置错误**: JWT Token 或 API URL 缺失 - **API错误**: 网络请求失败、权限不足等 - **参数验证错误**: 必需参数缺失、类型不匹配等 错误信息会以标准MCP格式返回,包含详细的错误描述。 ## 开发说明 ### 项目结构 ``` src/ ├── index.js # MCP server 入口点 ├── config.js # 环境变量配置管理 ├── api/ │ ├── client.js # HTTP API 客户端封装 │ ├── ticket-api.js # 工单相关 API 调用 │ ├── player-api.js # 玩家相关 API 调用 │ └── auth-api.js # 认证相关 API 调用 ├── tools/ │ ├── ticket-tools.js # 工单相关 MCP tools │ ├── player-tools.js # 玩家相关 MCP tools │ └── auth-tools.js # 认证相关 MCP tools └── utils/ ├── validators.js # 参数验证工具 └── errors.js # 错误处理工具 ``` ### 技术栈 - **Node.js 18+**: 运行环境 - **@modelcontextprotocol/sdk**: MCP 服务器框架 - **fetch API**: HTTP 请求(Node.js 原生) - **ES Modules**: 模块系统 ## 许可证 MIT License