@liselvins/lark-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.
- package/CHANGELOG.md +62 -0
- package/LICENSE +9 -0
- package/README.md +215 -0
- package/README_ZH.md +212 -0
- package/dist/auth/config.d.ts +12 -0
- package/dist/auth/config.js +15 -0
- package/dist/auth/handler/handler-local.d.ts +21 -0
- package/dist/auth/handler/handler-local.js +123 -0
- package/dist/auth/handler/handler.d.ts +38 -0
- package/dist/auth/handler/handler.js +123 -0
- package/dist/auth/handler/index.d.ts +2 -0
- package/dist/auth/handler/index.js +18 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.js +20 -0
- package/dist/auth/provider/index.d.ts +3 -0
- package/dist/auth/provider/index.js +19 -0
- package/dist/auth/provider/oauth.d.ts +18 -0
- package/dist/auth/provider/oauth.js +147 -0
- package/dist/auth/provider/oidc.d.ts +18 -0
- package/dist/auth/provider/oidc.js +172 -0
- package/dist/auth/provider/types.d.ts +8 -0
- package/dist/auth/provider/types.js +2 -0
- package/dist/auth/store.d.ts +39 -0
- package/dist/auth/store.js +213 -0
- package/dist/auth/types.d.ts +13 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/utils/encryption.d.ts +7 -0
- package/dist/auth/utils/encryption.js +40 -0
- package/dist/auth/utils/index.d.ts +3 -0
- package/dist/auth/utils/index.js +19 -0
- package/dist/auth/utils/is-token-valid.d.ts +7 -0
- package/dist/auth/utils/is-token-valid.js +28 -0
- package/dist/auth/utils/pkce.d.ts +6 -0
- package/dist/auth/utils/pkce.js +20 -0
- package/dist/auth/utils/storage-manager.d.ts +17 -0
- package/dist/auth/utils/storage-manager.js +159 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/login-handler.d.ts +19 -0
- package/dist/cli/login-handler.js +288 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +124 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/mcp-server/index.d.ts +2 -0
- package/dist/mcp-server/index.js +18 -0
- package/dist/mcp-server/shared/index.d.ts +2 -0
- package/dist/mcp-server/shared/index.js +18 -0
- package/dist/mcp-server/shared/init.d.ts +10 -0
- package/dist/mcp-server/shared/init.js +121 -0
- package/dist/mcp-server/shared/types.d.ts +44 -0
- package/dist/mcp-server/shared/types.js +10 -0
- package/dist/mcp-server/transport/index.d.ts +3 -0
- package/dist/mcp-server/transport/index.js +19 -0
- package/dist/mcp-server/transport/sse.d.ts +2 -0
- package/dist/mcp-server/transport/sse.js +75 -0
- package/dist/mcp-server/transport/stdio.d.ts +2 -0
- package/dist/mcp-server/transport/stdio.js +36 -0
- package/dist/mcp-server/transport/streamable.d.ts +2 -0
- package/dist/mcp-server/transport/streamable.js +86 -0
- package/dist/mcp-server/transport/utils.d.ts +16 -0
- package/dist/mcp-server/transport/utils.js +34 -0
- package/dist/mcp-tool/constants.d.ts +54 -0
- package/dist/mcp-tool/constants.js +141 -0
- package/dist/mcp-tool/document-tool/index.d.ts +1 -0
- package/dist/mcp-tool/document-tool/index.js +17 -0
- package/dist/mcp-tool/document-tool/recall/index.d.ts +2 -0
- package/dist/mcp-tool/document-tool/recall/index.js +39 -0
- package/dist/mcp-tool/document-tool/recall/request.d.ts +2 -0
- package/dist/mcp-tool/document-tool/recall/request.js +25 -0
- package/dist/mcp-tool/document-tool/recall/type.d.ts +19 -0
- package/dist/mcp-tool/document-tool/recall/type.js +2 -0
- package/dist/mcp-tool/index.d.ts +5 -0
- package/dist/mcp-tool/index.js +21 -0
- package/dist/mcp-tool/mcp-tool.d.ts +52 -0
- package/dist/mcp-tool/mcp-tool.js +198 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/block-factory.d.ts +99 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/block-factory.js +266 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/block-tools.d.ts +10 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/block-tools.js +686 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/builtin.d.ts +6 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/builtin.js +220 -0
- package/dist/mcp-tool/tools/en/builtin-tools/im/buildin.d.ts +4 -0
- package/dist/mcp-tool/tools/en/builtin-tools/im/buildin.js +63 -0
- package/dist/mcp-tool/tools/en/builtin-tools/index.d.ts +4 -0
- package/dist/mcp-tool/tools/en/builtin-tools/index.js +6 -0
- package/dist/mcp-tool/tools/en/gen-tools/index.d.ts +113 -0
- package/dist/mcp-tool/tools/en/gen-tools/index.js +127 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/acs_v1.d.ts +562 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/acs_v1.js +264 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/admin_v1.d.ts +912 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/admin_v1.js +449 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/aily_v1.d.ts +1213 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/aily_v1.js +560 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/apaas_v1.d.ts +2530 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/apaas_v1.js +949 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v5.d.ts +80 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v5.js +53 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v6.d.ts +1008 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v6.js +775 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/approval_v4.d.ts +3928 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/approval_v4.js +1602 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/attendance_v1.d.ts +6043 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/attendance_v1.js +1857 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/auth_v3.d.ts +151 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/auth_v3.js +71 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/authen_v1.d.ts +26 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/authen_v1.js +17 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/baike_v1.d.ts +2174 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/baike_v1.js +594 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/base_v2.d.ts +755 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/base_v2.js +234 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/bitable_v1.d.ts +3541 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/bitable_v1.js +1786 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/board_v1.d.ts +40 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/board_v1.js +18 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/calendar_v4.d.ts +2075 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/calendar_v4.js +1594 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/cardkit_v1.d.ts +528 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/cardkit_v1.js +260 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/compensation_v1.d.ts +189 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/compensation_v1.js +132 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/contact_v3.d.ts +4274 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/contact_v3.js +2583 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v1.d.ts +16873 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v1.js +5045 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v2.d.ts +29387 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v2.js +7787 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/directory_v1.d.ts +4274 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/directory_v1.js +1367 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docs_v1.d.ts +58 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docs_v1.js +28 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docx_v1.d.ts +93466 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docx_v1.js +14350 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v1.d.ts +3251 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v1.js +1422 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v2.d.ts +174 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v2.js +117 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/ehr_v1.d.ts +86 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/ehr_v1.js +48 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/event_v1.d.ts +44 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/event_v1.js +17 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/helpdesk_v1.d.ts +733 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/helpdesk_v1.js +285 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v1.d.ts +10076 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v1.js +6065 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v2.d.ts +158 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v2.js +61 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/human_authentication_v1.d.ts +70 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/human_authentication_v1.js +27 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v1.d.ts +3043 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v1.js +1869 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v2.d.ts +2176 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v2.js +460 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/lingo_v1.d.ts +2301 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/lingo_v1.js +669 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mail_v1.d.ts +2462 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mail_v1.js +1655 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v1.d.ts +104 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v1.js +45 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v3.d.ts +329 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v3.js +78 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/minutes_v1.d.ts +92 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/minutes_v1.js +62 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/moments_v1.d.ts +52 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/moments_v1.js +24 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/okr_v1.d.ts +1628 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/okr_v1.js +434 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/optical_char_recognition_v1.d.ts +38 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/optical_char_recognition_v1.js +17 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/passport_v1.d.ts +131 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/passport_v1.js +59 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/payroll_v1.d.ts +333 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/payroll_v1.js +176 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v1.d.ts +309 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v1.js +178 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v2.d.ts +1177 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v2.js +559 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/personal_settings_v1.d.ts +640 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/personal_settings_v1.js +303 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/report_v1.d.ts +192 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/report_v1.js +71 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/search_v2.d.ts +1695 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/search_v2.js +446 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/security_and_compliance_v1.d.ts +68 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/security_and_compliance_v1.js +32 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v3.d.ts +979 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v3.js +721 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/speech_to_text_v1.d.ts +225 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/speech_to_text_v1.js +65 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v1.d.ts +1161 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v1.js +672 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v2.d.ts +6051 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v2.js +1970 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/tenant_v2.d.ts +31 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/tenant_v2.js +24 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/translation_v1.d.ts +80 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/translation_v1.js +37 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/trust_party_v1.d.ts +182 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/trust_party_v1.js +141 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/vc_v1.d.ts +5725 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/vc_v1.js +1751 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/verification_v1.d.ts +21 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/verification_v1.js +14 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v1.d.ts +72 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v1.js +19 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v2.d.ts +843 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v2.js +381 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/workplace_v1.d.ts +116 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/workplace_v1.js +77 -0
- package/dist/mcp-tool/tools/index.d.ts +104 -0
- package/dist/mcp-tool/tools/index.js +9 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/block-factory.d.ts +1 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/block-factory.js +18 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/block-tools.d.ts +4 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/block-tools.js +18 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/builtin.d.ts +6 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/builtin.js +199 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/im/buildin.d.ts +4 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/im/buildin.js +63 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/index.d.ts +4 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/index.js +6 -0
- package/dist/mcp-tool/tools/zh/gen-tools/index.d.ts +113 -0
- package/dist/mcp-tool/tools/zh/gen-tools/index.js +127 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/acs_v1.d.ts +562 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/acs_v1.js +277 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/admin_v1.d.ts +912 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/admin_v1.js +430 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/aily_v1.d.ts +1213 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/aily_v1.js +541 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/apaas_v1.d.ts +2530 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/apaas_v1.js +885 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v5.d.ts +80 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v5.js +59 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v6.d.ts +1007 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v6.js +721 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/approval_v4.d.ts +3928 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/approval_v4.js +1532 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/attendance_v1.d.ts +6043 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/attendance_v1.js +1620 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/auth_v3.d.ts +151 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/auth_v3.js +87 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/authen_v1.d.ts +26 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/authen_v1.js +17 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/baike_v1.d.ts +2174 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/baike_v1.js +574 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/base_v2.d.ts +755 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/base_v2.js +270 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/bitable_v1.d.ts +3541 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/bitable_v1.js +1864 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/board_v1.d.ts +40 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/board_v1.js +18 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/calendar_v4.d.ts +2075 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/calendar_v4.js +1533 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/cardkit_v1.d.ts +528 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/cardkit_v1.js +248 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/compensation_v1.d.ts +189 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/compensation_v1.js +130 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/contact_v3.d.ts +4274 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/contact_v3.js +2394 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v1.d.ts +16957 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v1.js +4753 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v2.d.ts +29869 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v2.js +7902 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/directory_v1.d.ts +4324 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/directory_v1.js +1340 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docs_v1.d.ts +58 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docs_v1.js +26 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docx_v1.d.ts +116719 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docx_v1.js +14949 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v1.d.ts +3251 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v1.js +1395 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v2.d.ts +174 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v2.js +115 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/ehr_v1.d.ts +86 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/ehr_v1.js +48 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/event_v1.d.ts +44 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/event_v1.js +25 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/helpdesk_v1.d.ts +733 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/helpdesk_v1.js +279 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v1.d.ts +10085 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v1.js +5787 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v2.d.ts +158 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v2.js +64 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/human_authentication_v1.d.ts +70 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/human_authentication_v1.js +27 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v1.d.ts +3043 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v1.js +1812 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v2.d.ts +2176 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v2.js +454 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/lingo_v1.d.ts +2301 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/lingo_v1.js +650 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mail_v1.d.ts +2465 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mail_v1.js +1467 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v1.d.ts +104 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v1.js +45 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v3.d.ts +329 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v3.js +76 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/minutes_v1.d.ts +92 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/minutes_v1.js +62 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/moments_v1.d.ts +52 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/moments_v1.js +20 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/okr_v1.d.ts +1664 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/okr_v1.js +455 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/optical_char_recognition_v1.d.ts +38 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/optical_char_recognition_v1.js +17 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/passport_v1.d.ts +131 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/passport_v1.js +53 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/payroll_v1.d.ts +609 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/payroll_v1.js +321 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v1.d.ts +309 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v1.js +165 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v2.d.ts +1177 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v2.js +525 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/personal_settings_v1.d.ts +640 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/personal_settings_v1.js +295 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/report_v1.d.ts +194 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/report_v1.js +72 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/search_v2.d.ts +1695 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/search_v2.js +556 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/security_and_compliance_v1.d.ts +68 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/security_and_compliance_v1.js +32 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v3.d.ts +979 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v3.js +821 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/speech_to_text_v1.d.ts +225 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/speech_to_text_v1.js +65 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v1.d.ts +1161 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v1.js +647 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v2.d.ts +6077 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v2.js +1894 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/tenant_v2.d.ts +31 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/tenant_v2.js +24 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/translation_v1.d.ts +80 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/translation_v1.js +37 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/trust_party_v1.d.ts +182 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/trust_party_v1.js +137 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/vc_v1.d.ts +5725 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/vc_v1.js +1640 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/verification_v1.d.ts +21 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/verification_v1.js +14 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v1.d.ts +72 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v1.js +34 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v2.d.ts +843 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v2.js +376 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/workplace_v1.d.ts +116 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/workplace_v1.js +77 -0
- package/dist/mcp-tool/types/index.d.ts +53 -0
- package/dist/mcp-tool/types/index.js +9 -0
- package/dist/mcp-tool/utils/case-transf.d.ts +2 -0
- package/dist/mcp-tool/utils/case-transf.js +15 -0
- package/dist/mcp-tool/utils/filter-tools.d.ts +2 -0
- package/dist/mcp-tool/utils/filter-tools.js +27 -0
- package/dist/mcp-tool/utils/get-should-use-uat.d.ts +2 -0
- package/dist/mcp-tool/utils/get-should-use-uat.js +18 -0
- package/dist/mcp-tool/utils/handler.d.ts +2 -0
- package/dist/mcp-tool/utils/handler.js +92 -0
- package/dist/mcp-tool/utils/index.d.ts +4 -0
- package/dist/mcp-tool/utils/index.js +20 -0
- package/dist/utils/clean-env-args.d.ts +1 -0
- package/dist/utils/clean-env-args.js +12 -0
- package/dist/utils/constants.d.ts +18 -0
- package/dist/utils/constants.js +36 -0
- package/dist/utils/http-instance.d.ts +2 -0
- package/dist/utils/http-instance.js +21 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.js +97 -0
- package/dist/utils/noop.d.ts +1 -0
- package/dist/utils/noop.js +6 -0
- package/dist/utils/parser-string-array.d.ts +1 -0
- package/dist/utils/parser-string-array.js +13 -0
- package/dist/utils/safe-json-parse.d.ts +1 -0
- package/dist/utils/safe-json-parse.js +14 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +52 -0
- package/docs/recall-mcp/README.md +137 -0
- package/docs/recall-mcp/README_ZH.md +137 -0
- package/docs/reference/cli/cli-zh.md +92 -0
- package/docs/reference/cli/cli.md +92 -0
- package/docs/reference/tool-presets/presets-zh.md +120 -0
- package/docs/reference/tool-presets/presets.md +120 -0
- package/docs/reference/tool-presets/tools-en.md +1516 -0
- package/docs/reference/tool-presets/tools-zh.md +1533 -0
- package/docs/troubleshooting/faq-zh.md +67 -0
- package/docs/troubleshooting/faq.md +67 -0
- package/docs/usage/configuration/configuration-zh.md +344 -0
- package/docs/usage/configuration/configuration.md +344 -0
- package/docs/usage/docker/docker-zh.md +101 -0
- package/docs/usage/docker/docker.md +106 -0
- package/package.json +65 -0
|
@@ -0,0 +1,288 @@
|
|
|
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 readline_1 = __importDefault(require("readline"));
|
|
8
|
+
const express_1 = __importDefault(require("express"));
|
|
9
|
+
const handler_local_1 = require("../auth/handler/handler-local");
|
|
10
|
+
const store_1 = require("../auth/store");
|
|
11
|
+
const utils_1 = require("../auth/utils");
|
|
12
|
+
const pkce_1 = require("../auth/utils/pkce");
|
|
13
|
+
const http_instance_1 = require("../utils/http-instance");
|
|
14
|
+
const logger_1 = require("../utils/logger");
|
|
15
|
+
const open_1 = __importDefault(require("open"));
|
|
16
|
+
function readLineFromStdin(prompt) {
|
|
17
|
+
const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stderr });
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
rl.question(prompt, (answer) => {
|
|
20
|
+
rl.close();
|
|
21
|
+
resolve(answer.trim());
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
class LoginHandler {
|
|
26
|
+
static async checkTokenWithTimeout(timeout, appId) {
|
|
27
|
+
let time = 0;
|
|
28
|
+
return new Promise((resolve) => {
|
|
29
|
+
const interval = setInterval(async () => {
|
|
30
|
+
const token = await store_1.authStore.getLocalAccessToken(appId);
|
|
31
|
+
if (token) {
|
|
32
|
+
clearInterval(interval);
|
|
33
|
+
resolve(true);
|
|
34
|
+
}
|
|
35
|
+
time += 2000;
|
|
36
|
+
if (time >= timeout) {
|
|
37
|
+
clearInterval(interval);
|
|
38
|
+
resolve(false);
|
|
39
|
+
}
|
|
40
|
+
}, 2000);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
static async handleLogin(options) {
|
|
44
|
+
if (options.headless) {
|
|
45
|
+
return this.handleHeadlessLogin(options);
|
|
46
|
+
}
|
|
47
|
+
const { appId, appSecret, domain, host, port, scope, timeout = 60000, externalUrl } = options;
|
|
48
|
+
if (!appId || !appSecret) {
|
|
49
|
+
console.error('Error: Missing App Credentials (appId and appSecret are required for login)');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
console.log('🔐 Starting OAuth login process...');
|
|
54
|
+
const app = (0, express_1.default)();
|
|
55
|
+
app.use(express_1.default.json());
|
|
56
|
+
const authHandler = new handler_local_1.LarkAuthHandlerLocal(app, {
|
|
57
|
+
port: parseInt(port),
|
|
58
|
+
host,
|
|
59
|
+
domain,
|
|
60
|
+
appId,
|
|
61
|
+
appSecret,
|
|
62
|
+
scope,
|
|
63
|
+
externalUrl,
|
|
64
|
+
});
|
|
65
|
+
authHandler.setupRoutes();
|
|
66
|
+
const result = await authHandler.reAuthorize(undefined, true);
|
|
67
|
+
if (result.authorizeUrl) {
|
|
68
|
+
console.log('📱 Please open the following URL in your browser to complete the login:');
|
|
69
|
+
console.log(`💡 Note: Please ensure the redirect URL (${authHandler.callbackUrl}) is configured in your app's security settings.`);
|
|
70
|
+
console.log(` If not configured yet, go to: ${domain}/app/${appId}/safe`);
|
|
71
|
+
console.log('🔗 Authorization URL:');
|
|
72
|
+
console.log(result.authorizeUrl);
|
|
73
|
+
console.log('\n⏳ Waiting for authorization... (timeout in 60 seconds)');
|
|
74
|
+
(0, open_1.default)(result.authorizeUrl);
|
|
75
|
+
await store_1.authStore.removeLocalAccessToken(appId);
|
|
76
|
+
const success = await this.checkTokenWithTimeout(timeout, appId);
|
|
77
|
+
if (success) {
|
|
78
|
+
console.log('✅ Successfully logged in');
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log('❌ Login failed');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('❌ Login failed:', error);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
static async handleHeadlessLogin(options) {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
const { appId, appSecret, domain, host, port, scope, externalUrl } = options;
|
|
98
|
+
if (!appId || !appSecret) {
|
|
99
|
+
console.error('Error: Missing App Credentials (appId and appSecret are required for login)');
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
const baseUrl = (externalUrl === null || externalUrl === void 0 ? void 0 : externalUrl.replace(/\/+$/, '')) || `http://${host}:${port}`;
|
|
103
|
+
const redirectUri = `${baseUrl}/callback`;
|
|
104
|
+
const hasScope = scope && scope.length > 0;
|
|
105
|
+
let authUrl;
|
|
106
|
+
let codeVerifier;
|
|
107
|
+
if (hasScope) {
|
|
108
|
+
// OAuth2 flow with PKCE
|
|
109
|
+
const pkce = (0, pkce_1.generatePKCEPair)();
|
|
110
|
+
codeVerifier = pkce.codeVerifier;
|
|
111
|
+
const params = new URLSearchParams({
|
|
112
|
+
client_id: appId,
|
|
113
|
+
response_type: 'code',
|
|
114
|
+
redirect_uri: redirectUri,
|
|
115
|
+
code_challenge: pkce.codeChallenge,
|
|
116
|
+
code_challenge_method: 'S256',
|
|
117
|
+
scope: scope.join(' '),
|
|
118
|
+
});
|
|
119
|
+
authUrl = `${domain}/open-apis/authen/v1/authorize?${params.toString()}`;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// OIDC flow
|
|
123
|
+
const params = new URLSearchParams({
|
|
124
|
+
app_id: appId,
|
|
125
|
+
redirect_uri: redirectUri,
|
|
126
|
+
});
|
|
127
|
+
authUrl = `${domain}/open-apis/authen/v1/index?${params.toString()}`;
|
|
128
|
+
}
|
|
129
|
+
console.log('\n🔐 Headless OAuth login mode\n');
|
|
130
|
+
console.log(`💡 Ensure the redirect URL is configured in your app's security settings:`);
|
|
131
|
+
console.log(` ${redirectUri}`);
|
|
132
|
+
console.log(` Configure at: ${domain}/app/${appId}/safe\n`);
|
|
133
|
+
console.log('📱 Open the following URL in your browser:\n');
|
|
134
|
+
console.log(authUrl);
|
|
135
|
+
console.log('\nAfter authorization, your browser will redirect to a URL like:');
|
|
136
|
+
console.log(` ${redirectUri}?code=xxxxxxxx`);
|
|
137
|
+
console.log('\nCopy the full URL or just the code value, and paste it below:\n');
|
|
138
|
+
const input = await readLineFromStdin('> ');
|
|
139
|
+
// Parse code from input (could be full URL or just the code)
|
|
140
|
+
let code;
|
|
141
|
+
try {
|
|
142
|
+
const url = new URL(input);
|
|
143
|
+
code = url.searchParams.get('code') || input;
|
|
144
|
+
}
|
|
145
|
+
catch (_c) {
|
|
146
|
+
code = input.trim();
|
|
147
|
+
}
|
|
148
|
+
if (!code) {
|
|
149
|
+
console.error('❌ No authorization code provided');
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
console.log('⏳ Exchanging authorization code for token...');
|
|
153
|
+
try {
|
|
154
|
+
let accessToken;
|
|
155
|
+
let refreshToken;
|
|
156
|
+
let expiresIn;
|
|
157
|
+
let tokenScope;
|
|
158
|
+
if (hasScope) {
|
|
159
|
+
// OAuth2 token exchange
|
|
160
|
+
const response = await http_instance_1.commonHttpInstance.post(`${domain}/open-apis/authen/v2/oauth/token`, {
|
|
161
|
+
grant_type: 'authorization_code',
|
|
162
|
+
client_id: appId,
|
|
163
|
+
client_secret: appSecret,
|
|
164
|
+
code,
|
|
165
|
+
redirect_uri: redirectUri,
|
|
166
|
+
code_verifier: codeVerifier,
|
|
167
|
+
}, { headers: { 'Content-Type': 'application/json; charset=utf-8' } });
|
|
168
|
+
const data = response.data;
|
|
169
|
+
if (!data.access_token) {
|
|
170
|
+
throw new Error(`Token exchange failed: ${data.code || ''} ${data.msg || JSON.stringify(data)}`);
|
|
171
|
+
}
|
|
172
|
+
accessToken = data.access_token;
|
|
173
|
+
refreshToken = data.refresh_token;
|
|
174
|
+
expiresIn = data.expires_in;
|
|
175
|
+
tokenScope = data.scope;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// OIDC token exchange: first get app_access_token
|
|
179
|
+
const appTokenResponse = await http_instance_1.commonHttpInstance.post(`${domain}/open-apis/auth/v3/app_access_token/internal`, { app_id: appId, app_secret: appSecret }, { headers: { 'Content-Type': 'application/json; charset=utf-8' } });
|
|
180
|
+
const appAccessToken = appTokenResponse.data.app_access_token;
|
|
181
|
+
if (!appAccessToken) {
|
|
182
|
+
throw new Error(`Failed to get app_access_token: ${JSON.stringify(appTokenResponse.data)}`);
|
|
183
|
+
}
|
|
184
|
+
const response = await http_instance_1.commonHttpInstance.post(`${domain}/open-apis/authen/v1/oidc/access_token`, { grant_type: 'authorization_code', code }, {
|
|
185
|
+
headers: {
|
|
186
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
187
|
+
Authorization: `Bearer ${appAccessToken}`,
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
const data = response.data;
|
|
191
|
+
if (data.code !== 0 || !((_a = data.data) === null || _a === void 0 ? void 0 : _a.access_token)) {
|
|
192
|
+
throw new Error(`Token exchange failed: ${data.code || ''} ${data.msg || JSON.stringify(data)}`);
|
|
193
|
+
}
|
|
194
|
+
accessToken = data.data.access_token;
|
|
195
|
+
refreshToken = data.data.refresh_token;
|
|
196
|
+
expiresIn = data.data.expires_in;
|
|
197
|
+
tokenScope = data.data.scope;
|
|
198
|
+
}
|
|
199
|
+
// Store token with refresh info (same as LarkAuthHandlerLocal callback)
|
|
200
|
+
const expiresAt = expiresIn ? expiresIn + Date.now() / 1000 : undefined;
|
|
201
|
+
const clientId = 'client_id_for_local_auth';
|
|
202
|
+
await store_1.authStore.storeToken({
|
|
203
|
+
clientId,
|
|
204
|
+
token: accessToken,
|
|
205
|
+
scopes: (tokenScope === null || tokenScope === void 0 ? void 0 : tokenScope.split(' ')) || [],
|
|
206
|
+
expiresAt,
|
|
207
|
+
extra: {
|
|
208
|
+
refreshToken,
|
|
209
|
+
appId,
|
|
210
|
+
appSecret,
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
await store_1.authStore.storeLocalAccessToken(accessToken, appId);
|
|
214
|
+
logger_1.logger.info(`[LoginHandler] Headless login: token stored for app ${appId}, expiresAt: ${expiresAt}`);
|
|
215
|
+
console.log('✅ Successfully logged in');
|
|
216
|
+
process.exit(0);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const detail = ((_b = error.response) === null || _b === void 0 ? void 0 : _b.data) || error.message || error;
|
|
220
|
+
console.error('❌ Login failed:', detail);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
static async handleLogout(appId) {
|
|
225
|
+
try {
|
|
226
|
+
console.log('🔓 Logging out...');
|
|
227
|
+
if (!appId) {
|
|
228
|
+
await store_1.authStore.removeAllLocalAccessTokens();
|
|
229
|
+
console.log('✅ Successfully logged out from all apps');
|
|
230
|
+
process.exit(0);
|
|
231
|
+
}
|
|
232
|
+
const currentToken = await store_1.authStore.getLocalAccessToken(appId);
|
|
233
|
+
if (!currentToken) {
|
|
234
|
+
console.log(`ℹ️ No active login session found for app: ${appId}`);
|
|
235
|
+
process.exit(0);
|
|
236
|
+
}
|
|
237
|
+
await store_1.authStore.removeLocalAccessToken(appId);
|
|
238
|
+
console.log(`✅ Successfully logged out from app: ${appId}`);
|
|
239
|
+
process.exit(0);
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
console.error('❌ Logout failed:', error);
|
|
243
|
+
process.exit(1);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
static simpleMask(str) {
|
|
247
|
+
if (!str) {
|
|
248
|
+
return '';
|
|
249
|
+
}
|
|
250
|
+
if (str.length < 6) {
|
|
251
|
+
return '*'.repeat(str.length);
|
|
252
|
+
}
|
|
253
|
+
return str.slice(0, 4) + '*'.repeat(str.length - 6) + str.slice(-2);
|
|
254
|
+
}
|
|
255
|
+
static async handleWhoAmI() {
|
|
256
|
+
var _a, _b, _c;
|
|
257
|
+
const tokens = await store_1.authStore.getAllLocalAccessTokens();
|
|
258
|
+
if (Object.keys(tokens).length <= 0) {
|
|
259
|
+
console.log('ℹ️ No active login sessions found');
|
|
260
|
+
process.exit(0);
|
|
261
|
+
}
|
|
262
|
+
console.log('👤 Current login sessions:\n');
|
|
263
|
+
for (const [appId, accessToken] of Object.entries(tokens)) {
|
|
264
|
+
const token = await store_1.authStore.getToken(accessToken);
|
|
265
|
+
if (!token) {
|
|
266
|
+
console.log('❌ No token info found');
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
console.log(`📱 App ID: ${appId}`);
|
|
270
|
+
console.log(`⌚️ AccessToken Expired: ${(0, utils_1.isTokenExpired)(token)}`);
|
|
271
|
+
console.log(`🔐 Token Info:`);
|
|
272
|
+
console.log(JSON.stringify({
|
|
273
|
+
clientId: token.clientId,
|
|
274
|
+
token: this.simpleMask(token.token),
|
|
275
|
+
scopes: token.scopes,
|
|
276
|
+
expiresAt: token.expiresAt,
|
|
277
|
+
extra: {
|
|
278
|
+
refreshToken: this.simpleMask((_a = token.extra) === null || _a === void 0 ? void 0 : _a.refreshToken),
|
|
279
|
+
appId: (_b = token.extra) === null || _b === void 0 ? void 0 : _b.appId,
|
|
280
|
+
appSecret: this.simpleMask((_c = token.extra) === null || _c === void 0 ? void 0 : _c.appSecret),
|
|
281
|
+
},
|
|
282
|
+
}, null, 2));
|
|
283
|
+
console.log('\n');
|
|
284
|
+
}
|
|
285
|
+
process.exit(0);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
exports.LoginHandler = LoginHandler;
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
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('--headless', '(Optional) Headless login mode for environments without a browser (e.g. Docker). Prints auth URL and waits for code input.')
|
|
37
|
+
.option('--debug', '(Optional) Enable debug mode')
|
|
38
|
+
.action(async (options) => {
|
|
39
|
+
if (constants_1.NODE_VERSION_MAJOR < 20) {
|
|
40
|
+
logger_1.logger.error(`❌ This CLI requires Node.js >= 20. You are using v${process.versions.node}.\n\n` +
|
|
41
|
+
`👉 Please upgrade Node.js: https://nodejs.org/`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
const mergedOptions = { ...constants_1.OAPI_MCP_DEFAULT_ARGS, ...constants_1.OAPI_MCP_ENV_ARGS, ...options };
|
|
45
|
+
if (mergedOptions.debug) {
|
|
46
|
+
logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
|
|
47
|
+
}
|
|
48
|
+
await login_handler_1.LoginHandler.handleLogin({ ...mergedOptions, scope: (0, parser_string_array_1.parseStringArray)(mergedOptions.scope) });
|
|
49
|
+
});
|
|
50
|
+
program
|
|
51
|
+
.command('logout')
|
|
52
|
+
.description('Logout and clear stored user access token')
|
|
53
|
+
.option('-a, --app-id <appId>', '(Optional) Feishu/Lark App ID, if not specified, logout all apps')
|
|
54
|
+
.option('--debug', '(Optional) Enable debug mode')
|
|
55
|
+
.action(async (options) => {
|
|
56
|
+
if (options.debug) {
|
|
57
|
+
logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
|
|
58
|
+
}
|
|
59
|
+
await login_handler_1.LoginHandler.handleLogout(options.appId);
|
|
60
|
+
});
|
|
61
|
+
program
|
|
62
|
+
.command('mcp')
|
|
63
|
+
.description('Start Feishu/Lark MCP Service')
|
|
64
|
+
.option('-a, --app-id <appId>', 'Feishu/Lark App ID')
|
|
65
|
+
.option('-s, --app-secret <appSecret>', 'Feishu/Lark App Secret')
|
|
66
|
+
.option('-d, --domain <domain>', '(Optional) Feishu/Lark Domain (default: "https://open.feishu.cn")')
|
|
67
|
+
.option('-t, --tools <tools>', '(Optional) List of API tools to enable, separated by commas or spaces (default: "preset.default")')
|
|
68
|
+
.option('-c, --tool-name-case <toolNameCase>', '(Optional) Tool Name Case, snake or camel or kebab or dot (default: "snake")')
|
|
69
|
+
.option('-l, --language <language>', '(Optional) Tools Language, zh or en (default: "en")')
|
|
70
|
+
.option('--token-mode <tokenMode>', '(Optional) Token Mode, auto or user_access_token or tenant_access_token (default: "auto")')
|
|
71
|
+
.option('-u, --user-access-token <userAccessToken>', '(Optional) User Access Token (beta)')
|
|
72
|
+
.option('--oauth', '(Optional) Enable MCP Auth Server to get user_access_token and auto request user login when token expires (Beta) (default: false)')
|
|
73
|
+
.option('--scope <scope>', '(Optional) Specify OAuth scope for user access token, default is all permissions granted to the app, separated by spaces or commas')
|
|
74
|
+
.option('-m, --mode <mode>', '(Optional) Transport Mode, stdio or sse or streamable (default: "stdio")')
|
|
75
|
+
.option('--host <host>', '(Optional) Host to listen (default: "localhost")')
|
|
76
|
+
.option('-p, --port <port>', '(Optional) Port to listen (default: "3000")')
|
|
77
|
+
.option('--external-url <externalUrl>', '(Optional) External URL for OAuth callback when behind a reverse proxy (e.g. https://mcp.example.com)')
|
|
78
|
+
.option('--config <configPath>', '(Optional) Config file path (JSON)')
|
|
79
|
+
.option('--debug', '(Optional) Enable debug mode')
|
|
80
|
+
.action(async (options) => {
|
|
81
|
+
let fileOptions = {};
|
|
82
|
+
if (options.config) {
|
|
83
|
+
try {
|
|
84
|
+
const configContent = fs_1.default.readFileSync(options.config, 'utf-8');
|
|
85
|
+
fileOptions = JSON.parse(configContent);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
logger_1.logger.error(`Failed to read config file: ${err}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const mergedOptions = { ...constants_1.OAPI_MCP_DEFAULT_ARGS, ...constants_1.OAPI_MCP_ENV_ARGS, ...fileOptions, ...options };
|
|
93
|
+
if (constants_1.NODE_VERSION_MAJOR < 20 && mergedOptions.oauth) {
|
|
94
|
+
logger_1.logger.error(`❌ This CLI requires Node.js >= 20. You are using v${process.versions.node}.\n\n` +
|
|
95
|
+
`👉 Please upgrade Node.js: https://nodejs.org/`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
if (mergedOptions.debug) {
|
|
99
|
+
logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
|
|
100
|
+
}
|
|
101
|
+
await (0, mcp_server_1.initMcpServerWithTransport)('oapi', {
|
|
102
|
+
...mergedOptions,
|
|
103
|
+
scope: (0, parser_string_array_1.parseStringArray)(mergedOptions.scope),
|
|
104
|
+
tools: (0, parser_string_array_1.parseStringArray)(mergedOptions.tools),
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
program
|
|
108
|
+
.command('recall-developer-documents')
|
|
109
|
+
.description('Start Feishu/Lark Open Platform Recall MCP Service')
|
|
110
|
+
.option('-d, --domain <domain>', '(Optional) Feishu Open Platform Domain', 'https://open.feishu.cn')
|
|
111
|
+
.option('-m, --mode <mode>', '(Optional) Transport Mode, stdio or sse or streamable', 'stdio')
|
|
112
|
+
.option('--host <host>', '(Optional) Host to listen', 'localhost')
|
|
113
|
+
.option('-p, --port <port>', '(Optional) Port to listen in sse mode', '3001')
|
|
114
|
+
.option('--debug', '(Optional) Enable debug mode')
|
|
115
|
+
.action(async (options) => {
|
|
116
|
+
if (options.debug) {
|
|
117
|
+
logger_1.logger.setLevel(logger_1.LogLevel.DEBUG);
|
|
118
|
+
}
|
|
119
|
+
await (0, mcp_server_1.initMcpServerWithTransport)('recall', options);
|
|
120
|
+
});
|
|
121
|
+
if (process.argv.length === 2) {
|
|
122
|
+
program.help();
|
|
123
|
+
}
|
|
124
|
+
program.parse(process.argv);
|
package/dist/index.d.ts
ADDED
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,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,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,44 @@
|
|
|
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
|
+
* External URL for OAuth callback when running behind a reverse proxy (e.g. https://mcp.example.com).
|
|
39
|
+
*/
|
|
40
|
+
externalUrl?: string;
|
|
41
|
+
}
|
|
42
|
+
export type InitTransportServerFunction = (getNewServer: (options?: McpServerOptions, authHandler?: LarkAuthHandler) => McpServer, mcpServerOptions: McpServerOptions, authOptions?: {
|
|
43
|
+
needAuthFlow: boolean;
|
|
44
|
+
}) => void | Promise<void>;
|