mcp-paike 1.0.4 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,141 +1,5 @@
1
- # MCP Server - 薄荷排课系统 Claude Code 接口
1
+ # mcp-paike
2
2
 
3
- 这是一个 MCP (Model Context Protocol) 服务器,让 Claude Code 可以查询排课系统的数据。
3
+ 薄荷排课系统 MCP Server
4
4
 
5
- ## 快速开始(2步完成)
6
-
7
- ### 1. 配置
8
-
9
- 编辑 `~/.claude.json`(如果文件不存在就新建),添加以下内容:
10
-
11
- ```json
12
- {
13
- "mcpServers": {
14
- "paike": {
15
- "command": "npx",
16
- "args": ["-y", "mcp-paike@latest"]
17
- }
18
- }
19
- }
20
- ```
21
-
22
- > 如果文件已有其他内容,只需添加 `mcpServers` 字段即可。
23
-
24
- <details>
25
- <summary>国内网络慢?点击设置镜像源</summary>
26
-
27
- ```bash
28
- npm config set registry https://registry.npmmirror.com
29
- ```
30
-
31
- </details>
32
-
33
- <details>
34
- <summary>其他安装方式</summary>
35
-
36
- **全局安装(启动更快):**
37
-
38
- ```bash
39
- npm install -g mcp-paike
40
- ```
41
-
42
- 配置改为:
43
-
44
- ```json
45
- {
46
- "mcpServers": {
47
- "paike": {
48
- "command": "mcp-paike"
49
- }
50
- }
51
- }
52
- ```
53
-
54
- </details>
55
-
56
- ### 2. 登录
57
-
58
- 1. 重启 Claude Code(退出后重新打开)
59
- 2. 在 Claude Code 中说:「登录排课系统」
60
- 3. 浏览器会自动打开,扫码登录即可
61
-
62
- ---
63
-
64
- ## 可用工具
65
-
66
- | 工具名 | 描述 |
67
- |--------|------|
68
- | `login` | 企业微信登录 |
69
- | `get_current_user` | 获取当前登录用户信息 |
70
- | `list_students` | 查询学员列表 |
71
- | `get_student` | 获取学员详情 |
72
- | `get_student_class` | 获取学员当前班级 |
73
- | `get_student_packages` | 获取学员课包 |
74
- | `get_student_balances` | 获取学员课次余额 |
75
- | `list_classes` | 查询班级列表 |
76
- | `get_class` | 获取班级详情 |
77
- | `get_class_students` | 获取班级学员名单 |
78
- | `list_sessions` | 查询课程排期 |
79
- | `get_session` | 获取课程详情 |
80
- | `list_attendances` | 查询考勤记录 |
81
- | `get_attendance` | 获取考勤详情 |
82
- | `list_teachers` | 获取教师列表 |
83
-
84
- ## 使用示例
85
-
86
- ```
87
- # 查询在学学员
88
- list_students(status: "ACTIVE")
89
-
90
- # 搜索学员
91
- list_students(search: "张三")
92
-
93
- # 获取学员详情
94
- get_student(studentId: "xxx-xxx-xxx")
95
-
96
- # 查询本周课程
97
- list_sessions(startDate: "2025-12-22", endDate: "2025-12-28")
98
-
99
- # 查询考勤
100
- list_attendances(sessionId: "xxx-xxx-xxx")
101
- ```
102
-
103
- ## Token 说明
104
-
105
- - Token 有效期为 **24 小时**
106
- - 过期后重新说「登录排课系统」即可
107
- - Token 保存在 `~/.config/mcp-paike/credentials.json`
108
-
109
- ## 注意事项
110
-
111
- 1. **只读接口**: 不能修改任何数据,仅提供查询功能
112
- 2. **权限控制**: 查询结果受用户权限控制(教师只能看到自己班级的学员)
113
- 3. **Token 安全**: Token 请勿分享,它代表您的身份
114
-
115
- ---
116
-
117
- ## 本地开发
118
-
119
- ```bash
120
- cd mcp-server
121
- npm install
122
- npm run build
123
- npm run dev
124
- ```
125
-
126
- 本地开发模式的配置(`~/.claude.json`):
127
-
128
- ```json
129
- {
130
- "mcpServers": {
131
- "paike": {
132
- "command": "node",
133
- "args": ["/path/to/mcp-server/dist/index.js"],
134
- "env": {
135
- "MCP_API_BASE_URL": "https://paike.bohecoding.com",
136
- "MCP_AUTH_PAGE_URL": "https://paike.bohecoding.com/mcp-auth"
137
- }
138
- }
139
- }
140
- }
141
- ```
5
+ > 仅限内部使用
package/dist/index.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"attendances.d.ts","sourceRoot":"","sources":["../../src/tools/attendances.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAiCR;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,UAAU,CAAC;CAwDxB,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;oBAaN;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;CA+BrE,CAAC;AAGF,eAAO,MAAM,gBAAgB;;;;;;;;mBAQR,OAAO,CAAC,UAAU,CAAC;CAkCvC,CAAC;AAiCF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA5LJ;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;;oBAwED;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;mBA0CjD,OAAO,CAAC,UAAU,CAAC;IAuEvC,CAAC"}
1
+ {"version":3,"file":"attendances.d.ts","sourceRoot":"","sources":["../../src/tools/attendances.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAiCR;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,UAAU,CAAC;CAuDxB,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;oBAaN;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;CA+BrE,CAAC;AAGF,eAAO,MAAM,gBAAgB;;;;;;;;mBAQR,OAAO,CAAC,UAAU,CAAC;CAkCvC,CAAC;AAiCF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA3LJ;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;;oBAuED;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;mBA0CjD,OAAO,CAAC,UAAU,CAAC;IAuEvC,CAAC"}
@@ -60,11 +60,12 @@ export const listAttendancesTool = {
60
60
  sessionsDeducted: a.sessionsDeducted,
61
61
  deductionType: formatDeductionType(a.deductionType),
62
62
  }));
63
+ const totalPages = Math.ceil(result.total / result.pageSize) || 1;
63
64
  return {
64
65
  content: [
65
66
  {
66
67
  type: 'text',
67
- text: `查询结果: 共 ${result.pagination.total} 条记录 (第 ${result.pagination.page}/${result.pagination.totalPages} 页)\n\n` +
68
+ text: `查询结果: 共 ${result.total} 条记录 (第 ${result.page}/${totalPages} 页)\n\n` +
68
69
  attendances.map((a, index) => `${index + 1}. ${a.studentName} | ${a.sessionTime} [ID: ${a.id}]\n` +
69
70
  ` 班级: ${a.className}\n` +
70
71
  ` 状态: ${a.status} | 扣课: ${a.sessionsDeducted}节 (${a.deductionType})`).join('\n\n'),
@@ -1 +1 @@
1
- {"version":3,"file":"attendances.js","sourceRoot":"","sources":["../../src/tools/attendances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAO5C,mBAAmB;AACnB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mBAAmB;aACjC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mBAAmB;aACjC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACtB;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,WAAW;aACzB;SACF;QACD,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE,KAAK,EAAE,IAOf,EAAuB,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE7B,2CAA2C;YAC3C,MAAM,MAAM,GAAwB;gBAClC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;gBACjC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;aAC1D,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAQ/B,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAE/B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACtD,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI;gBAC5B,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;gBACjD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,MAAM;gBAC3C,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC9B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC;aACpD,CAAC,CAAC,CAAC;YAEJ,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW,MAAM,CAAC,UAAU,CAAC,KAAK,WAAW,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,SAAS;4BAChH,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE,CACxC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,WAAW,SAAS,CAAC,CAAC,EAAE,KAAK;gCACnE,UAAU,CAAC,CAAC,SAAS,IAAI;gCACzB,UAAU,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,gBAAgB,MAAM,CAAC,CAAC,aAAa,GAAG,CACvE,CAAC,IAAI,CAAC,MAAM,CAAC;qBACjB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,wBAAwB;AACxB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACtB;SACF;QACD,QAAQ,EAAE,CAAC,cAAc,CAAC;KAC3B;IACD,OAAO,EAAE,KAAK,EAAE,IAA8B,EAAuB,EAAE;QACrE,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE7B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,CAAM,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAErF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW;4BACf,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,IAAI;4BAC1C,SAAS,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI;4BAC1D,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,MAAM,IAAI;4BACpD,OAAO,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,IAAI,GAAG,MAAM;4BACzD,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;4BAC5C,QAAQ,UAAU,CAAC,gBAAgB,MAAM;4BACzC,SAAS,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM;4BAC5D,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrD,SAAS,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;qBAClD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE,KAAK,IAAyB,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEvB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAQ,oCAAoC,CAAC,CAAC;YAElF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBAC5C,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE,CACvD,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,EAAE,KAAK;gBAC7C,WAAW,CAAC,CAAC,QAAQ,IAAI;gBACzB,UAAU,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,CAChC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW,QAAQ,CAAC,MAAM,WAAW,SAAS,EAAE;qBACvD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,mBAAmB;AACnB,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,SAAS,GAA2B;QACxC,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;KACZ,CAAC;IACF,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAA2B;QACtC,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,KAAK;KACZ,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAClC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;CACjB,CAAC"}
1
+ {"version":3,"file":"attendances.js","sourceRoot":"","sources":["../../src/tools/attendances.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-paike",
3
- "version": "1.0.4",
3
+ "version": "1.0.7",
4
4
  "description": "MCP Server for Children's Coding Training Scheduling System - 少儿编程培训排课系统 Claude Code 接口",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -50,7 +50,7 @@
50
50
  "license": "GPL-3.0-only",
51
51
  "repository": {
52
52
  "type": "git",
53
- "url": "https://github.com/huangbow/mint_coding_management_system.git",
53
+ "url": "git+https://github.com/huangbow/mint_coding_management_system.git",
54
54
  "directory": "mcp-server"
55
55
  },
56
56
  "homepage": "https://github.com/huangbow/mint_coding_management_system/tree/main/mcp-server"
@@ -1,2 +0,0 @@
1
- export default function open(target: string): Promise<void>;
2
- //# sourceMappingURL=open.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/__tests__/__mocks__/open.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D"}
@@ -1,5 +0,0 @@
1
- // Mock for the 'open' package
2
- export default function open(target) {
3
- return Promise.resolve();
4
- }
5
- //# sourceMappingURL=open.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/__tests__/__mocks__/open.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,MAAc;IACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=toolRegistry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolRegistry.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/toolRegistry.test.ts"],"names":[],"mappings":""}
@@ -1,160 +0,0 @@
1
- // Unit tests for role-based tool filtering logic
2
- // Testing the filtering algorithm directly without importing heavy dependencies
3
- // Extract the filtering logic for testing
4
- function getToolsForRole(tools, userRole) {
5
- return tools.filter((tool) => {
6
- // No role requirement = available to all authenticated users
7
- if (!tool.requiredRole)
8
- return true;
9
- // ADMIN requirement: Only ADMIN or SUPER_ADMIN
10
- if (tool.requiredRole === 'ADMIN') {
11
- return userRole === 'ADMIN' || userRole === 'SUPER_ADMIN';
12
- }
13
- return false;
14
- });
15
- }
16
- describe('Role-based tool filtering', () => {
17
- // Mock tools for testing
18
- const mockTools = [
19
- {
20
- name: 'login',
21
- description: 'Login tool',
22
- inputSchema: { type: 'object', properties: {}, required: [] },
23
- handler: async () => ({ content: [] }),
24
- },
25
- {
26
- name: 'get_teacher_sales',
27
- description: 'Teacher sales tool (all users)',
28
- inputSchema: { type: 'object', properties: {}, required: [] },
29
- handler: async () => ({ content: [] }),
30
- },
31
- {
32
- name: 'get_student_balance_detail',
33
- description: 'Student balance tool (all users)',
34
- inputSchema: { type: 'object', properties: {}, required: [] },
35
- handler: async () => ({ content: [] }),
36
- },
37
- {
38
- name: 'get_session_fee_rules',
39
- description: 'Session fee rules (admin only)',
40
- inputSchema: { type: 'object', properties: {}, required: [] },
41
- handler: async () => ({ content: [] }),
42
- requiredRole: 'ADMIN',
43
- },
44
- ];
45
- describe('getToolsForRole', () => {
46
- it('should hide admin-only tools from STAFF users', () => {
47
- const tools = getToolsForRole(mockTools, 'STAFF');
48
- const toolNames = tools.map((t) => t.name);
49
- expect(toolNames).not.toContain('get_session_fee_rules');
50
- expect(toolNames).toContain('get_teacher_sales');
51
- expect(toolNames).toContain('get_student_balance_detail');
52
- expect(toolNames).toContain('login');
53
- expect(tools.length).toBe(3);
54
- });
55
- it('should show admin-only tools to ADMIN users', () => {
56
- const tools = getToolsForRole(mockTools, 'ADMIN');
57
- const toolNames = tools.map((t) => t.name);
58
- expect(toolNames).toContain('get_session_fee_rules');
59
- expect(toolNames).toContain('get_teacher_sales');
60
- expect(toolNames).toContain('get_student_balance_detail');
61
- expect(tools.length).toBe(4);
62
- });
63
- it('should show admin-only tools to SUPER_ADMIN users', () => {
64
- const tools = getToolsForRole(mockTools, 'SUPER_ADMIN');
65
- const toolNames = tools.map((t) => t.name);
66
- expect(toolNames).toContain('get_session_fee_rules');
67
- expect(tools.length).toBe(4);
68
- });
69
- it('should hide admin-only tools when user is null (not authenticated)', () => {
70
- const tools = getToolsForRole(mockTools, null);
71
- const toolNames = tools.map((t) => t.name);
72
- expect(toolNames).not.toContain('get_session_fee_rules');
73
- expect(toolNames).toContain('login');
74
- expect(tools.length).toBe(3);
75
- });
76
- it('should handle empty tools array', () => {
77
- const tools = getToolsForRole([], 'ADMIN');
78
- expect(tools.length).toBe(0);
79
- });
80
- it('should handle unknown role by hiding admin tools', () => {
81
- const tools = getToolsForRole(mockTools, 'UNKNOWN_ROLE');
82
- const toolNames = tools.map((t) => t.name);
83
- expect(toolNames).not.toContain('get_session_fee_rules');
84
- });
85
- });
86
- describe('Tool configuration validation', () => {
87
- it('admin-only tools should have requiredRole set to ADMIN', () => {
88
- const adminTool = mockTools.find((t) => t.name === 'get_session_fee_rules');
89
- expect(adminTool?.requiredRole).toBe('ADMIN');
90
- });
91
- it('regular tools should not have requiredRole set', () => {
92
- const regularTool = mockTools.find((t) => t.name === 'get_teacher_sales');
93
- expect(regularTool?.requiredRole).toBeUndefined();
94
- });
95
- });
96
- });
97
- describe('STAFF data isolation for get_teacher_sales', () => {
98
- // Test the permission logic for STAFF users
99
- function canStaffAccessTeacherData(userRole, userId, requestedTeacherId) {
100
- const isAdmin = userRole === 'ADMIN' || userRole === 'SUPER_ADMIN';
101
- if (!isAdmin) {
102
- // STAFF can only query their own data
103
- if (requestedTeacherId && requestedTeacherId !== userId) {
104
- return { allowed: false, reason: 'STAFF can only query own data' };
105
- }
106
- }
107
- return { allowed: true };
108
- }
109
- it('STAFF should be able to query their own data', () => {
110
- const result = canStaffAccessTeacherData('STAFF', 'user-123', 'user-123');
111
- expect(result.allowed).toBe(true);
112
- });
113
- it('STAFF should NOT be able to query other teachers data', () => {
114
- const result = canStaffAccessTeacherData('STAFF', 'user-123', 'other-user-456');
115
- expect(result.allowed).toBe(false);
116
- expect(result.reason).toBe('STAFF can only query own data');
117
- });
118
- it('STAFF should be able to query without specifying teacherId (defaults to self)', () => {
119
- const result = canStaffAccessTeacherData('STAFF', 'user-123', undefined);
120
- expect(result.allowed).toBe(true);
121
- });
122
- it('ADMIN should be able to query any teacher data', () => {
123
- const result = canStaffAccessTeacherData('ADMIN', 'admin-user', 'other-teacher-789');
124
- expect(result.allowed).toBe(true);
125
- });
126
- it('SUPER_ADMIN should be able to query any teacher data', () => {
127
- const result = canStaffAccessTeacherData('SUPER_ADMIN', 'super-admin', 'any-teacher');
128
- expect(result.allowed).toBe(true);
129
- });
130
- });
131
- describe('Currency parsing', () => {
132
- // Test the fixed currency parsing logic
133
- function parseCurrency(value) {
134
- return parseFloat((value || '¥0').replace('¥', '').replace(/,/g, '')) || 0;
135
- }
136
- it('should parse simple currency values', () => {
137
- expect(parseCurrency('¥123.45')).toBe(123.45);
138
- });
139
- it('should parse values with thousands separator', () => {
140
- expect(parseCurrency('¥12,345.67')).toBe(12345.67);
141
- });
142
- it('should parse values with multiple commas', () => {
143
- expect(parseCurrency('¥1,234,567.89')).toBe(1234567.89);
144
- });
145
- it('should handle null values', () => {
146
- expect(parseCurrency(null)).toBe(0);
147
- });
148
- it('should handle undefined values', () => {
149
- expect(parseCurrency(undefined)).toBe(0);
150
- });
151
- it('should handle values without currency symbol', () => {
152
- expect(parseCurrency('1,234.56')).toBe(1234.56);
153
- });
154
- it('should handle zero values', () => {
155
- expect(parseCurrency('¥0')).toBe(0);
156
- expect(parseCurrency('¥0.00')).toBe(0);
157
- });
158
- });
159
- export {};
160
- //# sourceMappingURL=toolRegistry.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolRegistry.test.js","sourceRoot":"","sources":["../../src/__tests__/toolRegistry.test.ts"],"names":[],"mappings":"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"}