@danyow/lark-mcp 0.5.1

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 (389) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +9 -0
  3. package/README.md +215 -0
  4. package/README_ZH.md +212 -0
  5. package/dist/auth/config.d.ts +12 -0
  6. package/dist/auth/config.js +15 -0
  7. package/dist/auth/handler/handler-local.d.ts +21 -0
  8. package/dist/auth/handler/handler-local.js +123 -0
  9. package/dist/auth/handler/handler.d.ts +32 -0
  10. package/dist/auth/handler/handler.js +117 -0
  11. package/dist/auth/handler/index.d.ts +2 -0
  12. package/dist/auth/handler/index.js +18 -0
  13. package/dist/auth/index.d.ts +4 -0
  14. package/dist/auth/index.js +20 -0
  15. package/dist/auth/provider/index.d.ts +3 -0
  16. package/dist/auth/provider/index.js +19 -0
  17. package/dist/auth/provider/oauth.d.ts +18 -0
  18. package/dist/auth/provider/oauth.js +147 -0
  19. package/dist/auth/provider/oidc.d.ts +18 -0
  20. package/dist/auth/provider/oidc.js +172 -0
  21. package/dist/auth/provider/types.d.ts +8 -0
  22. package/dist/auth/provider/types.js +2 -0
  23. package/dist/auth/store.d.ts +39 -0
  24. package/dist/auth/store.js +213 -0
  25. package/dist/auth/types.d.ts +13 -0
  26. package/dist/auth/types.js +2 -0
  27. package/dist/auth/utils/encryption.d.ts +7 -0
  28. package/dist/auth/utils/encryption.js +40 -0
  29. package/dist/auth/utils/index.d.ts +3 -0
  30. package/dist/auth/utils/index.js +19 -0
  31. package/dist/auth/utils/is-token-valid.d.ts +7 -0
  32. package/dist/auth/utils/is-token-valid.js +28 -0
  33. package/dist/auth/utils/pkce.d.ts +6 -0
  34. package/dist/auth/utils/pkce.js +20 -0
  35. package/dist/auth/utils/storage-manager.d.ts +17 -0
  36. package/dist/auth/utils/storage-manager.js +135 -0
  37. package/dist/cli/index.d.ts +1 -0
  38. package/dist/cli/index.js +5 -0
  39. package/dist/cli/login-handler.d.ts +16 -0
  40. package/dist/cli/login-handler.js +142 -0
  41. package/dist/cli.d.ts +4 -0
  42. package/dist/cli.js +122 -0
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.js +19 -0
  45. package/dist/mcp-server/index.d.ts +2 -0
  46. package/dist/mcp-server/index.js +18 -0
  47. package/dist/mcp-server/shared/index.d.ts +2 -0
  48. package/dist/mcp-server/shared/index.js +18 -0
  49. package/dist/mcp-server/shared/init.d.ts +10 -0
  50. package/dist/mcp-server/shared/init.js +121 -0
  51. package/dist/mcp-server/shared/types.d.ts +40 -0
  52. package/dist/mcp-server/shared/types.js +10 -0
  53. package/dist/mcp-server/transport/index.d.ts +3 -0
  54. package/dist/mcp-server/transport/index.js +19 -0
  55. package/dist/mcp-server/transport/sse.d.ts +2 -0
  56. package/dist/mcp-server/transport/sse.js +75 -0
  57. package/dist/mcp-server/transport/stdio.d.ts +2 -0
  58. package/dist/mcp-server/transport/stdio.js +36 -0
  59. package/dist/mcp-server/transport/streamable.d.ts +2 -0
  60. package/dist/mcp-server/transport/streamable.js +86 -0
  61. package/dist/mcp-server/transport/utils.d.ts +16 -0
  62. package/dist/mcp-server/transport/utils.js +34 -0
  63. package/dist/mcp-tool/constants.d.ts +49 -0
  64. package/dist/mcp-tool/constants.js +115 -0
  65. package/dist/mcp-tool/document-tool/index.d.ts +1 -0
  66. package/dist/mcp-tool/document-tool/index.js +17 -0
  67. package/dist/mcp-tool/document-tool/recall/index.d.ts +2 -0
  68. package/dist/mcp-tool/document-tool/recall/index.js +39 -0
  69. package/dist/mcp-tool/document-tool/recall/request.d.ts +2 -0
  70. package/dist/mcp-tool/document-tool/recall/request.js +25 -0
  71. package/dist/mcp-tool/document-tool/recall/type.d.ts +19 -0
  72. package/dist/mcp-tool/document-tool/recall/type.js +2 -0
  73. package/dist/mcp-tool/index.d.ts +5 -0
  74. package/dist/mcp-tool/index.js +21 -0
  75. package/dist/mcp-tool/mcp-tool.d.ts +52 -0
  76. package/dist/mcp-tool/mcp-tool.js +198 -0
  77. package/dist/mcp-tool/tools/en/builtin-tools/docx/builtin.d.ts +5 -0
  78. package/dist/mcp-tool/tools/en/builtin-tools/docx/builtin.js +219 -0
  79. package/dist/mcp-tool/tools/en/builtin-tools/drive/builtin.d.ts +4 -0
  80. package/dist/mcp-tool/tools/en/builtin-tools/drive/builtin.js +159 -0
  81. package/dist/mcp-tool/tools/en/builtin-tools/im/buildin.d.ts +4 -0
  82. package/dist/mcp-tool/tools/en/builtin-tools/im/buildin.js +63 -0
  83. package/dist/mcp-tool/tools/en/builtin-tools/index.d.ts +5 -0
  84. package/dist/mcp-tool/tools/en/builtin-tools/index.js +7 -0
  85. package/dist/mcp-tool/tools/en/gen-tools/index.d.ts +114 -0
  86. package/dist/mcp-tool/tools/en/gen-tools/index.js +129 -0
  87. package/dist/mcp-tool/tools/en/gen-tools/zod/acs_v1.d.ts +562 -0
  88. package/dist/mcp-tool/tools/en/gen-tools/zod/acs_v1.js +264 -0
  89. package/dist/mcp-tool/tools/en/gen-tools/zod/admin_v1.d.ts +912 -0
  90. package/dist/mcp-tool/tools/en/gen-tools/zod/admin_v1.js +449 -0
  91. package/dist/mcp-tool/tools/en/gen-tools/zod/aily_v1.d.ts +1213 -0
  92. package/dist/mcp-tool/tools/en/gen-tools/zod/aily_v1.js +560 -0
  93. package/dist/mcp-tool/tools/en/gen-tools/zod/apaas_v1.d.ts +2530 -0
  94. package/dist/mcp-tool/tools/en/gen-tools/zod/apaas_v1.js +949 -0
  95. package/dist/mcp-tool/tools/en/gen-tools/zod/application_v5.d.ts +80 -0
  96. package/dist/mcp-tool/tools/en/gen-tools/zod/application_v5.js +53 -0
  97. package/dist/mcp-tool/tools/en/gen-tools/zod/application_v6.d.ts +1008 -0
  98. package/dist/mcp-tool/tools/en/gen-tools/zod/application_v6.js +775 -0
  99. package/dist/mcp-tool/tools/en/gen-tools/zod/approval_v4.d.ts +3928 -0
  100. package/dist/mcp-tool/tools/en/gen-tools/zod/approval_v4.js +1602 -0
  101. package/dist/mcp-tool/tools/en/gen-tools/zod/attendance_v1.d.ts +6043 -0
  102. package/dist/mcp-tool/tools/en/gen-tools/zod/attendance_v1.js +1857 -0
  103. package/dist/mcp-tool/tools/en/gen-tools/zod/auth_v3.d.ts +151 -0
  104. package/dist/mcp-tool/tools/en/gen-tools/zod/auth_v3.js +71 -0
  105. package/dist/mcp-tool/tools/en/gen-tools/zod/authen_v1.d.ts +26 -0
  106. package/dist/mcp-tool/tools/en/gen-tools/zod/authen_v1.js +17 -0
  107. package/dist/mcp-tool/tools/en/gen-tools/zod/baike_v1.d.ts +2174 -0
  108. package/dist/mcp-tool/tools/en/gen-tools/zod/baike_v1.js +594 -0
  109. package/dist/mcp-tool/tools/en/gen-tools/zod/base_v2.d.ts +755 -0
  110. package/dist/mcp-tool/tools/en/gen-tools/zod/base_v2.js +234 -0
  111. package/dist/mcp-tool/tools/en/gen-tools/zod/bitable_v1.d.ts +3541 -0
  112. package/dist/mcp-tool/tools/en/gen-tools/zod/bitable_v1.js +1786 -0
  113. package/dist/mcp-tool/tools/en/gen-tools/zod/board_v1.d.ts +40 -0
  114. package/dist/mcp-tool/tools/en/gen-tools/zod/board_v1.js +18 -0
  115. package/dist/mcp-tool/tools/en/gen-tools/zod/calendar_v4.d.ts +2075 -0
  116. package/dist/mcp-tool/tools/en/gen-tools/zod/calendar_v4.js +1594 -0
  117. package/dist/mcp-tool/tools/en/gen-tools/zod/cardkit_v1.d.ts +528 -0
  118. package/dist/mcp-tool/tools/en/gen-tools/zod/cardkit_v1.js +260 -0
  119. package/dist/mcp-tool/tools/en/gen-tools/zod/compensation_v1.d.ts +189 -0
  120. package/dist/mcp-tool/tools/en/gen-tools/zod/compensation_v1.js +132 -0
  121. package/dist/mcp-tool/tools/en/gen-tools/zod/contact_v3.d.ts +4274 -0
  122. package/dist/mcp-tool/tools/en/gen-tools/zod/contact_v3.js +2583 -0
  123. package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v1.d.ts +16873 -0
  124. package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v1.js +5045 -0
  125. package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v2.d.ts +29387 -0
  126. package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v2.js +7787 -0
  127. package/dist/mcp-tool/tools/en/gen-tools/zod/directory_v1.d.ts +4274 -0
  128. package/dist/mcp-tool/tools/en/gen-tools/zod/directory_v1.js +1367 -0
  129. package/dist/mcp-tool/tools/en/gen-tools/zod/docs_v1.d.ts +58 -0
  130. package/dist/mcp-tool/tools/en/gen-tools/zod/docs_v1.js +28 -0
  131. package/dist/mcp-tool/tools/en/gen-tools/zod/docx_v1.d.ts +93466 -0
  132. package/dist/mcp-tool/tools/en/gen-tools/zod/docx_v1.js +14350 -0
  133. package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v1.d.ts +3251 -0
  134. package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v1.js +1422 -0
  135. package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v2.d.ts +174 -0
  136. package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v2.js +117 -0
  137. package/dist/mcp-tool/tools/en/gen-tools/zod/ehr_v1.d.ts +86 -0
  138. package/dist/mcp-tool/tools/en/gen-tools/zod/ehr_v1.js +48 -0
  139. package/dist/mcp-tool/tools/en/gen-tools/zod/event_v1.d.ts +44 -0
  140. package/dist/mcp-tool/tools/en/gen-tools/zod/event_v1.js +17 -0
  141. package/dist/mcp-tool/tools/en/gen-tools/zod/helpdesk_v1.d.ts +733 -0
  142. package/dist/mcp-tool/tools/en/gen-tools/zod/helpdesk_v1.js +285 -0
  143. package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v1.d.ts +10076 -0
  144. package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v1.js +6065 -0
  145. package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v2.d.ts +158 -0
  146. package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v2.js +61 -0
  147. package/dist/mcp-tool/tools/en/gen-tools/zod/human_authentication_v1.d.ts +70 -0
  148. package/dist/mcp-tool/tools/en/gen-tools/zod/human_authentication_v1.js +27 -0
  149. package/dist/mcp-tool/tools/en/gen-tools/zod/im_v1.d.ts +3043 -0
  150. package/dist/mcp-tool/tools/en/gen-tools/zod/im_v1.js +1869 -0
  151. package/dist/mcp-tool/tools/en/gen-tools/zod/im_v2.d.ts +2176 -0
  152. package/dist/mcp-tool/tools/en/gen-tools/zod/im_v2.js +460 -0
  153. package/dist/mcp-tool/tools/en/gen-tools/zod/lingo_v1.d.ts +2301 -0
  154. package/dist/mcp-tool/tools/en/gen-tools/zod/lingo_v1.js +669 -0
  155. package/dist/mcp-tool/tools/en/gen-tools/zod/mail_v1.d.ts +2462 -0
  156. package/dist/mcp-tool/tools/en/gen-tools/zod/mail_v1.js +1655 -0
  157. package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v1.d.ts +104 -0
  158. package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v1.js +45 -0
  159. package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v3.d.ts +329 -0
  160. package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v3.js +78 -0
  161. package/dist/mcp-tool/tools/en/gen-tools/zod/minutes_v1.d.ts +92 -0
  162. package/dist/mcp-tool/tools/en/gen-tools/zod/minutes_v1.js +62 -0
  163. package/dist/mcp-tool/tools/en/gen-tools/zod/moments_v1.d.ts +52 -0
  164. package/dist/mcp-tool/tools/en/gen-tools/zod/moments_v1.js +24 -0
  165. package/dist/mcp-tool/tools/en/gen-tools/zod/okr_v1.d.ts +1628 -0
  166. package/dist/mcp-tool/tools/en/gen-tools/zod/okr_v1.js +434 -0
  167. package/dist/mcp-tool/tools/en/gen-tools/zod/optical_char_recognition_v1.d.ts +38 -0
  168. package/dist/mcp-tool/tools/en/gen-tools/zod/optical_char_recognition_v1.js +17 -0
  169. package/dist/mcp-tool/tools/en/gen-tools/zod/passport_v1.d.ts +131 -0
  170. package/dist/mcp-tool/tools/en/gen-tools/zod/passport_v1.js +59 -0
  171. package/dist/mcp-tool/tools/en/gen-tools/zod/payroll_v1.d.ts +333 -0
  172. package/dist/mcp-tool/tools/en/gen-tools/zod/payroll_v1.js +176 -0
  173. package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v1.d.ts +309 -0
  174. package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v1.js +178 -0
  175. package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v2.d.ts +1177 -0
  176. package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v2.js +559 -0
  177. package/dist/mcp-tool/tools/en/gen-tools/zod/personal_settings_v1.d.ts +640 -0
  178. package/dist/mcp-tool/tools/en/gen-tools/zod/personal_settings_v1.js +303 -0
  179. package/dist/mcp-tool/tools/en/gen-tools/zod/report_v1.d.ts +192 -0
  180. package/dist/mcp-tool/tools/en/gen-tools/zod/report_v1.js +71 -0
  181. package/dist/mcp-tool/tools/en/gen-tools/zod/search_v2.d.ts +1695 -0
  182. package/dist/mcp-tool/tools/en/gen-tools/zod/search_v2.js +446 -0
  183. package/dist/mcp-tool/tools/en/gen-tools/zod/security_and_compliance_v1.d.ts +68 -0
  184. package/dist/mcp-tool/tools/en/gen-tools/zod/security_and_compliance_v1.js +32 -0
  185. package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v2.d.ts +523 -0
  186. package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v2.js +231 -0
  187. package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v3.d.ts +979 -0
  188. package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v3.js +721 -0
  189. package/dist/mcp-tool/tools/en/gen-tools/zod/speech_to_text_v1.d.ts +225 -0
  190. package/dist/mcp-tool/tools/en/gen-tools/zod/speech_to_text_v1.js +65 -0
  191. package/dist/mcp-tool/tools/en/gen-tools/zod/task_v1.d.ts +1161 -0
  192. package/dist/mcp-tool/tools/en/gen-tools/zod/task_v1.js +672 -0
  193. package/dist/mcp-tool/tools/en/gen-tools/zod/task_v2.d.ts +6051 -0
  194. package/dist/mcp-tool/tools/en/gen-tools/zod/task_v2.js +1970 -0
  195. package/dist/mcp-tool/tools/en/gen-tools/zod/tenant_v2.d.ts +31 -0
  196. package/dist/mcp-tool/tools/en/gen-tools/zod/tenant_v2.js +24 -0
  197. package/dist/mcp-tool/tools/en/gen-tools/zod/translation_v1.d.ts +80 -0
  198. package/dist/mcp-tool/tools/en/gen-tools/zod/translation_v1.js +37 -0
  199. package/dist/mcp-tool/tools/en/gen-tools/zod/trust_party_v1.d.ts +182 -0
  200. package/dist/mcp-tool/tools/en/gen-tools/zod/trust_party_v1.js +141 -0
  201. package/dist/mcp-tool/tools/en/gen-tools/zod/vc_v1.d.ts +5725 -0
  202. package/dist/mcp-tool/tools/en/gen-tools/zod/vc_v1.js +1751 -0
  203. package/dist/mcp-tool/tools/en/gen-tools/zod/verification_v1.d.ts +21 -0
  204. package/dist/mcp-tool/tools/en/gen-tools/zod/verification_v1.js +14 -0
  205. package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v1.d.ts +72 -0
  206. package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v1.js +19 -0
  207. package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v2.d.ts +843 -0
  208. package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v2.js +381 -0
  209. package/dist/mcp-tool/tools/en/gen-tools/zod/workplace_v1.d.ts +116 -0
  210. package/dist/mcp-tool/tools/en/gen-tools/zod/workplace_v1.js +77 -0
  211. package/dist/mcp-tool/tools/index.d.ts +104 -0
  212. package/dist/mcp-tool/tools/index.js +9 -0
  213. package/dist/mcp-tool/tools/zh/builtin-tools/docx/builtin.d.ts +5 -0
  214. package/dist/mcp-tool/tools/zh/builtin-tools/docx/builtin.js +198 -0
  215. package/dist/mcp-tool/tools/zh/builtin-tools/drive/builtin.d.ts +4 -0
  216. package/dist/mcp-tool/tools/zh/builtin-tools/drive/builtin.js +159 -0
  217. package/dist/mcp-tool/tools/zh/builtin-tools/im/buildin.d.ts +4 -0
  218. package/dist/mcp-tool/tools/zh/builtin-tools/im/buildin.js +63 -0
  219. package/dist/mcp-tool/tools/zh/builtin-tools/index.d.ts +5 -0
  220. package/dist/mcp-tool/tools/zh/builtin-tools/index.js +7 -0
  221. package/dist/mcp-tool/tools/zh/gen-tools/index.d.ts +114 -0
  222. package/dist/mcp-tool/tools/zh/gen-tools/index.js +129 -0
  223. package/dist/mcp-tool/tools/zh/gen-tools/zod/acs_v1.d.ts +562 -0
  224. package/dist/mcp-tool/tools/zh/gen-tools/zod/acs_v1.js +277 -0
  225. package/dist/mcp-tool/tools/zh/gen-tools/zod/admin_v1.d.ts +912 -0
  226. package/dist/mcp-tool/tools/zh/gen-tools/zod/admin_v1.js +430 -0
  227. package/dist/mcp-tool/tools/zh/gen-tools/zod/aily_v1.d.ts +1213 -0
  228. package/dist/mcp-tool/tools/zh/gen-tools/zod/aily_v1.js +541 -0
  229. package/dist/mcp-tool/tools/zh/gen-tools/zod/apaas_v1.d.ts +2530 -0
  230. package/dist/mcp-tool/tools/zh/gen-tools/zod/apaas_v1.js +885 -0
  231. package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v5.d.ts +80 -0
  232. package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v5.js +59 -0
  233. package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v6.d.ts +1007 -0
  234. package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v6.js +721 -0
  235. package/dist/mcp-tool/tools/zh/gen-tools/zod/approval_v4.d.ts +3928 -0
  236. package/dist/mcp-tool/tools/zh/gen-tools/zod/approval_v4.js +1532 -0
  237. package/dist/mcp-tool/tools/zh/gen-tools/zod/attendance_v1.d.ts +6043 -0
  238. package/dist/mcp-tool/tools/zh/gen-tools/zod/attendance_v1.js +1620 -0
  239. package/dist/mcp-tool/tools/zh/gen-tools/zod/auth_v3.d.ts +151 -0
  240. package/dist/mcp-tool/tools/zh/gen-tools/zod/auth_v3.js +87 -0
  241. package/dist/mcp-tool/tools/zh/gen-tools/zod/authen_v1.d.ts +26 -0
  242. package/dist/mcp-tool/tools/zh/gen-tools/zod/authen_v1.js +17 -0
  243. package/dist/mcp-tool/tools/zh/gen-tools/zod/baike_v1.d.ts +2174 -0
  244. package/dist/mcp-tool/tools/zh/gen-tools/zod/baike_v1.js +574 -0
  245. package/dist/mcp-tool/tools/zh/gen-tools/zod/base_v2.d.ts +755 -0
  246. package/dist/mcp-tool/tools/zh/gen-tools/zod/base_v2.js +270 -0
  247. package/dist/mcp-tool/tools/zh/gen-tools/zod/bitable_v1.d.ts +3541 -0
  248. package/dist/mcp-tool/tools/zh/gen-tools/zod/bitable_v1.js +1864 -0
  249. package/dist/mcp-tool/tools/zh/gen-tools/zod/board_v1.d.ts +40 -0
  250. package/dist/mcp-tool/tools/zh/gen-tools/zod/board_v1.js +18 -0
  251. package/dist/mcp-tool/tools/zh/gen-tools/zod/calendar_v4.d.ts +2075 -0
  252. package/dist/mcp-tool/tools/zh/gen-tools/zod/calendar_v4.js +1533 -0
  253. package/dist/mcp-tool/tools/zh/gen-tools/zod/cardkit_v1.d.ts +528 -0
  254. package/dist/mcp-tool/tools/zh/gen-tools/zod/cardkit_v1.js +248 -0
  255. package/dist/mcp-tool/tools/zh/gen-tools/zod/compensation_v1.d.ts +189 -0
  256. package/dist/mcp-tool/tools/zh/gen-tools/zod/compensation_v1.js +130 -0
  257. package/dist/mcp-tool/tools/zh/gen-tools/zod/contact_v3.d.ts +4274 -0
  258. package/dist/mcp-tool/tools/zh/gen-tools/zod/contact_v3.js +2394 -0
  259. package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v1.d.ts +16957 -0
  260. package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v1.js +4753 -0
  261. package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v2.d.ts +29869 -0
  262. package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v2.js +7902 -0
  263. package/dist/mcp-tool/tools/zh/gen-tools/zod/directory_v1.d.ts +4324 -0
  264. package/dist/mcp-tool/tools/zh/gen-tools/zod/directory_v1.js +1340 -0
  265. package/dist/mcp-tool/tools/zh/gen-tools/zod/docs_v1.d.ts +58 -0
  266. package/dist/mcp-tool/tools/zh/gen-tools/zod/docs_v1.js +26 -0
  267. package/dist/mcp-tool/tools/zh/gen-tools/zod/docx_v1.d.ts +116719 -0
  268. package/dist/mcp-tool/tools/zh/gen-tools/zod/docx_v1.js +14949 -0
  269. package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v1.d.ts +3251 -0
  270. package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v1.js +1395 -0
  271. package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v2.d.ts +174 -0
  272. package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v2.js +115 -0
  273. package/dist/mcp-tool/tools/zh/gen-tools/zod/ehr_v1.d.ts +86 -0
  274. package/dist/mcp-tool/tools/zh/gen-tools/zod/ehr_v1.js +48 -0
  275. package/dist/mcp-tool/tools/zh/gen-tools/zod/event_v1.d.ts +44 -0
  276. package/dist/mcp-tool/tools/zh/gen-tools/zod/event_v1.js +25 -0
  277. package/dist/mcp-tool/tools/zh/gen-tools/zod/helpdesk_v1.d.ts +733 -0
  278. package/dist/mcp-tool/tools/zh/gen-tools/zod/helpdesk_v1.js +279 -0
  279. package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v1.d.ts +10085 -0
  280. package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v1.js +5787 -0
  281. package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v2.d.ts +158 -0
  282. package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v2.js +64 -0
  283. package/dist/mcp-tool/tools/zh/gen-tools/zod/human_authentication_v1.d.ts +70 -0
  284. package/dist/mcp-tool/tools/zh/gen-tools/zod/human_authentication_v1.js +27 -0
  285. package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v1.d.ts +3043 -0
  286. package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v1.js +1812 -0
  287. package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v2.d.ts +2176 -0
  288. package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v2.js +454 -0
  289. package/dist/mcp-tool/tools/zh/gen-tools/zod/lingo_v1.d.ts +2301 -0
  290. package/dist/mcp-tool/tools/zh/gen-tools/zod/lingo_v1.js +650 -0
  291. package/dist/mcp-tool/tools/zh/gen-tools/zod/mail_v1.d.ts +2465 -0
  292. package/dist/mcp-tool/tools/zh/gen-tools/zod/mail_v1.js +1467 -0
  293. package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v1.d.ts +104 -0
  294. package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v1.js +45 -0
  295. package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v3.d.ts +329 -0
  296. package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v3.js +76 -0
  297. package/dist/mcp-tool/tools/zh/gen-tools/zod/minutes_v1.d.ts +92 -0
  298. package/dist/mcp-tool/tools/zh/gen-tools/zod/minutes_v1.js +62 -0
  299. package/dist/mcp-tool/tools/zh/gen-tools/zod/moments_v1.d.ts +52 -0
  300. package/dist/mcp-tool/tools/zh/gen-tools/zod/moments_v1.js +20 -0
  301. package/dist/mcp-tool/tools/zh/gen-tools/zod/okr_v1.d.ts +1664 -0
  302. package/dist/mcp-tool/tools/zh/gen-tools/zod/okr_v1.js +455 -0
  303. package/dist/mcp-tool/tools/zh/gen-tools/zod/optical_char_recognition_v1.d.ts +38 -0
  304. package/dist/mcp-tool/tools/zh/gen-tools/zod/optical_char_recognition_v1.js +17 -0
  305. package/dist/mcp-tool/tools/zh/gen-tools/zod/passport_v1.d.ts +131 -0
  306. package/dist/mcp-tool/tools/zh/gen-tools/zod/passport_v1.js +53 -0
  307. package/dist/mcp-tool/tools/zh/gen-tools/zod/payroll_v1.d.ts +609 -0
  308. package/dist/mcp-tool/tools/zh/gen-tools/zod/payroll_v1.js +321 -0
  309. package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v1.d.ts +309 -0
  310. package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v1.js +165 -0
  311. package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v2.d.ts +1177 -0
  312. package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v2.js +525 -0
  313. package/dist/mcp-tool/tools/zh/gen-tools/zod/personal_settings_v1.d.ts +640 -0
  314. package/dist/mcp-tool/tools/zh/gen-tools/zod/personal_settings_v1.js +295 -0
  315. package/dist/mcp-tool/tools/zh/gen-tools/zod/report_v1.d.ts +194 -0
  316. package/dist/mcp-tool/tools/zh/gen-tools/zod/report_v1.js +72 -0
  317. package/dist/mcp-tool/tools/zh/gen-tools/zod/search_v2.d.ts +1695 -0
  318. package/dist/mcp-tool/tools/zh/gen-tools/zod/search_v2.js +556 -0
  319. package/dist/mcp-tool/tools/zh/gen-tools/zod/security_and_compliance_v1.d.ts +68 -0
  320. package/dist/mcp-tool/tools/zh/gen-tools/zod/security_and_compliance_v1.js +32 -0
  321. package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v2.d.ts +523 -0
  322. package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v2.js +231 -0
  323. package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v3.d.ts +979 -0
  324. package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v3.js +821 -0
  325. package/dist/mcp-tool/tools/zh/gen-tools/zod/speech_to_text_v1.d.ts +225 -0
  326. package/dist/mcp-tool/tools/zh/gen-tools/zod/speech_to_text_v1.js +65 -0
  327. package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v1.d.ts +1161 -0
  328. package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v1.js +647 -0
  329. package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v2.d.ts +6077 -0
  330. package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v2.js +1894 -0
  331. package/dist/mcp-tool/tools/zh/gen-tools/zod/tenant_v2.d.ts +31 -0
  332. package/dist/mcp-tool/tools/zh/gen-tools/zod/tenant_v2.js +24 -0
  333. package/dist/mcp-tool/tools/zh/gen-tools/zod/translation_v1.d.ts +80 -0
  334. package/dist/mcp-tool/tools/zh/gen-tools/zod/translation_v1.js +37 -0
  335. package/dist/mcp-tool/tools/zh/gen-tools/zod/trust_party_v1.d.ts +182 -0
  336. package/dist/mcp-tool/tools/zh/gen-tools/zod/trust_party_v1.js +137 -0
  337. package/dist/mcp-tool/tools/zh/gen-tools/zod/vc_v1.d.ts +5725 -0
  338. package/dist/mcp-tool/tools/zh/gen-tools/zod/vc_v1.js +1640 -0
  339. package/dist/mcp-tool/tools/zh/gen-tools/zod/verification_v1.d.ts +21 -0
  340. package/dist/mcp-tool/tools/zh/gen-tools/zod/verification_v1.js +14 -0
  341. package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v1.d.ts +72 -0
  342. package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v1.js +34 -0
  343. package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v2.d.ts +843 -0
  344. package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v2.js +376 -0
  345. package/dist/mcp-tool/tools/zh/gen-tools/zod/workplace_v1.d.ts +116 -0
  346. package/dist/mcp-tool/tools/zh/gen-tools/zod/workplace_v1.js +77 -0
  347. package/dist/mcp-tool/types/index.d.ts +53 -0
  348. package/dist/mcp-tool/types/index.js +9 -0
  349. package/dist/mcp-tool/utils/case-transf.d.ts +2 -0
  350. package/dist/mcp-tool/utils/case-transf.js +15 -0
  351. package/dist/mcp-tool/utils/filter-tools.d.ts +2 -0
  352. package/dist/mcp-tool/utils/filter-tools.js +27 -0
  353. package/dist/mcp-tool/utils/get-should-use-uat.d.ts +2 -0
  354. package/dist/mcp-tool/utils/get-should-use-uat.js +18 -0
  355. package/dist/mcp-tool/utils/handler.d.ts +2 -0
  356. package/dist/mcp-tool/utils/handler.js +119 -0
  357. package/dist/mcp-tool/utils/index.d.ts +4 -0
  358. package/dist/mcp-tool/utils/index.js +20 -0
  359. package/dist/utils/clean-env-args.d.ts +1 -0
  360. package/dist/utils/clean-env-args.js +12 -0
  361. package/dist/utils/constants.d.ts +18 -0
  362. package/dist/utils/constants.js +35 -0
  363. package/dist/utils/http-instance.d.ts +2 -0
  364. package/dist/utils/http-instance.js +21 -0
  365. package/dist/utils/logger.d.ts +22 -0
  366. package/dist/utils/logger.js +97 -0
  367. package/dist/utils/noop.d.ts +1 -0
  368. package/dist/utils/noop.js +6 -0
  369. package/dist/utils/parser-string-array.d.ts +1 -0
  370. package/dist/utils/parser-string-array.js +13 -0
  371. package/dist/utils/safe-json-parse.d.ts +1 -0
  372. package/dist/utils/safe-json-parse.js +14 -0
  373. package/dist/utils/version.d.ts +1 -0
  374. package/dist/utils/version.js +52 -0
  375. package/docs/recall-mcp/README.md +137 -0
  376. package/docs/recall-mcp/README_ZH.md +137 -0
  377. package/docs/reference/cli/cli-zh.md +92 -0
  378. package/docs/reference/cli/cli.md +92 -0
  379. package/docs/reference/tool-presets/presets-zh.md +120 -0
  380. package/docs/reference/tool-presets/presets.md +120 -0
  381. package/docs/reference/tool-presets/tools-en.md +1527 -0
  382. package/docs/reference/tool-presets/tools-zh.md +1544 -0
  383. package/docs/troubleshooting/faq-zh.md +67 -0
  384. package/docs/troubleshooting/faq.md +67 -0
  385. package/docs/usage/configuration/configuration-zh.md +344 -0
  386. package/docs/usage/configuration/configuration.md +344 -0
  387. package/docs/usage/docker/docker-zh.md +101 -0
  388. package/docs/usage/docker/docker.md +106 -0
  389. package/package.json +65 -0
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LoginHandler = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ const handler_local_1 = require("../auth/handler/handler-local");
9
+ const store_1 = require("../auth/store");
10
+ const utils_1 = require("../auth/utils");
11
+ const open_1 = __importDefault(require("open"));
12
+ class LoginHandler {
13
+ static async checkTokenWithTimeout(timeout, appId) {
14
+ let time = 0;
15
+ return new Promise((resolve) => {
16
+ const interval = setInterval(async () => {
17
+ const token = await store_1.authStore.getLocalAccessToken(appId);
18
+ if (token) {
19
+ clearInterval(interval);
20
+ resolve(true);
21
+ }
22
+ time += 2000;
23
+ if (time >= timeout) {
24
+ clearInterval(interval);
25
+ resolve(false);
26
+ }
27
+ }, 2000);
28
+ });
29
+ }
30
+ static async handleLogin(options) {
31
+ const { appId, appSecret, domain, host, port, scope, timeout = 60000 } = options;
32
+ if (!appId || !appSecret) {
33
+ console.error('Error: Missing App Credentials (appId and appSecret are required for login)');
34
+ process.exit(1);
35
+ }
36
+ try {
37
+ console.log('🔐 Starting OAuth login process...');
38
+ const app = (0, express_1.default)();
39
+ app.use(express_1.default.json());
40
+ const authHandler = new handler_local_1.LarkAuthHandlerLocal(app, {
41
+ port: parseInt(port),
42
+ host,
43
+ domain,
44
+ appId,
45
+ appSecret,
46
+ scope,
47
+ });
48
+ authHandler.setupRoutes();
49
+ const result = await authHandler.reAuthorize(undefined, true);
50
+ if (result.authorizeUrl) {
51
+ console.log('📱 Please open the following URL in your browser to complete the login:');
52
+ console.log(`💡 Note: Please ensure the redirect URL (${authHandler.callbackUrl}) is configured in your app's security settings.`);
53
+ console.log(` If not configured yet, go to: ${domain}/app/${appId}/safe`);
54
+ console.log('🔗 Authorization URL:');
55
+ console.log(result.authorizeUrl);
56
+ console.log('\n⏳ Waiting for authorization... (timeout in 60 seconds)');
57
+ (0, open_1.default)(result.authorizeUrl);
58
+ await store_1.authStore.removeLocalAccessToken(appId);
59
+ const success = await this.checkTokenWithTimeout(timeout, appId);
60
+ if (success) {
61
+ console.log('✅ Successfully logged in');
62
+ process.exit(0);
63
+ }
64
+ else {
65
+ console.log('❌ Login failed');
66
+ process.exit(1);
67
+ }
68
+ }
69
+ else {
70
+ process.exit(1);
71
+ }
72
+ }
73
+ catch (error) {
74
+ console.error('❌ Login failed:', error);
75
+ process.exit(1);
76
+ }
77
+ }
78
+ static async handleLogout(appId) {
79
+ try {
80
+ console.log('🔓 Logging out...');
81
+ if (!appId) {
82
+ await store_1.authStore.removeAllLocalAccessTokens();
83
+ console.log('✅ Successfully logged out from all apps');
84
+ process.exit(0);
85
+ }
86
+ const currentToken = await store_1.authStore.getLocalAccessToken(appId);
87
+ if (!currentToken) {
88
+ console.log(`ℹ️ No active login session found for app: ${appId}`);
89
+ process.exit(0);
90
+ }
91
+ await store_1.authStore.removeLocalAccessToken(appId);
92
+ console.log(`✅ Successfully logged out from app: ${appId}`);
93
+ process.exit(0);
94
+ }
95
+ catch (error) {
96
+ console.error('❌ Logout failed:', error);
97
+ process.exit(1);
98
+ }
99
+ }
100
+ static simpleMask(str) {
101
+ if (!str) {
102
+ return '';
103
+ }
104
+ if (str.length < 6) {
105
+ return '*'.repeat(str.length);
106
+ }
107
+ return str.slice(0, 4) + '*'.repeat(str.length - 6) + str.slice(-2);
108
+ }
109
+ static async handleWhoAmI() {
110
+ var _a, _b, _c;
111
+ const tokens = await store_1.authStore.getAllLocalAccessTokens();
112
+ if (Object.keys(tokens).length <= 0) {
113
+ console.log('ℹ️ No active login sessions found');
114
+ process.exit(0);
115
+ }
116
+ console.log('👤 Current login sessions:\n');
117
+ for (const [appId, accessToken] of Object.entries(tokens)) {
118
+ const token = await store_1.authStore.getToken(accessToken);
119
+ if (!token) {
120
+ console.log('❌ No token info found');
121
+ continue;
122
+ }
123
+ console.log(`📱 App ID: ${appId}`);
124
+ console.log(`⌚️ AccessToken Expired: ${(0, utils_1.isTokenExpired)(token)}`);
125
+ console.log(`🔐 Token Info:`);
126
+ console.log(JSON.stringify({
127
+ clientId: token.clientId,
128
+ token: this.simpleMask(token.token),
129
+ scopes: token.scopes,
130
+ expiresAt: token.expiresAt,
131
+ extra: {
132
+ refreshToken: this.simpleMask((_a = token.extra) === null || _a === void 0 ? void 0 : _a.refreshToken),
133
+ appId: (_b = token.extra) === null || _b === void 0 ? void 0 : _b.appId,
134
+ appSecret: this.simpleMask((_c = token.extra) === null || _c === void 0 ? void 0 : _c.appSecret),
135
+ },
136
+ }, null, 2));
137
+ console.log('\n');
138
+ }
139
+ process.exit(0);
140
+ }
141
+ }
142
+ exports.LoginHandler = LoginHandler;
package/dist/cli.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ declare const program: Command;
4
+ export { program };
package/dist/cli.js ADDED
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.program = void 0;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const dotenv_1 = __importDefault(require("dotenv"));
10
+ const commander_1 = require("commander");
11
+ const version_1 = require("./utils/version");
12
+ const mcp_server_1 = require("./mcp-server");
13
+ const constants_1 = require("./utils/constants");
14
+ const login_handler_1 = require("./cli/login-handler");
15
+ const parser_string_array_1 = require("./utils/parser-string-array");
16
+ const logger_1 = require("./utils/logger");
17
+ dotenv_1.default.config();
18
+ const program = new commander_1.Command();
19
+ exports.program = program;
20
+ program.name('lark-mcp').description('Feishu/Lark MCP Tool').version(version_1.currentVersion);
21
+ program
22
+ .command('whoami')
23
+ .description('Print All User Sessions')
24
+ .action(() => {
25
+ login_handler_1.LoginHandler.handleWhoAmI();
26
+ });
27
+ program
28
+ .command('login')
29
+ .description('Login using OAuth and get user access token')
30
+ .option('-a, --app-id <appId>', 'Feishu/Lark App ID')
31
+ .option('-s, --app-secret <appSecret>', 'Feishu/Lark App Secret')
32
+ .option('-d, --domain <domain>', '(Optional) Feishu/Lark Domain (default: "https://open.feishu.cn")')
33
+ .option('--host <host>', '(Optional) Host to listen (default: "localhost")')
34
+ .option('-p, --port <port>', '(Optional) Port to listen (default: "3000")')
35
+ .option('--scope <scope>', '(Optional) Specify OAuth scope for user access token, default is all permissions granted to the app, separated by spaces or commas')
36
+ .option('--debug', '(Optional) Enable debug mode')
37
+ .action(async (options) => {
38
+ if (constants_1.NODE_VERSION_MAJOR < 20) {
39
+ logger_1.logger.error(`❌ This CLI requires Node.js >= 20. You are using v${process.versions.node}.\n\n` +
40
+ `👉 Please upgrade Node.js: https://nodejs.org/`);
41
+ process.exit(1);
42
+ }
43
+ const mergedOptions = { ...constants_1.OAPI_MCP_DEFAULT_ARGS, ...constants_1.OAPI_MCP_ENV_ARGS, ...options };
44
+ if (mergedOptions.debug) {
45
+ logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
46
+ }
47
+ await login_handler_1.LoginHandler.handleLogin({ ...mergedOptions, scope: (0, parser_string_array_1.parseStringArray)(mergedOptions.scope) });
48
+ });
49
+ program
50
+ .command('logout')
51
+ .description('Logout and clear stored user access token')
52
+ .option('-a, --app-id <appId>', '(Optional) Feishu/Lark App ID, if not specified, logout all apps')
53
+ .option('--debug', '(Optional) Enable debug mode')
54
+ .action(async (options) => {
55
+ if (options.debug) {
56
+ logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
57
+ }
58
+ await login_handler_1.LoginHandler.handleLogout(options.appId);
59
+ });
60
+ program
61
+ .command('mcp')
62
+ .description('Start Feishu/Lark MCP Service')
63
+ .option('-a, --app-id <appId>', 'Feishu/Lark App ID')
64
+ .option('-s, --app-secret <appSecret>', 'Feishu/Lark App Secret')
65
+ .option('-d, --domain <domain>', '(Optional) Feishu/Lark Domain (default: "https://open.feishu.cn")')
66
+ .option('-t, --tools <tools>', '(Optional) List of API tools to enable, separated by commas or spaces (default: "preset.default")')
67
+ .option('-c, --tool-name-case <toolNameCase>', '(Optional) Tool Name Case, snake or camel or kebab or dot (default: "snake")')
68
+ .option('-l, --language <language>', '(Optional) Tools Language, zh or en (default: "en")')
69
+ .option('--token-mode <tokenMode>', '(Optional) Token Mode, auto or user_access_token or tenant_access_token (default: "auto")')
70
+ .option('-u, --user-access-token <userAccessToken>', '(Optional) User Access Token (beta)')
71
+ .option('--oauth', '(Optional) Enable MCP Auth Server to get user_access_token and auto request user login when token expires (Beta) (default: false)')
72
+ .option('--scope <scope>', '(Optional) Specify OAuth scope for user access token, default is all permissions granted to the app, separated by spaces or commas')
73
+ .option('-m, --mode <mode>', '(Optional) Transport Mode, stdio or sse or streamable (default: "stdio")')
74
+ .option('--host <host>', '(Optional) Host to listen (default: "localhost")')
75
+ .option('-p, --port <port>', '(Optional) Port to listen (default: "3000")')
76
+ .option('--config <configPath>', '(Optional) Config file path (JSON)')
77
+ .option('--debug', '(Optional) Enable debug mode')
78
+ .action(async (options) => {
79
+ let fileOptions = {};
80
+ if (options.config) {
81
+ try {
82
+ const configContent = fs_1.default.readFileSync(options.config, 'utf-8');
83
+ fileOptions = JSON.parse(configContent);
84
+ }
85
+ catch (err) {
86
+ logger_1.logger.error(`Failed to read config file: ${err}`);
87
+ process.exit(1);
88
+ }
89
+ }
90
+ const mergedOptions = { ...constants_1.OAPI_MCP_DEFAULT_ARGS, ...constants_1.OAPI_MCP_ENV_ARGS, ...fileOptions, ...options };
91
+ if (constants_1.NODE_VERSION_MAJOR < 20 && mergedOptions.oauth) {
92
+ logger_1.logger.error(`❌ This CLI requires Node.js >= 20. You are using v${process.versions.node}.\n\n` +
93
+ `👉 Please upgrade Node.js: https://nodejs.org/`);
94
+ process.exit(1);
95
+ }
96
+ if (mergedOptions.debug) {
97
+ logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
98
+ }
99
+ await (0, mcp_server_1.initMcpServerWithTransport)('oapi', {
100
+ ...mergedOptions,
101
+ scope: (0, parser_string_array_1.parseStringArray)(mergedOptions.scope),
102
+ tools: (0, parser_string_array_1.parseStringArray)(mergedOptions.tools),
103
+ });
104
+ });
105
+ program
106
+ .command('recall-developer-documents')
107
+ .description('Start Feishu/Lark Open Platform Recall MCP Service')
108
+ .option('-d, --domain <domain>', '(Optional) Feishu Open Platform Domain', 'https://open.feishu.cn')
109
+ .option('-m, --mode <mode>', '(Optional) Transport Mode, stdio or sse or streamable', 'stdio')
110
+ .option('--host <host>', '(Optional) Host to listen', 'localhost')
111
+ .option('-p, --port <port>', '(Optional) Port to listen in sse mode', '3001')
112
+ .option('--debug', '(Optional) Enable debug mode')
113
+ .action(async (options) => {
114
+ if (options.debug) {
115
+ logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
116
+ }
117
+ await (0, mcp_server_1.initMcpServerWithTransport)('recall', options);
118
+ });
119
+ if (process.argv.length === 2) {
120
+ program.help();
121
+ }
122
+ program.parse(process.argv);
@@ -0,0 +1,3 @@
1
+ export * from './cli';
2
+ export * from './mcp-tool';
3
+ export * from './mcp-server';
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cli"), exports);
18
+ __exportStar(require("./mcp-tool"), exports);
19
+ __exportStar(require("./mcp-server"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './transport';
2
+ export * from './shared';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./transport"), exports);
18
+ __exportStar(require("./shared"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './init';
2
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./init"), exports);
18
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,10 @@
1
+ import * as larkmcp from '../../mcp-tool';
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { McpServerOptions, McpServerType } from './types';
4
+ import { LarkAuthHandler } from '../../auth';
5
+ export declare function initOAPIMcpServer(options: McpServerOptions, authHandler?: LarkAuthHandler): {
6
+ mcpServer: McpServer;
7
+ larkClient: larkmcp.LarkMcpTool;
8
+ };
9
+ export declare function initRecallMcpServer(options: McpServerOptions): McpServer;
10
+ export declare function initMcpServerWithTransport(serverType: McpServerType, options: McpServerOptions): Promise<void>;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.initOAPIMcpServer = initOAPIMcpServer;
37
+ exports.initRecallMcpServer = initRecallMcpServer;
38
+ exports.initMcpServerWithTransport = initMcpServerWithTransport;
39
+ const larkmcp = __importStar(require("../../mcp-tool"));
40
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
41
+ const transport_1 = require("../transport");
42
+ const noop_1 = require("../../utils/noop");
43
+ const version_1 = require("../../utils/version");
44
+ const http_instance_1 = require("../../utils/http-instance");
45
+ const logger_1 = require("../../utils/logger");
46
+ function initOAPIMcpServer(options, authHandler) {
47
+ const { appId, appSecret, userAccessToken, tokenMode, domain, oauth } = options;
48
+ if (!appId || !appSecret) {
49
+ console.error('Error: Missing App Credentials');
50
+ throw new Error('Missing App Credentials');
51
+ }
52
+ let allowTools = options.tools || [];
53
+ for (const [presetName, presetTools] of Object.entries(larkmcp.presetTools)) {
54
+ if (allowTools.includes(presetName)) {
55
+ allowTools = [...presetTools, ...allowTools];
56
+ }
57
+ }
58
+ // Unique
59
+ allowTools = Array.from(new Set(allowTools));
60
+ // Create MCP Server
61
+ const mcpServer = new mcp_js_1.McpServer({ id: 'lark-mcp-server', name: 'Feishu/Lark MCP Server', version: version_1.currentVersion });
62
+ const toolsOptions = allowTools.length
63
+ ? { allowTools: allowTools, language: options.language }
64
+ : { language: options.language };
65
+ const larkClient = new larkmcp.LarkMcpTool({
66
+ appId,
67
+ appSecret,
68
+ logger: { warn: noop_1.noop, error: noop_1.noop, debug: noop_1.noop, info: noop_1.noop, trace: noop_1.noop },
69
+ httpInstance: http_instance_1.oapiHttpInstance,
70
+ domain,
71
+ toolsOptions,
72
+ tokenMode,
73
+ oauth,
74
+ }, authHandler);
75
+ if (userAccessToken) {
76
+ larkClient.updateUserAccessToken(userAccessToken);
77
+ }
78
+ larkClient.registerMcpServer(mcpServer, { toolNameCase: options.toolNameCase });
79
+ return { mcpServer, larkClient };
80
+ }
81
+ function initRecallMcpServer(options) {
82
+ const server = new mcp_js_1.McpServer({
83
+ id: 'lark-recall-mcp-server',
84
+ name: 'Lark Recall MCP Service',
85
+ version: version_1.currentVersion,
86
+ });
87
+ server.tool(larkmcp.RecallTool.name, larkmcp.RecallTool.description, larkmcp.RecallTool.schema, (params) => larkmcp.RecallTool.handler(params, options));
88
+ return server;
89
+ }
90
+ async function initMcpServerWithTransport(serverType, options) {
91
+ const { mode, userAccessToken, oauth } = options;
92
+ if (userAccessToken && oauth) {
93
+ logger_1.logger.error(`[initMcpServerWithTransport] userAccessToken and oauth cannot be used together`);
94
+ throw new Error('userAccessToken and oauth cannot be used together');
95
+ }
96
+ const getNewServer = (commonOptions, authHandler) => {
97
+ if (serverType === 'oapi') {
98
+ const { mcpServer } = initOAPIMcpServer({ ...options, ...commonOptions }, authHandler);
99
+ return mcpServer;
100
+ }
101
+ else if (serverType === 'recall') {
102
+ return initRecallMcpServer({ ...options, ...commonOptions });
103
+ }
104
+ logger_1.logger.error(`[initMcpServerWithTransport] Invalid server type: ${serverType}`);
105
+ throw new Error('Invalid server type');
106
+ };
107
+ const needAuthFlow = serverType === 'oapi';
108
+ switch (mode) {
109
+ case 'stdio':
110
+ await (0, transport_1.initStdioServer)(getNewServer, options, { needAuthFlow });
111
+ break;
112
+ case 'sse':
113
+ await (0, transport_1.initSSEServer)(getNewServer, options, { needAuthFlow });
114
+ break;
115
+ case 'streamable':
116
+ await (0, transport_1.initStreamableServer)(getNewServer, options, { needAuthFlow });
117
+ break;
118
+ default:
119
+ throw new Error('Invalid mode:' + mode);
120
+ }
121
+ }
@@ -0,0 +1,40 @@
1
+ import * as larkmcp from '../../mcp-tool';
2
+ import { z } from 'zod';
3
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { LarkAuthHandler } from '../../auth';
5
+ export type McpServerType = 'oapi' | 'recall';
6
+ export type McpServerTransport = 'stdio' | 'sse' | 'streamable';
7
+ export declare const mcpServerOptionSchema: z.ZodObject<{
8
+ tools: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
9
+ language: z.ZodOptional<z.ZodEnum<["zh", "en"]>>;
10
+ toolNameCase: z.ZodOptional<z.ZodEnum<["snake", "camel"]>>;
11
+ tokenMode: z.ZodOptional<z.ZodEnum<["auto", "user_access_token", "tenant_access_token"]>>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ language?: "en" | "zh" | undefined;
14
+ tokenMode?: "auto" | "user_access_token" | "tenant_access_token" | undefined;
15
+ tools?: string | string[] | undefined;
16
+ toolNameCase?: "snake" | "camel" | undefined;
17
+ }, {
18
+ language?: "en" | "zh" | undefined;
19
+ tokenMode?: "auto" | "user_access_token" | "tenant_access_token" | undefined;
20
+ tools?: string | string[] | undefined;
21
+ toolNameCase?: "snake" | "camel" | undefined;
22
+ }>;
23
+ export interface McpServerOptions {
24
+ appId?: string;
25
+ appSecret?: string;
26
+ domain?: string;
27
+ tools?: string[];
28
+ language?: 'zh' | 'en';
29
+ toolNameCase?: larkmcp.ToolNameCase;
30
+ tokenMode?: larkmcp.TokenMode;
31
+ userAccessToken?: string | larkmcp.SettableValue;
32
+ oauth?: boolean;
33
+ scope?: string[];
34
+ mode?: McpServerTransport;
35
+ host?: string;
36
+ port?: number;
37
+ }
38
+ export type InitTransportServerFunction = (getNewServer: (options?: McpServerOptions, authHandler?: LarkAuthHandler) => McpServer, mcpServerOptions: McpServerOptions, authOptions?: {
39
+ needAuthFlow: boolean;
40
+ }) => void | Promise<void>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mcpServerOptionSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.mcpServerOptionSchema = zod_1.z.object({
6
+ tools: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
7
+ language: zod_1.z.enum(['zh', 'en']).optional(),
8
+ toolNameCase: zod_1.z.enum(['snake', 'camel']).optional(),
9
+ tokenMode: zod_1.z.enum(['auto', 'user_access_token', 'tenant_access_token']).optional(),
10
+ });
@@ -0,0 +1,3 @@
1
+ export * from './stdio';
2
+ export * from './sse';
3
+ export * from './streamable';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./stdio"), exports);
18
+ __exportStar(require("./sse"), exports);
19
+ __exportStar(require("./streamable"), exports);
@@ -0,0 +1,2 @@
1
+ import { InitTransportServerFunction } from '../shared';
2
+ export declare const initSSEServer: InitTransportServerFunction;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initSSEServer = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
9
+ const auth_1 = require("../../auth");
10
+ const utils_1 = require("./utils");
11
+ const logger_1 = require("../../utils/logger");
12
+ const initSSEServer = (getNewServer, options, { needAuthFlow } = { needAuthFlow: false }) => {
13
+ const { userAccessToken, port, host, oauth } = options;
14
+ if (!port || !host) {
15
+ throw new Error('[Lark MCP] Port and host are required');
16
+ }
17
+ const app = (0, express_1.default)();
18
+ const transports = new Map();
19
+ let authHandler;
20
+ if (!userAccessToken && needAuthFlow) {
21
+ authHandler = new auth_1.LarkAuthHandler(app, options);
22
+ if (oauth) {
23
+ authHandler.setupRoutes();
24
+ }
25
+ }
26
+ const authMiddleware = (req, res, next) => {
27
+ var _a;
28
+ if (authHandler && oauth) {
29
+ authHandler.authenticateRequest(req, res, next);
30
+ }
31
+ else {
32
+ const authToken = (_a = req.headers.authorization) === null || _a === void 0 ? void 0 : _a.split(' ')[1];
33
+ if (authToken) {
34
+ req.auth = { token: authToken, clientId: 'client_id_for_local_auth', scopes: [] };
35
+ }
36
+ next();
37
+ }
38
+ };
39
+ app.get('/sse', authMiddleware, async (req, res) => {
40
+ var _a;
41
+ logger_1.logger.info(`[SSEServerTransport] Received GET SSE request`);
42
+ const token = (_a = req.auth) === null || _a === void 0 ? void 0 : _a.token;
43
+ const { data } = (0, utils_1.parseMCPServerOptionsFromRequest)(req);
44
+ const server = getNewServer({ ...options, ...data, userAccessToken: data.userAccessToken || token }, authHandler);
45
+ const transport = new sse_js_1.SSEServerTransport('/messages', res);
46
+ transports.set(transport.sessionId, transport);
47
+ res.on('close', () => {
48
+ transport.close();
49
+ server.close();
50
+ transports.delete(transport.sessionId);
51
+ });
52
+ await server.connect(transport);
53
+ });
54
+ app.post('/messages', authMiddleware, async (req, res) => {
55
+ console.log('Received POST messages request');
56
+ logger_1.logger.info(`[SSEServerTransport] Received POST messages request`);
57
+ const sessionId = req.query.sessionId;
58
+ const transport = transports.get(sessionId);
59
+ if (!transport) {
60
+ res.status(400).send('No transport found for sessionId');
61
+ return;
62
+ }
63
+ await transport.handlePostMessage(req, res);
64
+ });
65
+ console.log('⚠️ SSE Mode is deprecated and will be removed in a future version. Please use Streamable mode instead.');
66
+ app.listen(port, host, (error) => {
67
+ if (error) {
68
+ logger_1.logger.error(`[SSEServerTransport] Server error: ${error}`);
69
+ process.exit(1);
70
+ }
71
+ console.log(`📡 SSE endpoint: http://${host}:${port}/sse`);
72
+ logger_1.logger.info(`[SSEServerTransport] SSE endpoint: http://${host}:${port}/sse`);
73
+ });
74
+ };
75
+ exports.initSSEServer = initSSEServer;
@@ -0,0 +1,2 @@
1
+ import { InitTransportServerFunction } from '../shared';
2
+ export declare const initStdioServer: InitTransportServerFunction;