@creatoria/miniapp-mcp 0.1.0

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.
Files changed (160) hide show
  1. package/README.md +469 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +144 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/config/defaults.d.ts +73 -0
  7. package/dist/config/defaults.d.ts.map +1 -0
  8. package/dist/config/defaults.js +118 -0
  9. package/dist/config/defaults.js.map +1 -0
  10. package/dist/config/loader.d.ts +50 -0
  11. package/dist/config/loader.d.ts.map +1 -0
  12. package/dist/config/loader.js +189 -0
  13. package/dist/config/loader.js.map +1 -0
  14. package/dist/core/element-ref.d.ts +44 -0
  15. package/dist/core/element-ref.d.ts.map +1 -0
  16. package/dist/core/element-ref.js +213 -0
  17. package/dist/core/element-ref.js.map +1 -0
  18. package/dist/core/logger.d.ts +55 -0
  19. package/dist/core/logger.d.ts.map +1 -0
  20. package/dist/core/logger.js +378 -0
  21. package/dist/core/logger.js.map +1 -0
  22. package/dist/core/output.d.ts +21 -0
  23. package/dist/core/output.d.ts.map +1 -0
  24. package/dist/core/output.js +56 -0
  25. package/dist/core/output.js.map +1 -0
  26. package/dist/core/report-generator.d.ts +24 -0
  27. package/dist/core/report-generator.d.ts.map +1 -0
  28. package/dist/core/report-generator.js +212 -0
  29. package/dist/core/report-generator.js.map +1 -0
  30. package/dist/core/session.d.ts +83 -0
  31. package/dist/core/session.d.ts.map +1 -0
  32. package/dist/core/session.js +306 -0
  33. package/dist/core/session.js.map +1 -0
  34. package/dist/core/timeout.d.ts +49 -0
  35. package/dist/core/timeout.d.ts.map +1 -0
  36. package/dist/core/timeout.js +67 -0
  37. package/dist/core/timeout.js.map +1 -0
  38. package/dist/core/tool-logger.d.ts +83 -0
  39. package/dist/core/tool-logger.d.ts.map +1 -0
  40. package/dist/core/tool-logger.js +453 -0
  41. package/dist/core/tool-logger.js.map +1 -0
  42. package/dist/core/validation.d.ts +39 -0
  43. package/dist/core/validation.d.ts.map +1 -0
  44. package/dist/core/validation.js +93 -0
  45. package/dist/core/validation.js.map +1 -0
  46. package/dist/index.d.ts +7 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +6 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/server.d.ts +7 -0
  51. package/dist/server.d.ts.map +1 -0
  52. package/dist/server.js +85 -0
  53. package/dist/server.js.map +1 -0
  54. package/dist/tools/assert.d.ts +108 -0
  55. package/dist/tools/assert.d.ts.map +1 -0
  56. package/dist/tools/assert.js +291 -0
  57. package/dist/tools/assert.js.map +1 -0
  58. package/dist/tools/automator.d.ts +45 -0
  59. package/dist/tools/automator.d.ts.map +1 -0
  60. package/dist/tools/automator.js +186 -0
  61. package/dist/tools/automator.js.map +1 -0
  62. package/dist/tools/element.d.ts +253 -0
  63. package/dist/tools/element.d.ts.map +1 -0
  64. package/dist/tools/element.js +615 -0
  65. package/dist/tools/element.js.map +1 -0
  66. package/dist/tools/index.d.ts +97 -0
  67. package/dist/tools/index.d.ts.map +1 -0
  68. package/dist/tools/index.js +1565 -0
  69. package/dist/tools/index.js.map +1 -0
  70. package/dist/tools/miniprogram.d.ts +79 -0
  71. package/dist/tools/miniprogram.d.ts.map +1 -0
  72. package/dist/tools/miniprogram.js +245 -0
  73. package/dist/tools/miniprogram.js.map +1 -0
  74. package/dist/tools/network.d.ts +65 -0
  75. package/dist/tools/network.d.ts.map +1 -0
  76. package/dist/tools/network.js +205 -0
  77. package/dist/tools/network.js.map +1 -0
  78. package/dist/tools/page.d.ts +108 -0
  79. package/dist/tools/page.d.ts.map +1 -0
  80. package/dist/tools/page.js +307 -0
  81. package/dist/tools/page.js.map +1 -0
  82. package/dist/tools/record.d.ts +86 -0
  83. package/dist/tools/record.d.ts.map +1 -0
  84. package/dist/tools/record.js +316 -0
  85. package/dist/tools/record.js.map +1 -0
  86. package/dist/tools/snapshot.d.ts +82 -0
  87. package/dist/tools/snapshot.d.ts.map +1 -0
  88. package/dist/tools/snapshot.js +258 -0
  89. package/dist/tools/snapshot.js.map +1 -0
  90. package/dist/types.d.ts +240 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +5 -0
  93. package/dist/types.js.map +1 -0
  94. package/docs/SIMPLE_USAGE.md +210 -0
  95. package/docs/api/README.md +244 -0
  96. package/docs/api/assert.md +1015 -0
  97. package/docs/api/automator.md +345 -0
  98. package/docs/api/element.md +1454 -0
  99. package/docs/api/miniprogram.md +558 -0
  100. package/docs/api/network.md +883 -0
  101. package/docs/api/page.md +909 -0
  102. package/docs/api/record.md +963 -0
  103. package/docs/api/snapshot.md +792 -0
  104. package/docs/architecture.E-Docs.md +1359 -0
  105. package/docs/architecture.F1.md +720 -0
  106. package/docs/architecture.F2.md +871 -0
  107. package/docs/architecture.F3.md +905 -0
  108. package/docs/architecture.md +90 -0
  109. package/docs/charter.A1.align.yaml +170 -0
  110. package/docs/charter.A2.align.yaml +199 -0
  111. package/docs/charter.A3.align.yaml +242 -0
  112. package/docs/charter.A4.align.yaml +227 -0
  113. package/docs/charter.B1.align.yaml +179 -0
  114. package/docs/charter.B2.align.yaml +200 -0
  115. package/docs/charter.B3.align.yaml +200 -0
  116. package/docs/charter.B4.align.yaml +188 -0
  117. package/docs/charter.C1.align.yaml +190 -0
  118. package/docs/charter.C2.align.yaml +202 -0
  119. package/docs/charter.C3.align.yaml +211 -0
  120. package/docs/charter.C4.align.yaml +263 -0
  121. package/docs/charter.C5.align.yaml +220 -0
  122. package/docs/charter.D1.align.yaml +190 -0
  123. package/docs/charter.D2.align.yaml +234 -0
  124. package/docs/charter.D3.align.yaml +206 -0
  125. package/docs/charter.E-Docs.align.yaml +294 -0
  126. package/docs/charter.F1.align.yaml +193 -0
  127. package/docs/charter.F2.align.yaml +248 -0
  128. package/docs/charter.F3.align.yaml +287 -0
  129. package/docs/charter.G.align.yaml +174 -0
  130. package/docs/charter.align.yaml +111 -0
  131. package/docs/examples/session-report-usage.md +449 -0
  132. package/docs/maintenance.md +682 -0
  133. package/docs/playwright-mcp/350/260/203/347/240/224.md +53 -0
  134. package/docs/setup-guide.md +775 -0
  135. package/docs/tasks.A1.atomize.md +296 -0
  136. package/docs/tasks.A2.atomize.md +408 -0
  137. package/docs/tasks.A3.atomize.md +564 -0
  138. package/docs/tasks.A4.atomize.md +496 -0
  139. package/docs/tasks.B1.atomize.md +352 -0
  140. package/docs/tasks.B2.atomize.md +561 -0
  141. package/docs/tasks.B3.atomize.md +508 -0
  142. package/docs/tasks.B4.atomize.md +504 -0
  143. package/docs/tasks.C1.atomize.md +540 -0
  144. package/docs/tasks.C2.atomize.md +665 -0
  145. package/docs/tasks.C3.atomize.md +745 -0
  146. package/docs/tasks.C4.atomize.md +908 -0
  147. package/docs/tasks.C5.atomize.md +755 -0
  148. package/docs/tasks.D1.atomize.md +547 -0
  149. package/docs/tasks.D2.atomize.md +619 -0
  150. package/docs/tasks.D3.atomize.md +790 -0
  151. package/docs/tasks.E-Docs.atomize.md +1204 -0
  152. package/docs/tasks.atomize.md +189 -0
  153. package/docs/troubleshooting.md +855 -0
  154. package/docs//345/256/214/346/225/264/345/256/236/347/216/260/346/226/271/346/241/210.md +155 -0
  155. package/docs//345/274/200/345/217/221/344/273/273/345/212/241/350/256/241/345/210/222.md +110 -0
  156. package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226API/345/256/214/346/225/264/346/226/207/346/241/243.md +894 -0
  157. package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226/345/256/214/346/225/264/346/223/215/344/275/234/346/211/213/345/206/214.md +1885 -0
  158. package/docs//346/216/245/345/217/243/346/226/271/346/241/210.md +565 -0
  159. package/docs//347/254/254/344/270/200/347/211/210/346/234/254/346/226/271/346/241/210.md +380 -0
  160. package/package.json +87 -0
@@ -0,0 +1,352 @@
1
+ # Task Card: [B1] MCP Server 骨架
2
+
3
+ **Task ID**: B1
4
+ **Task Name**: MCP Server 骨架实现
5
+ **Charter**: `docs/charter.B1.align.yaml`
6
+ **Stage**: B (Core Architecture)
7
+ **Status**: ✅ COMPLETED (Retrospective)
8
+ **Estimated**: 2-3 hours
9
+ **Actual**: ~2 hours
10
+ **Completed**: 2025-10-02
11
+
12
+ ---
13
+
14
+ ## 目标 (Goal)
15
+
16
+ 实现可运行的 MCP Server 入口,支持 stdio transport 连接,为后续工具注册提供基础框架。
17
+
18
+ **交付物**:
19
+ - ✅ `src/server.ts` (64 lines)
20
+ - ✅ `startServer(config)` 函数
21
+ - ✅ ListToolsRequestSchema 处理器
22
+ - ✅ 优雅关闭机制
23
+
24
+ ---
25
+
26
+ ## 前置条件 (Prerequisites)
27
+
28
+ - ✅ A3: 仓库结构已初始化
29
+ - ✅ `@modelcontextprotocol/sdk` 已安装 (v0.x.x)
30
+ - ✅ TypeScript 配置完成 (tsconfig.json)
31
+ - ✅ 了解 MCP 协议基础
32
+
33
+ ---
34
+
35
+ ## 实现步骤 (Steps)
36
+
37
+ ### 1. 创建 Server 入口文件 ✅
38
+
39
+ **文件**: `src/server.ts`
40
+
41
+ **步骤**:
42
+ ```typescript
43
+ // 导入 MCP SDK
44
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js'
45
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
46
+ import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'
47
+
48
+ // 定义 startServer 函数
49
+ export async function startServer(config: ServerConfig = {}) {
50
+ // 实现...
51
+ }
52
+ ```
53
+
54
+ **验证**: TypeScript 编译通过,无导入错误
55
+
56
+ ---
57
+
58
+ ### 2. 实例化 Server 对象 ✅
59
+
60
+ **代码**:
61
+ ```typescript
62
+ const server = new Server(
63
+ {
64
+ name: 'creatoria-miniapp-mcp',
65
+ version: '0.1.0',
66
+ },
67
+ {
68
+ capabilities: {
69
+ tools: {},
70
+ },
71
+ }
72
+ )
73
+ ```
74
+
75
+ **验证**: Server 对象创建成功
76
+
77
+ ---
78
+
79
+ ### 3. 集成 SessionStore ✅
80
+
81
+ **代码**:
82
+ ```typescript
83
+ import { SessionStore } from './core/session.js'
84
+
85
+ const { capabilities = ['core'], outputDir, sessionTimeout } = config
86
+
87
+ const sessionStore = new SessionStore({
88
+ outputDir,
89
+ sessionTimeout,
90
+ })
91
+ ```
92
+
93
+ **验证**: SessionStore 正确接收配置
94
+
95
+ ---
96
+
97
+ ### 4. 注册工具 ✅
98
+
99
+ **代码**:
100
+ ```typescript
101
+ import { registerTools } from './tools/index.js'
102
+
103
+ const tools = registerTools(server, {
104
+ capabilities,
105
+ getSession: (sessionId) => {
106
+ const session = sessionStore.getOrCreate(sessionId)
107
+ sessionStore.updateActivity(sessionId)
108
+ return session
109
+ },
110
+ deleteSession: (sessionId) => sessionStore.delete(sessionId),
111
+ })
112
+ ```
113
+
114
+ **验证**: tools 数组包含注册的工具
115
+
116
+ ---
117
+
118
+ ### 5. 实现 ListToolsRequestSchema 处理器 ✅
119
+
120
+ **代码**:
121
+ ```typescript
122
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
123
+ return { tools }
124
+ })
125
+ ```
126
+
127
+ **验证**: `list_tools` 请求返回正确工具列表
128
+
129
+ ---
130
+
131
+ ### 6. 配置 Transport 并连接 ✅
132
+
133
+ **代码**:
134
+ ```typescript
135
+ const transport = new StdioServerTransport()
136
+ await server.connect(transport)
137
+
138
+ console.error('WeChat Mini Program MCP Server running on stdio')
139
+ console.error(`Capabilities: ${capabilities.join(', ')}`)
140
+ console.error(`Tools registered: ${tools.length}`)
141
+ ```
142
+
143
+ **验证**:
144
+ - 日志输出到 stderr
145
+ - Server 成功监听 stdin/stdout
146
+
147
+ ---
148
+
149
+ ### 7. 实现优雅关闭 ✅
150
+
151
+ **代码**:
152
+ ```typescript
153
+ const cleanup = () => {
154
+ console.error('\nShutting down MCP server...')
155
+ sessionStore.dispose()
156
+ process.exit(0)
157
+ }
158
+
159
+ process.on('SIGINT', cleanup)
160
+ process.on('SIGTERM', cleanup)
161
+ ```
162
+
163
+ **验证**:
164
+ - CTRL+C 触发 cleanup
165
+ - sessionStore.dispose() 被调用
166
+ - 进程正常退出
167
+
168
+ ---
169
+
170
+ ## 完成标准 (Definition of Done)
171
+
172
+ ### 功能完成 ✅
173
+
174
+ - [x] `node dist/server.js` 可启动 Server
175
+ - [x] MCP 客户端可连接
176
+ - [x] `list_tools` 返回工具列表
177
+ - [x] SIGINT/SIGTERM 触发优雅关闭
178
+ - [x] sessionStore.dispose() 正确调用
179
+
180
+ ### 代码质量 ✅
181
+
182
+ - [x] TypeScript 编译 0 错误
183
+ - [x] 无 ESLint 错误
184
+ - [x] 代码行数 <100 行 (实际 64 行)
185
+ - [x] JSDoc 注释完整
186
+ - [x] 符合 ESM 规范(.js 后缀)
187
+
188
+ ### 测试 ✅
189
+
190
+ - [x] 手动测试:启动并连接成功
191
+ - [x] 集成测试:通过工具测试间接验证
192
+ - [x] 优雅关闭测试:CTRL+C 正常退出
193
+
194
+ ### 文档 ⏳
195
+
196
+ - [x] 代码注释完整
197
+ - [x] README 更新(启动说明)
198
+ - [x] types.ts 定义 ServerConfig
199
+ - ⏳ charter.B1.align.yaml (追溯)
200
+ - ⏳ tasks.B1.atomize.md (本文档)
201
+
202
+ ---
203
+
204
+ ## 实现结果 (Implementation)
205
+
206
+ ### 文件清单
207
+
208
+ | 文件 | 行数 | 说明 |
209
+ |------|------|------|
210
+ | `src/server.ts` | 64 | Server 入口和配置 |
211
+ | `src/types.ts` | +10 | ServerConfig 接口 |
212
+
213
+ ### 关键代码片段
214
+
215
+ **ServerConfig 接口**:
216
+ ```typescript
217
+ export interface ServerConfig {
218
+ capabilities?: string[]
219
+ outputDir?: string
220
+ sessionTimeout?: number
221
+ }
222
+ ```
223
+
224
+ **startServer 函数签名**:
225
+ ```typescript
226
+ export async function startServer(config: ServerConfig = {}): Promise<void>
227
+ ```
228
+
229
+ ### 设计决策
230
+
231
+ 1. **函数式 API**
232
+ - 使用 `startServer()` 函数而非类封装
233
+ - 理由:简化使用,便于测试
234
+
235
+ 2. **依赖注入**
236
+ - SessionStore 和 registerTools 通过参数传入
237
+ - 理由:解耦,提高可测试性
238
+
239
+ 3. **stderr 日志**
240
+ - 所有日志输出到 console.error
241
+ - 理由:避免干扰 stdio transport
242
+
243
+ 4. **优雅关闭**
244
+ - 监听 SIGINT/SIGTERM
245
+ - 理由:确保资源释放(SessionStore.dispose)
246
+
247
+ ---
248
+
249
+ ## 测试证据 (Test Evidence)
250
+
251
+ ### 手动测试
252
+
253
+ **启动 Server**:
254
+ ```bash
255
+ $ node dist/server.js
256
+ WeChat Mini Program MCP Server running on stdio
257
+ Capabilities: core
258
+ Tools registered: 4
259
+ ```
260
+
261
+ **MCP 客户端连接**:
262
+ ```bash
263
+ # 使用 MCP Inspector 或 Claude Desktop 连接
264
+ # 验证 list_tools 返回正确工具列表
265
+ ```
266
+
267
+ **优雅关闭**:
268
+ ```bash
269
+ $ node dist/server.js
270
+ ^C
271
+ Shutting down MCP server...
272
+ Session 12345 cleaned up successfully
273
+ ```
274
+
275
+ ### 集成测试
276
+
277
+ 通过后续 C1-C5 工具测试间接验证:
278
+ - ✅ Server 可正常启动
279
+ - ✅ 工具调用成功
280
+ - ✅ SessionStore 正常工作
281
+
282
+ ---
283
+
284
+ ## 已知问题 (Known Issues)
285
+
286
+ ### 技术债务
287
+
288
+ 1. **无单元测试** - 🟡 中优先级
289
+ - 原因:Server 入口代码难以单独测试
290
+ - 影响:依赖集成测试验证
291
+ - 计划:Stage G 补充集成测试
292
+
293
+ 2. **仅支持 stdio** - 🟢 低优先级
294
+ - 原因:当前需求仅 stdio
295
+ - 影响:无法通过 HTTP/WebSocket 连接
296
+ - 计划:未来扩展 transport
297
+
298
+ ### 风险
299
+
300
+ 1. **MCP SDK 升级** - 🟢 低风险
301
+ - 缓解:锁定 SDK 版本
302
+ - 监控:定期检查 SDK 更新
303
+
304
+ ---
305
+
306
+ ## 参考资料 (References)
307
+
308
+ ### 文档
309
+
310
+ - `docs/完整实现方案.md` - Server 架构设计
311
+ - `docs/第一版本方案.md` - MCP 集成方案
312
+ - `docs/charter.B1.align.yaml` - 任务对齐文档
313
+
314
+ ### 代码
315
+
316
+ - `src/core/session.ts` - SessionStore 实现(B2)
317
+ - `src/tools/index.ts` - registerTools 函数(C5)
318
+
319
+ ### 外部资源
320
+
321
+ - [MCP SDK 文档](https://github.com/anthropics/modelcontextprotocol)
322
+ - [MCP 协议规范](https://spec.modelcontextprotocol.io)
323
+
324
+ ---
325
+
326
+ ## 后续任务 (Next Steps)
327
+
328
+ ### 依赖此任务的后续任务
329
+
330
+ - ✅ B2: SessionStore 实现(已完成)
331
+ - ✅ C5: registerTools 实现(已完成)
332
+ - ⏳ E3: CLI 集成(未开始)
333
+
334
+ ### 改进建议
335
+
336
+ 1. **性能优化**
337
+ - 添加启动时间监控
338
+ - 优化 SessionStore 初始化
339
+
340
+ 2. **可观测性**
341
+ - 集成结构化日志
342
+ - 添加性能指标
343
+
344
+ 3. **扩展性**
345
+ - 支持多种 transport
346
+ - 支持配置热重载
347
+
348
+ ---
349
+
350
+ **任务状态**: ✅ COMPLETED
351
+ **代码提交**: ✅ 已提交(随 A2-B1-B2 修复)
352
+ **文档状态**: ⏳ RETROSPECTIVE (追溯补齐中)