m8-mcp-server 1.0.0 → 1.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 (164) hide show
  1. package/README.md +118 -32
  2. package/dist/index.d.mts +449 -0
  3. package/dist/index.d.ts +449 -0
  4. package/dist/index.js +700 -1
  5. package/dist/index.mjs +700 -0
  6. package/package.json +34 -21
  7. package/prompts/PROMPTS.md +476 -0
  8. package/bin/m8-mcp.js +0 -2
  9. package/dist/constants.js +0 -1
  10. package/dist/data/ejs-doc/api_audio/api_audio.md +0 -225
  11. package/dist/data/ejs-doc/api_auth/api_auth.md +0 -256
  12. package/dist/data/ejs-doc/api_contact/api_contact.md +0 -295
  13. package/dist/data/ejs-doc/api_contact/images/component_contact.jpg +0 -0
  14. package/dist/data/ejs-doc/api_device/api_device.md +0 -761
  15. package/dist/data/ejs-doc/api_event/api_event.md +0 -244
  16. package/dist/data/ejs-doc/api_global/api_global.md +0 -440
  17. package/dist/data/ejs-doc/api_io/api_io.md +0 -369
  18. package/dist/data/ejs-doc/api_navigator/api_navigator.md +0 -654
  19. package/dist/data/ejs-doc/api_navigator/images/navigator.backbtn.png +0 -0
  20. package/dist/data/ejs-doc/api_navigator/images/navigator.hide.png +0 -0
  21. package/dist/data/ejs-doc/api_navigator/images/navigator.hidestatus.png +0 -0
  22. package/dist/data/ejs-doc/api_navigator/images/navigator.leftarrowbtn.jpg +0 -0
  23. package/dist/data/ejs-doc/api_navigator/images/navigator.leftbtn.png +0 -0
  24. package/dist/data/ejs-doc/api_navigator/images/navigator.leftbtnimg.png +0 -0
  25. package/dist/data/ejs-doc/api_navigator/images/navigator.multititle.jpg +0 -0
  26. package/dist/data/ejs-doc/api_navigator/images/navigator.rightbtn.png +0 -0
  27. package/dist/data/ejs-doc/api_navigator/images/navigator.rightbtn2.png +0 -0
  28. package/dist/data/ejs-doc/api_navigator/images/navigator.rightbtnimg.png +0 -0
  29. package/dist/data/ejs-doc/api_navigator/images/navigator.rightbtnimg2.png +0 -0
  30. package/dist/data/ejs-doc/api_navigator/images/navigator.rightmenu.png +0 -0
  31. package/dist/data/ejs-doc/api_navigator/images/navigator.searchbar.png +0 -0
  32. package/dist/data/ejs-doc/api_navigator/images/navigator.subtitle.jpg +0 -0
  33. package/dist/data/ejs-doc/api_navigator/images/navigator.title.png +0 -0
  34. package/dist/data/ejs-doc/api_page/api_page.md +0 -261
  35. package/dist/data/ejs-doc/api_runtime/api_runtime.md +0 -788
  36. package/dist/data/ejs-doc/api_storage/api_storage.md +0 -320
  37. package/dist/data/ejs-doc/api_stream/api_stream.md +0 -152
  38. package/dist/data/ejs-doc/api_stream/images/body_multiform.jpg +0 -0
  39. package/dist/data/ejs-doc/api_ui/api_ui.md +0 -836
  40. package/dist/data/ejs-doc/api_ui/images/ui.popwindow.png +0 -0
  41. package/dist/data/ejs-doc/api_ui/images/ui_actionsheet.png +0 -0
  42. package/dist/data/ejs-doc/api_ui/images/ui_alert.png +0 -0
  43. package/dist/data/ejs-doc/api_ui/images/ui_confirm.png +0 -0
  44. package/dist/data/ejs-doc/api_ui/images/ui_pickDateTime.png +0 -0
  45. package/dist/data/ejs-doc/api_ui/images/ui_pickdate.png +0 -0
  46. package/dist/data/ejs-doc/api_ui/images/ui_pickmonth.png +0 -0
  47. package/dist/data/ejs-doc/api_ui/images/ui_picktime.png +0 -0
  48. package/dist/data/ejs-doc/api_ui/images/ui_poppicker.png +0 -0
  49. package/dist/data/ejs-doc/api_ui/images/ui_poppicker2.png +0 -0
  50. package/dist/data/ejs-doc/api_ui/images/ui_poppicker3.png +0 -0
  51. package/dist/data/ejs-doc/api_ui/images/ui_prompt.png +0 -0
  52. package/dist/data/ejs-doc/api_ui/images/ui_select.png +0 -0
  53. package/dist/data/ejs-doc/api_ui/images/ui_select2.png +0 -0
  54. package/dist/data/ejs-doc/api_ui/images/ui_select3.png +0 -0
  55. package/dist/data/ejs-doc/api_ui/images/ui_showdebugdialog.png +0 -0
  56. package/dist/data/ejs-doc/api_ui/images/ui_showwaiting.png +0 -0
  57. package/dist/data/ejs-doc/api_ui/images/ui_toast.png +0 -0
  58. package/dist/data/ejs-doc/api_ui/images/ui_toastAndEvent.png +0 -0
  59. package/dist/data/ejs-doc/api_util/api_util.md +0 -615
  60. package/dist/data/ejs-doc/api_util/images/util.playvideo.png +0 -0
  61. package/dist/data/ejs-doc/api_util/images/util.previmage.png +0 -0
  62. package/dist/data/ejs-doc/api_util/images/util.selectfile.png +0 -0
  63. package/dist/data/ejs-doc/api_util/images/util.selectimage.png +0 -0
  64. package/dist/data/m8mpdoc-develop/003-/345/205/270/345/236/213/346/241/210/344/276/213/003-/345/210/227/350/241/250/350/257/246/346/203/205.md +0 -247
  65. package/dist/data/m8mpdoc-develop/003-/345/205/270/345/236/213/346/241/210/344/276/213/003-/345/210/227/350/241/250/350/257/246/346/203/205vue3.md +0 -276
  66. package/dist/data/m8mpdoc-develop/003-/345/205/270/345/236/213/346/241/210/344/276/213/003-/350/241/250/345/215/225/346/217/220/344/272/244.md +0 -130
  67. package/dist/data/m8mpdoc-develop/003-/345/205/270/345/236/213/346/241/210/344/276/213/003-/350/241/250/345/215/225/346/217/220/344/272/244vue3.md +0 -115
  68. package/dist/data/m8mpdoc-develop/005-/346/240/270/345/277/203/351/200/232/347/224/250Util/000-/346/240/270/345/277/203/346/226/271/346/263/225.md +0 -398
  69. package/dist/data/m8mpdoc-develop/005-/346/240/270/345/277/203/351/200/232/347/224/250Util/001-Ajax/344/270/216/346/226/207/344/273/266/344/270/212/344/274/240.md +0 -456
  70. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/000-charset.md +0 -128
  71. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/001-base64.md +0 -142
  72. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/002-date.md +0 -210
  73. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/004-math.md +0 -85
  74. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/006-sha1.md +0 -21
  75. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/007-sha256.md +0 -36
  76. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/008-storage.md +0 -128
  77. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/009-string.md +0 -148
  78. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/010-Util/346/211/251/345/261/225/346/214/207/345/215/227.md +0 -76
  79. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/011-cookie.md +0 -59
  80. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/012-util-sm.md +0 -95
  81. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/013-1.baseapi.md +0 -76
  82. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/013-2.network.md +0 -202
  83. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/013-2.socketTask.md +0 -92
  84. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/013-3.uiapi.md +0 -412
  85. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/013-4.eventapi.md +0 -146
  86. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/013-5.otherapi.md +0 -137
  87. package/dist/data/m8mpdoc-develop/006-Util/345/267/245/345/205/267/351/233/206/014-util-mpVerifyManager.md +0 -363
  88. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/000-/347/273/204/344/273/266/345/272/223/344/270/213/350/275/275/344/275/277/347/224/250.md +0 -188
  89. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/001-actionsheet/345/212/250/344/275/234/351/235/242/346/235/277.md +0 -460
  90. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/004-amap/345/234/260/345/233/276.md +0 -285
  91. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/005-button/346/214/211/351/222/256.md +0 -211
  92. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/008-cell/345/215/225/345/205/203/346/240/274.md +0 -213
  93. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/009-checkbox/345/244/215/351/200/211/346/241/206.md +0 -501
  94. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/010-circle/347/216/257/345/275/242/350/277/233/345/272/246/346/235/241.md +0 -168
  95. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/011-datepicker/346/227/245/346/234/237/351/200/211/346/213/251.md +0 -617
  96. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/013-field/350/276/223/345/205/245/346/241/206.md +0 -539
  97. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/015-form/350/241/250/345/215/225.md +0 -999
  98. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/018-header/345/244/264/351/203/250/345/257/274/350/210/252/346/240/217.md +0 -150
  99. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/019-icon/345/233/276/346/240/207.md +0 -133
  100. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/020-loading/345/212/240/350/275/275.md +0 -117
  101. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/021-noticebar/351/200/232/347/237/245/346/240/217.md +0 -152
  102. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/022-numberkeyboard/346/225/260/345/255/227/351/224/256/347/233/230.md +0 -427
  103. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/023-pagination/345/210/206/351/241/265.md +0 -212
  104. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/024-panel/351/235/242/346/235/277.md +0 -85
  105. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/025-passwordinput/345/257/206/347/240/201/350/276/223/345/205/245/346/241/206.md +0 -175
  106. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/026-picker/351/200/211/346/213/251/345/231/250.md +0 -519
  107. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/027-popup/345/274/271/345/207/272/345/261/202.md +0 -152
  108. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/028-progress/350/277/233/345/272/246/346/235/241.md +0 -103
  109. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/029-radio/345/215/225/351/200/211/346/241/206.md +0 -285
  110. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/030-rate/350/257/204/345/210/206.md +0 -189
  111. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/031-search/346/220/234/347/264/242.md +0 -217
  112. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/032-slider/346/273/221/345/235/227.md +0 -166
  113. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/033-stepper/346/255/245/350/277/233/345/231/250.md +0 -340
  114. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/035-swipecell/346/273/221/345/212/250/345/215/225/345/205/203/346/240/274.md +0 -265
  115. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/036-switch/345/274/200/345/205/263.md +0 -196
  116. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/037-switchcell/345/274/200/345/205/263/345/215/225/345/205/203/346/240/274.md +0 -115
  117. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/038-tag/346/240/207/350/256/260.md +0 -232
  118. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/039-treeselect/345/210/206/347/261/273/351/200/211/346/213/251.md +0 -631
  119. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/040-uploader/346/226/207/344/273/266/344/270/212/344/274/240.md +0 -531
  120. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/041-verifycode/351/252/214/350/257/201/347/240/201.md +0 -111
  121. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/042-minirefresh/344/270/213/346/213/211/345/210/267/346/226/260.md +0 -337
  122. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/043-layout/345/270/203/345/261/200.md +0 -150
  123. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/044-image/345/233/276/347/211/207.md +0 -144
  124. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/045-toast/350/275/273/346/217/220/347/244/272.md +0 -429
  125. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/046-calendar/346/227/245/345/216/206.md +0 -467
  126. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/047-area/347/234/201/345/270/202/345/214/272/351/200/211/346/213/251.md +0 -295
  127. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/048-tab/346/240/207/347/255/276/351/241/265.md +0 -577
  128. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/049-dialog/345/274/271/345/207/272/346/241/206.md +0 -491
  129. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/050-dropdownmenu/344/270/213/346/213/211/350/217/234/345/215/225.md +0 -265
  130. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/051-notify/346/266/210/346/201/257/351/200/232/347/237/245.md +0 -203
  131. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/052-overlay/351/201/256/347/275/251/345/261/202.md +0 -139
  132. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/053-collapse/346/212/230/345/217/240/351/235/242/346/235/277.md +0 -199
  133. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/054-grid/345/256/253/346/240/274.md +0 -183
  134. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/055-countdown/345/200/222/350/256/241/346/227/266.md +0 -289
  135. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/056-divider/345/210/206/345/211/262/347/272/277.md +0 -97
  136. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/057-empty/347/251/272/347/212/266/346/200/201.md +0 -146
  137. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/058-imagepreview/345/233/276/347/211/207/351/242/204/350/247/210.md +0 -292
  138. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/059-lazyload/346/207/222/345/212/240/350/275/275.md +0 -120
  139. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/060-skeleton/351/252/250/346/236/266/345/261/217.md +0 -114
  140. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/061-steps/346/255/245/351/252/244/346/235/241.md +0 -119
  141. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/062-sticky/347/262/230/346/200/247/345/270/203/345/261/200.md +0 -208
  142. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/063-indexbar/347/264/242/345/274/225/346/240/217.md +0 -161
  143. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/064-sidebar/344/276/247/350/276/271/345/257/274/350/210/252.md +0 -248
  144. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/065-tabbar/346/240/207/347/255/276/346/240/217.md +0 -314
  145. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/066-badge/345/276/275/346/240/207.md +0 -162
  146. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/067-popover/346/260/224/346/263/241/345/274/271/345/207/272/346/241/206.md +0 -325
  147. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/068-cascader/347/272/247/350/201/224/351/200/211/346/213/251.md +0 -360
  148. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/069-selectperson/351/200/211/344/272/272/347/273/204/344/273/266.md +0 -595
  149. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/070-swipe/350/275/256/346/222/255.md +0 -262
  150. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/071-/345/233/275/351/231/205/345/214/226.md +0 -51
  151. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/072-easycalendar/346/227/245/345/216/206.md +0 -132
  152. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/073-qrcode/344/272/214/347/273/264/347/240/201.md +0 -1538
  153. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/074-imagescale/345/233/276/347/211/207/350/243/201/345/211/252.md +0 -261
  154. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/075-dragsort/346/213/226/346/213/275/346/216/222/345/272/217.md +0 -161
  155. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/076-chart/345/233/276/350/241/250.md +0 -381
  156. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/077-rtc/351/237/263/350/247/206/351/242/221.md +0 -531
  157. package/dist/data/m8mpdoc-develop/009-UI/347/273/204/344/273/266/078-table/350/241/250/346/240/274.md +0 -849
  158. package/dist/data/m8mpdoc-develop/012-Mock/347/232/204/344/275/277/347/224/250/Mock/347/232/204/344/275/277/347/224/250.md +0 -116
  159. package/dist/data/standards/css-style.md +0 -531
  160. package/dist/data/standards/js-style.md +0 -394
  161. package/dist/data/standards/project-structure.md +0 -325
  162. package/dist/data/standards/vue-style.md +0 -644
  163. package/dist/tools/search.js +0 -1
  164. package/dist/tools/standards.js +0 -1
package/README.md CHANGED
@@ -1,67 +1,153 @@
1
- # M8 移动端框架智能辅助工具 (MCP)
1
+ # M8 MCP Server
2
2
 
3
- 本工具是一个 Model Context Protocol (MCP) 服务,专为 Epoint M8 移动前端框架开发者设计。它允许 AI 助手直接查询 M8 UI 组件、Util 工具类、EJS 原生 API 文档,并获取内置的编码规范,从而生成符合标准的高质量代码。
3
+ M8 移动前端跨端框架智能开发辅助工具,基于 Model Context Protocol (MCP) 协议。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - **文档查询**: 快速检索 M8 UI 组件 (如 `uploader`, `datepicker`) 和常用工具方法。
8
- - **EJS API**: 查询 EJS 容器提供的原生能力 (如 `audio`, `camera`)。
9
- - **规范检索**: 获取项目内置的 JS, Vue, CSS 编码规范。
7
+ - 📚 **文档查询** - 快速搜索 EJS API、UI 组件、Util 工具文档
8
+ - 🎯 **智能推荐** - 根据需求推荐合适的组件和方法
9
+ - 💻 **代码生成** - 生成符合规范的 Vue、JavaScript、SCSS 代码
10
+ - 📋 **规范检查** - 检查代码是否符合编码规范
11
+ - 🆕 **MCP Prompts** - 内置提示词模板,自动注入编码规范
10
12
 
11
- ## 安装
13
+ ## 安装使用
12
14
 
13
- 无需克隆源码,支持直接通过 `npx` 使用(需先发布到 npm):
15
+ ### 通过 npx 运行
14
16
 
15
17
  ```bash
16
18
  npx m8-mcp-server
17
19
  ```
18
20
 
19
- 或者全局安装:
21
+ ### MCP 配置
20
22
 
21
- ```bash
22
- npm install -g m8-mcp-server
23
- m8-mcp
24
- ```
25
-
26
- ## 配置 (Claude Desktop)
27
-
28
- 在您的 `claude_desktop_config.json` 中添加以下配置:
23
+ 在 Kiro 或其他支持 MCP 的 AI 助手中配置:
29
24
 
30
25
  ```json
31
26
  {
32
27
  "mcpServers": {
33
- "m8-mcp": {
28
+ "m8-mcp-server": {
34
29
  "command": "npx",
35
- "args": ["-y", "m8-mcp-server"]
30
+ "args": ["m8-mcp-server"],
31
+ "disabled": false,
32
+ "autoApprove": [
33
+ "search_docs",
34
+ "get_component_info",
35
+ "get_api_info",
36
+ "get_util_info",
37
+ "get_coding_standard"
38
+ ]
36
39
  }
37
40
  }
38
41
  }
39
42
  ```
40
43
 
41
- ## 💡 AI 提示词规范 (Prompt)
44
+ ## 可用工具
45
+
46
+ | 工具名称 | 描述 |
47
+ |---------|------|
48
+ | `search_docs` | 搜索 M8 框架文档 |
49
+ | `get_component_info` | 获取 UI 组件详细信息 |
50
+ | `get_api_info` | 获取 EJS API 详细信息 |
51
+ | `get_util_info` | 获取 Util 工具方法信息 |
52
+ | `get_coding_standard` | 获取编码规范 |
53
+ | `generate_code` | 生成符合规范的代码 |
54
+ | `recommend_solution` | 智能推荐解决方案 |
55
+
56
+ ## MCP Prompts (v1.1.0 新增)
57
+
58
+ M8 MCP Server 提供内置的 MCP Prompts,自动注入编码规范和代码模板。
59
+
60
+ ### 可用 Prompts
42
61
 
43
- 为了让 AI 更好地利用此工具,请在对话开头使用以下提示词:
62
+ | Prompt 名称 | 描述 | 参数 |
63
+ |------------|------|------|
64
+ | `generate_page` | 生成页面代码 | `requirement`(必需), `vueVersion`(可选) |
65
+ | `generate_component` | 生成 Vue 组件 | `requirement`(必需), `vueVersion`(可选) |
66
+ | `generate_form` | 生成表单页面 | `requirement`(必需), `vueVersion`(可选) |
67
+ | `generate_list` | 生成列表页面 | `requirement`(必需), `vueVersion`(可选) |
68
+ | `review_code` | 代码审查 | `code`(必需), `type`(可选) |
44
69
 
45
- ```text
46
- 你是一位精通 Epoint M8 移动端框架的开发专家。请利用 m8-mcp 工具辅助我也完成开发任务。
70
+ ### 参数说明
71
+
72
+ - **requirement**: 需求描述,如 "用户登录表单"
73
+ - **vueVersion**: Vue 版本,`2` = M8.3/Vue2,`3` = M8.4/Vue3(默认 3)
74
+ - **code**: 需要审查的代码
75
+ - **type**: 代码类型 `vue`/`javascript`/`scss`
76
+
77
+ ### 使用示例
47
78
 
48
- 开发原则:
49
- 1. **优先查阅文档**:在编写任何 UI 组件或调用原生 API 之前,必须先使用 `search_m8_docs` 或 `search_ejs_api` 查询相关文档,确保参数和用法正确。
50
- 2. **遵守编码规范**:生成代码前,请检查或回忆 `get_coding_standards` 中的规范,特别是文件头注释、CSS 命名隔离等要求。
51
- 3. **智能推荐**:如果我不确定使用哪个组件,请根据我的需求描述查询文档并推荐最合适的组件。
52
79
  ```
80
+ // 生成 Vue3 页面
81
+ 使用 generate_page prompt:
82
+ - requirement: "用户个人中心页面"
83
+ - vueVersion: "3"
84
+
85
+ // 生成 Vue2 表单
86
+ 使用 generate_form prompt:
87
+ - requirement: "用户注册表单"
88
+ - vueVersion: "2"
89
+
90
+ // 代码审查
91
+ 使用 review_code prompt:
92
+ - code: "<你的代码>"
93
+ - type: "vue"
94
+ ```
95
+
96
+ ### Prompts 自动注入内容
97
+
98
+ - ✅ Vue/JavaScript/SCSS 编码规范
99
+ - ✅ 版本对应的代码模板
100
+ - ✅ EJS API vs M8 组件选择指南
101
+ - ✅ 全局变量使用提醒(Util、Config)
102
+ - ✅ 根据需求关键词注入的上下文内容
53
103
 
54
104
  ## 使用示例
55
105
 
56
- - **查找上传组件**: 调用 `search_m8_docs("uploader")`
57
- - **查找音频 API**: 调用 `search_ejs_api("audio")`
58
- - **查看 JS 规范**: 调用 `get_coding_standards("js")`
106
+ ### 搜索文档
59
107
 
60
- ## 发布与构建
108
+ ```
109
+ 搜索 toast 相关文档
110
+ ```
61
111
 
62
- 本项目的源码不包含在 npm 包中,仅包含编译后的 `dist` 目录。
112
+ ### 获取组件信息
113
+
114
+ ```
115
+ 获取 em-button 组件的使用方法
116
+ ```
117
+
118
+ ### 生成代码
119
+
120
+ ```
121
+ 生成一个用户列表的 Vue3 组件
122
+ ```
123
+
124
+ ## 开发
63
125
 
64
126
  ```bash
65
- # 本地构建 (生成 dist 并混淆)
127
+ # 安装依赖
128
+ npm install
129
+
130
+ # 开发模式
131
+ npm run dev
132
+
133
+ # 构建
66
134
  npm run build
135
+
136
+ # 测试
137
+ npm test
67
138
  ```
139
+
140
+ ## 更新日志
141
+
142
+ ### v1.1.0
143
+ - 新增 MCP Prompts 功能
144
+ - 支持 generate_page、generate_component、generate_form、generate_list、review_code 提示词
145
+ - 自动注入编码规范和代码模板
146
+
147
+ ### v1.0.1
148
+ - 初始版本
149
+ - 文档查询、代码生成、规范检查功能
150
+
151
+ ## 许可证
152
+
153
+ MIT
@@ -0,0 +1,449 @@
1
+ /**
2
+ * MCP Server 核心实现
3
+ * 负责初始化 MCP 协议处理和工具注册
4
+ *
5
+ * @作者: Kiro
6
+ * @创建时间: 2024-12-25
7
+ * @描述: 提供文档查询、智能推荐、代码生成和 Prompts 服务
8
+ */
9
+ /**
10
+ * M8 MCP Server 类
11
+ * 提供文档查询、智能推荐、代码生成和 Prompts 服务
12
+ */
13
+ declare class M8McpServer {
14
+ private server;
15
+ private indexer;
16
+ private promptManager;
17
+ private tools;
18
+ private isRunning;
19
+ constructor();
20
+ /**
21
+ * 启动 MCP Server
22
+ */
23
+ start(): Promise<void>;
24
+ /**
25
+ * 停止 MCP Server
26
+ */
27
+ stop(): Promise<void>;
28
+ /**
29
+ * 设置请求处理器
30
+ */
31
+ private setupHandlers;
32
+ }
33
+
34
+ /**
35
+ * M8 MCP Server 类型定义
36
+ * 定义所有核心数据结构和接口
37
+ */
38
+ /**
39
+ * 文档分类枚举
40
+ */
41
+ type DocumentCategory = 'ejs-api' | 'ui-component' | 'util-tool' | 'typical-case' | 'standard';
42
+ /**
43
+ * 编码规范类型
44
+ */
45
+ type StandardCategory = 'css' | 'javascript' | 'vue' | 'project-structure';
46
+ /**
47
+ * 文档基础模型
48
+ */
49
+ interface Document {
50
+ /** 唯一标识符 */
51
+ id: string;
52
+ /** 文档标题 */
53
+ title: string;
54
+ /** 文档分类 */
55
+ category: DocumentCategory;
56
+ /** 文件路径 */
57
+ filePath: string;
58
+ /** 关键词 */
59
+ keywords: string[];
60
+ /** 摘要 */
61
+ summary: string;
62
+ /** 完整内容 */
63
+ content: string;
64
+ /** 最后更新时间 */
65
+ lastUpdated?: string;
66
+ }
67
+ /**
68
+ * 参数信息
69
+ */
70
+ interface ParameterInfo {
71
+ /** 参数名称 */
72
+ name: string;
73
+ /** 参数类型 */
74
+ type: string;
75
+ /** 参数描述 */
76
+ description: string;
77
+ /** 是否必填 */
78
+ required?: boolean;
79
+ /** 默认值 */
80
+ defaultValue?: string;
81
+ }
82
+ /**
83
+ * 返回值信息
84
+ */
85
+ interface ReturnInfo {
86
+ /** 返回类型 */
87
+ type: string;
88
+ /** 返回描述 */
89
+ description: string;
90
+ }
91
+ /**
92
+ * 平台支持情况
93
+ */
94
+ interface PlatformSupport {
95
+ /** EJS H5 应用 */
96
+ ejsH5?: boolean;
97
+ /** 新点小程序 */
98
+ ejsMiniProgram?: boolean;
99
+ /** H5 */
100
+ h5?: boolean;
101
+ /** 钉钉 */
102
+ dingtalk?: boolean;
103
+ /** 微信小程序 */
104
+ wechat?: boolean;
105
+ /** 支付宝小程序 */
106
+ alipay?: boolean;
107
+ }
108
+ /**
109
+ * API 信息
110
+ */
111
+ interface ApiInfo {
112
+ /** API 名称 */
113
+ name: string;
114
+ /** API 描述 */
115
+ description: string;
116
+ /** 参数列表 */
117
+ parameters: ParameterInfo[];
118
+ /** 返回值 */
119
+ returns?: ReturnInfo;
120
+ /** 平台支持情况 */
121
+ platformSupport?: PlatformSupport;
122
+ /** 使用示例 */
123
+ examples: string[];
124
+ }
125
+ /**
126
+ * Props 信息
127
+ */
128
+ interface PropInfo {
129
+ /** 属性名称 */
130
+ name: string;
131
+ /** 属性类型 */
132
+ type: string;
133
+ /** 属性描述 */
134
+ description: string;
135
+ /** 默认值 */
136
+ defaultValue?: string;
137
+ /** 是否必填 */
138
+ required?: boolean;
139
+ }
140
+ /**
141
+ * 事件信息
142
+ */
143
+ interface EventInfo {
144
+ /** 事件名称 */
145
+ name: string;
146
+ /** 事件描述 */
147
+ description: string;
148
+ /** 回调参数 */
149
+ callbackParams?: string;
150
+ }
151
+ /**
152
+ * 组件信息
153
+ */
154
+ interface ComponentInfo {
155
+ /** 组件名称 */
156
+ name: string;
157
+ /** 组件描述 */
158
+ description: string;
159
+ /** Props 列表 */
160
+ props: PropInfo[];
161
+ /** 事件列表 */
162
+ events: EventInfo[];
163
+ /** 使用示例 */
164
+ examples: string[];
165
+ }
166
+ /**
167
+ * 方法信息
168
+ */
169
+ interface MethodInfo {
170
+ /** 方法名称 */
171
+ name: string;
172
+ /** 方法描述 */
173
+ description: string;
174
+ /** 参数列表 */
175
+ parameters: ParameterInfo[];
176
+ /** 返回值 */
177
+ returns?: ReturnInfo;
178
+ /** 使用示例 */
179
+ examples: string[];
180
+ /** 平台支持 */
181
+ platformSupport?: PlatformSupport;
182
+ }
183
+ /**
184
+ * 规范规则
185
+ */
186
+ interface StandardRule {
187
+ /** 规则名称 */
188
+ name: string;
189
+ /** 规则描述 */
190
+ description: string;
191
+ /** 正确示例 */
192
+ goodExample?: string;
193
+ /** 错误示例 */
194
+ badExample?: string;
195
+ }
196
+ /**
197
+ * 搜索选项
198
+ */
199
+ interface SearchOptions {
200
+ /** 搜索分类过滤 */
201
+ category?: DocumentCategory;
202
+ /** 最大返回数量 */
203
+ limit?: number;
204
+ /** 模糊匹配阈值 */
205
+ fuzzyThreshold?: number;
206
+ }
207
+ /**
208
+ * 搜索结果
209
+ */
210
+ interface SearchResult {
211
+ /** 文档ID */
212
+ id: string;
213
+ /** 文档标题 */
214
+ title: string;
215
+ /** 文档分类 */
216
+ category: DocumentCategory;
217
+ /** 匹配分数 */
218
+ score: number;
219
+ /** 匹配摘要 */
220
+ excerpt: string;
221
+ /** 文件路径 */
222
+ filePath: string;
223
+ }
224
+ /**
225
+ * 工具定义
226
+ */
227
+ interface ToolDefinition {
228
+ /** 工具名称 */
229
+ name: string;
230
+ /** 工具描述 */
231
+ description: string;
232
+ /** 输入参数 Schema */
233
+ inputSchema: {
234
+ type: 'object';
235
+ properties: Record<string, unknown>;
236
+ required?: string[];
237
+ };
238
+ }
239
+ /**
240
+ * 工具调用结果
241
+ */
242
+ interface ToolResult {
243
+ content: Array<{
244
+ type: 'text';
245
+ text: string;
246
+ }>;
247
+ isError?: boolean;
248
+ }
249
+ /**
250
+ * search_docs 工具输入
251
+ */
252
+ interface SearchDocsInput {
253
+ /** 搜索关键词 */
254
+ query: string;
255
+ /** 文档分类过滤 */
256
+ category?: DocumentCategory;
257
+ /** 最大返回数量 */
258
+ limit?: number;
259
+ }
260
+ /**
261
+ * get_component_info 工具输入
262
+ */
263
+ interface GetComponentInfoInput {
264
+ /** 组件名称 */
265
+ componentName: string;
266
+ }
267
+ /**
268
+ * get_api_info 工具输入
269
+ */
270
+ interface GetApiInfoInput {
271
+ /** API 模块名称 */
272
+ module: string;
273
+ /** API 方法名称 */
274
+ method?: string;
275
+ }
276
+ /**
277
+ * get_util_info 工具输入
278
+ */
279
+ interface GetUtilInfoInput {
280
+ /** Util 分类 */
281
+ category: string;
282
+ /** 方法名称 */
283
+ method?: string;
284
+ }
285
+ /**
286
+ * get_coding_standard 工具输入
287
+ */
288
+ interface GetCodingStandardInput {
289
+ /** 规范类型 */
290
+ type: StandardCategory | 'all';
291
+ /** 具体规则关键词 */
292
+ keyword?: string;
293
+ }
294
+ /**
295
+ * generate_code 工具输入
296
+ */
297
+ interface GenerateCodeInput {
298
+ /** 代码类型 */
299
+ type: 'vue-component' | 'javascript' | 'scss' | 'api-call';
300
+ /** 需求描述 */
301
+ requirement: string;
302
+ /** Vue 版本 */
303
+ vueVersion?: 2 | 3;
304
+ /** 使用的组件列表 */
305
+ components?: string[];
306
+ }
307
+ /**
308
+ * recommend_solution 工具输入
309
+ */
310
+ interface RecommendSolutionInput {
311
+ /** 需求描述 */
312
+ requirement: string;
313
+ /** 需求类型 */
314
+ type?: 'ui' | 'data' | 'native' | 'general';
315
+ }
316
+ /**
317
+ * 错误码枚举
318
+ */
319
+ declare enum ErrorCode {
320
+ INVALID_PARAMETER = "INVALID_PARAMETER",
321
+ MISSING_REQUIRED_FIELD = "MISSING_REQUIRED_FIELD",
322
+ INVALID_CATEGORY = "INVALID_CATEGORY",
323
+ DOCUMENT_NOT_FOUND = "DOCUMENT_NOT_FOUND",
324
+ COMPONENT_NOT_FOUND = "COMPONENT_NOT_FOUND",
325
+ API_NOT_FOUND = "API_NOT_FOUND",
326
+ INDEX_ERROR = "INDEX_ERROR",
327
+ PARSE_ERROR = "PARSE_ERROR",
328
+ GENERATION_ERROR = "GENERATION_ERROR"
329
+ }
330
+ /**
331
+ * 错误响应
332
+ */
333
+ interface ErrorResponse {
334
+ /** 错误码 */
335
+ code: ErrorCode;
336
+ /** 错误消息 */
337
+ message: string;
338
+ /** 详细信息 */
339
+ details?: Record<string, unknown>;
340
+ /** 建议操作 */
341
+ suggestion?: string;
342
+ }
343
+ /**
344
+ * Vue 组件生成选项
345
+ */
346
+ interface VueComponentOptions {
347
+ /** 组件名称 */
348
+ name: string;
349
+ /** 组件描述 */
350
+ description: string;
351
+ /** Vue 版本 */
352
+ vueVersion: 2 | 3;
353
+ /** 使用的 UI 组件 */
354
+ components?: string[];
355
+ /** Props 定义 */
356
+ props?: PropInfo[];
357
+ /** 是否需要状态管理 */
358
+ needStore?: boolean;
359
+ }
360
+ /**
361
+ * JavaScript 代码生成选项
362
+ */
363
+ interface JavaScriptOptions {
364
+ /** 功能描述 */
365
+ description: string;
366
+ /** 是否包含 Ajax 请求 */
367
+ includeAjax?: boolean;
368
+ /** 是否使用 async/await */
369
+ useAsync?: boolean;
370
+ }
371
+ /**
372
+ * SCSS 代码生成选项
373
+ */
374
+ interface ScssOptions {
375
+ /** 类名 */
376
+ className: string;
377
+ /** 样式描述 */
378
+ description: string;
379
+ /** 是否使用变量 */
380
+ useVariables?: boolean;
381
+ }
382
+ /**
383
+ * 推荐项
384
+ */
385
+ interface RecommendationItem {
386
+ /** 推荐类型 */
387
+ type: 'component' | 'api' | 'util';
388
+ /** 名称 */
389
+ name: string;
390
+ /** 描述 */
391
+ description: string;
392
+ /** 推荐理由 */
393
+ reason: string;
394
+ /** 使用示例 */
395
+ example?: string;
396
+ /** 相关规范 */
397
+ standards?: string[];
398
+ }
399
+ /**
400
+ * 推荐结果
401
+ */
402
+ interface RecommendationResult {
403
+ /** 推荐列表 */
404
+ recommendations: RecommendationItem[];
405
+ /** 相关编码规范 */
406
+ relatedStandards: string[];
407
+ }
408
+ /**
409
+ * Prompt 参数定义
410
+ */
411
+ interface PromptArgument {
412
+ /** 参数名称 */
413
+ name: string;
414
+ /** 参数描述 */
415
+ description: string;
416
+ /** 是否必填 */
417
+ required: boolean;
418
+ }
419
+ /**
420
+ * Prompt 定义
421
+ */
422
+ interface PromptDefinition {
423
+ /** Prompt 名称 */
424
+ name: string;
425
+ /** Prompt 描述 */
426
+ description: string;
427
+ /** 参数列表 */
428
+ arguments: PromptArgument[];
429
+ }
430
+ /**
431
+ * Prompt 消息内容
432
+ */
433
+ interface PromptMessageContent {
434
+ /** 内容类型 */
435
+ type: 'text';
436
+ /** 文本内容 */
437
+ text: string;
438
+ }
439
+ /**
440
+ * Prompt 消息
441
+ */
442
+ interface PromptMessage {
443
+ /** 角色 */
444
+ role: 'user' | 'assistant';
445
+ /** 消息内容 */
446
+ content: PromptMessageContent;
447
+ }
448
+
449
+ export { type ApiInfo, type ComponentInfo, type Document, type DocumentCategory, ErrorCode, type ErrorResponse, type EventInfo, type GenerateCodeInput, type GetApiInfoInput, type GetCodingStandardInput, type GetComponentInfoInput, type GetUtilInfoInput, type JavaScriptOptions, M8McpServer, type MethodInfo, type ParameterInfo, type PlatformSupport, type PromptArgument, type PromptDefinition, type PromptMessage, type PromptMessageContent, type PropInfo, type RecommendSolutionInput, type RecommendationItem, type RecommendationResult, type ReturnInfo, type ScssOptions, type SearchDocsInput, type SearchOptions, type SearchResult, type StandardCategory, type StandardRule, type ToolDefinition, type ToolResult, type VueComponentOptions };