@payloadcms/plugin-mcp 3.91.0-internal.6e3dc85 → 4.0.0-beta.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/LICENSE.md +1 -1
- package/README.md +2 -2
- package/bin.js +39 -0
- package/dist/defaultAccess.d.ts +3 -0
- package/dist/defaultAccess.d.ts.map +1 -0
- package/dist/defaultAccess.js +3 -0
- package/dist/defaultAccess.js.map +1 -0
- package/dist/defineTool.d.ts +26 -0
- package/dist/defineTool.d.ts.map +1 -0
- package/dist/defineTool.js +37 -0
- package/dist/defineTool.js.map +1 -0
- package/dist/endpoint/access.d.ts +17 -0
- package/dist/endpoint/access.d.ts.map +1 -0
- package/dist/endpoint/access.js +93 -0
- package/dist/endpoint/access.js.map +1 -0
- package/dist/endpoint/index.d.ts +3 -0
- package/dist/endpoint/index.d.ts.map +1 -0
- package/dist/endpoint/index.js +116 -0
- package/dist/endpoint/index.js.map +1 -0
- package/dist/exports/client.d.ts +2 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +4 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/internal.d.ts +2 -0
- package/dist/exports/internal.d.ts.map +1 -0
- package/dist/exports/internal.js +3 -0
- package/dist/exports/internal.js.map +1 -0
- package/dist/index.d.ts +6 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -67
- package/dist/index.js.map +1 -1
- package/dist/mcp/buildMcpServer.d.ts +19 -0
- package/dist/mcp/buildMcpServer.d.ts.map +1 -0
- package/dist/mcp/buildMcpServer.js +235 -0
- package/dist/mcp/buildMcpServer.js.map +1 -0
- package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
- package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/authTools.js +312 -0
- package/dist/mcp/builtin/collections/authTools.js.map +1 -0
- package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/countTool.js +63 -0
- package/dist/mcp/builtin/collections/countTool.js.map +1 -0
- package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/countVersionsTool.js +60 -0
- package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/createTool.js +137 -0
- package/dist/mcp/builtin/collections/createTool.js.map +1 -0
- package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/deleteTool.js +111 -0
- package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
- package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
- package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
- package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
- package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/fileInput.js +88 -0
- package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
- package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
- package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
- package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findTool.js +146 -0
- package/dist/mcp/builtin/collections/findTool.js.map +1 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
- package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
- package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +103 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
- package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/updateTool.js +172 -0
- package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
- package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
- package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
- package/dist/mcp/builtin/formatEntityError.js +55 -0
- package/dist/mcp/builtin/formatEntityError.js.map +1 -0
- package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
- package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
- package/dist/mcp/builtin/getConfigInfoTool.js +69 -0
- package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
- package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
- package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/findTool.js +67 -0
- package/dist/mcp/builtin/globals/findTool.js.map +1 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
- package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
- package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +81 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
- package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/updateTool.js +78 -0
- package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
- package/dist/mcp/builtinTools.d.ts +168 -0
- package/dist/mcp/builtinTools.d.ts.map +1 -0
- package/dist/mcp/builtinTools.js +169 -0
- package/dist/mcp/builtinTools.js.map +1 -0
- package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
- package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
- package/dist/mcp/sanitizeMCPConfig.js +233 -0
- package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
- package/dist/stdio.d.ts +8 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +128 -0
- package/dist/stdio.js.map +1 -0
- package/dist/types.d.ts +263 -447
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/getLogger.d.ts +10 -0
- package/dist/utils/getLogger.d.ts.map +1 -0
- package/dist/utils/getLogger.js +22 -0
- package/dist/utils/getLogger.js.map +1 -0
- package/dist/utils/getPluginConfig.d.ts +12 -0
- package/dist/utils/getPluginConfig.d.ts.map +1 -0
- package/dist/utils/getPluginConfig.js +15 -0
- package/dist/utils/getPluginConfig.js.map +1 -0
- package/dist/utils/resolveProjectRoot.d.ts +7 -0
- package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
- package/dist/utils/resolveProjectRoot.js +15 -0
- package/dist/utils/resolveProjectRoot.js.map +1 -0
- package/dist/utils/toStandardSchema.d.ts +5 -0
- package/dist/utils/toStandardSchema.d.ts.map +1 -0
- package/dist/utils/toStandardSchema.js +4 -0
- package/dist/utils/toStandardSchema.js.map +1 -0
- package/package.json +29 -11
- package/src/defaultAccess.ts +3 -0
- package/src/defineTool.ts +44 -0
- package/src/endpoint/access.ts +111 -0
- package/src/endpoint/index.ts +107 -0
- package/src/exports/client.ts +3 -0
- package/src/exports/internal.ts +1 -0
- package/src/index.ts +31 -89
- package/src/mcp/buildMcpServer.ts +294 -0
- package/src/mcp/builtin/collections/authTools.ts +280 -0
- package/src/mcp/builtin/collections/countTool.ts +61 -0
- package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
- package/src/mcp/builtin/collections/createTool.ts +145 -0
- package/src/mcp/builtin/collections/deleteTool.ts +97 -0
- package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
- package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
- package/src/mcp/builtin/collections/fileInput.ts +127 -0
- package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
- package/src/mcp/builtin/collections/findTool.ts +134 -0
- package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
- package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
- package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +91 -0
- package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
- package/src/mcp/builtin/collections/updateTool.ts +173 -0
- package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
- package/src/mcp/builtin/formatEntityError.ts +77 -0
- package/src/mcp/builtin/getConfigInfoTool.ts +68 -0
- package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
- package/src/mcp/builtin/globals/findTool.ts +66 -0
- package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
- package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
- package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +73 -0
- package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
- package/src/mcp/builtin/globals/updateTool.ts +92 -0
- package/src/mcp/builtinTools.ts +161 -0
- package/src/mcp/sanitizeMCPConfig.ts +281 -0
- package/src/stdio.ts +131 -0
- package/src/types.ts +312 -486
- package/src/utils/getLogger.ts +22 -0
- package/src/utils/getPluginConfig.ts +24 -0
- package/src/utils/resolveProjectRoot.ts +17 -0
- package/src/utils/toStandardSchema.ts +9 -0
- package/dist/collections/createApiKeysCollection.d.ts +0 -7
- package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
- package/dist/collections/createApiKeysCollection.js +0 -342
- package/dist/collections/createApiKeysCollection.js.map +0 -1
- package/dist/defaults.d.ts +0 -4
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js +0 -5
- package/dist/defaults.js.map +0 -1
- package/dist/endpoints/mcp.d.ts +0 -4
- package/dist/endpoints/mcp.d.ts.map +0 -1
- package/dist/endpoints/mcp.js +0 -24
- package/dist/endpoints/mcp.js.map +0 -1
- package/dist/endpoints/resolveAccessSettings.d.ts +0 -10
- package/dist/endpoints/resolveAccessSettings.d.ts.map +0 -1
- package/dist/endpoints/resolveAccessSettings.js +0 -44
- package/dist/endpoints/resolveAccessSettings.js.map +0 -1
- package/dist/endpoints/withRestoredWebGlobals.d.ts +0 -5
- package/dist/endpoints/withRestoredWebGlobals.d.ts.map +0 -1
- package/dist/endpoints/withRestoredWebGlobals.js +0 -23
- package/dist/endpoints/withRestoredWebGlobals.js.map +0 -1
- package/dist/mcp/createRequest.d.ts +0 -3
- package/dist/mcp/createRequest.d.ts.map +0 -1
- package/dist/mcp/createRequest.js +0 -14
- package/dist/mcp/createRequest.js.map +0 -1
- package/dist/mcp/getMcpHandler.d.ts +0 -4
- package/dist/mcp/getMcpHandler.d.ts.map +0 -1
- package/dist/mcp/getMcpHandler.js +0 -231
- package/dist/mcp/getMcpHandler.js.map +0 -1
- package/dist/mcp/helpers/config.d.ts +0 -22
- package/dist/mcp/helpers/config.d.ts.map +0 -1
- package/dist/mcp/helpers/config.js +0 -153
- package/dist/mcp/helpers/config.js.map +0 -1
- package/dist/mcp/helpers/fields.d.ts +0 -19
- package/dist/mcp/helpers/fields.d.ts.map +0 -1
- package/dist/mcp/helpers/fields.js +0 -102
- package/dist/mcp/helpers/fields.js.map +0 -1
- package/dist/mcp/helpers/fileValidation.d.ts +0 -67
- package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
- package/dist/mcp/helpers/fileValidation.js +0 -267
- package/dist/mcp/helpers/fileValidation.js.map +0 -1
- package/dist/mcp/registerTool.d.ts +0 -6
- package/dist/mcp/registerTool.d.ts.map +0 -1
- package/dist/mcp/registerTool.js +0 -18
- package/dist/mcp/registerTool.js.map +0 -1
- package/dist/mcp/tools/auth/auth.d.ts +0 -4
- package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
- package/dist/mcp/tools/auth/auth.js +0 -79
- package/dist/mcp/tools/auth/auth.js.map +0 -1
- package/dist/mcp/tools/auth/auth.spec.js +0 -83
- package/dist/mcp/tools/auth/auth.spec.js.map +0 -1
- package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
- package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
- package/dist/mcp/tools/auth/forgotPassword.js +0 -50
- package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
- package/dist/mcp/tools/auth/login.d.ts +0 -4
- package/dist/mcp/tools/auth/login.d.ts.map +0 -1
- package/dist/mcp/tools/auth/login.js +0 -50
- package/dist/mcp/tools/auth/login.js.map +0 -1
- package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
- package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
- package/dist/mcp/tools/auth/resetPassword.js +0 -49
- package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
- package/dist/mcp/tools/auth/unlock.d.ts +0 -4
- package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
- package/dist/mcp/tools/auth/unlock.js +0 -49
- package/dist/mcp/tools/auth/unlock.js.map +0 -1
- package/dist/mcp/tools/auth/verify.d.ts +0 -4
- package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
- package/dist/mcp/tools/auth/verify.js +0 -45
- package/dist/mcp/tools/auth/verify.js.map +0 -1
- package/dist/mcp/tools/collection/create.d.ts +0 -10
- package/dist/mcp/tools/collection/create.d.ts.map +0 -1
- package/dist/mcp/tools/collection/create.js +0 -139
- package/dist/mcp/tools/collection/create.js.map +0 -1
- package/dist/mcp/tools/collection/delete.d.ts +0 -10
- package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
- package/dist/mcp/tools/collection/delete.js +0 -154
- package/dist/mcp/tools/collection/delete.js.map +0 -1
- package/dist/mcp/tools/collection/find.d.ts +0 -10
- package/dist/mcp/tools/collection/find.d.ts.map +0 -1
- package/dist/mcp/tools/collection/find.js +0 -165
- package/dist/mcp/tools/collection/find.js.map +0 -1
- package/dist/mcp/tools/collection/update.d.ts +0 -10
- package/dist/mcp/tools/collection/update.d.ts.map +0 -1
- package/dist/mcp/tools/collection/update.js +0 -209
- package/dist/mcp/tools/collection/update.js.map +0 -1
- package/dist/mcp/tools/config/find.d.ts +0 -10
- package/dist/mcp/tools/config/find.d.ts.map +0 -1
- package/dist/mcp/tools/config/find.js +0 -97
- package/dist/mcp/tools/config/find.js.map +0 -1
- package/dist/mcp/tools/config/update.d.ts +0 -10
- package/dist/mcp/tools/config/update.d.ts.map +0 -1
- package/dist/mcp/tools/config/update.js +0 -215
- package/dist/mcp/tools/config/update.js.map +0 -1
- package/dist/mcp/tools/global/find.d.ts +0 -5
- package/dist/mcp/tools/global/find.d.ts.map +0 -1
- package/dist/mcp/tools/global/find.js +0 -84
- package/dist/mcp/tools/global/find.js.map +0 -1
- package/dist/mcp/tools/global/update.d.ts +0 -6
- package/dist/mcp/tools/global/update.d.ts.map +0 -1
- package/dist/mcp/tools/global/update.js +0 -126
- package/dist/mcp/tools/global/update.js.map +0 -1
- package/dist/mcp/tools/job/create.d.ts +0 -10
- package/dist/mcp/tools/job/create.d.ts.map +0 -1
- package/dist/mcp/tools/job/create.js +0 -293
- package/dist/mcp/tools/job/create.js.map +0 -1
- package/dist/mcp/tools/job/run.d.ts +0 -10
- package/dist/mcp/tools/job/run.d.ts.map +0 -1
- package/dist/mcp/tools/job/run.js +0 -131
- package/dist/mcp/tools/job/run.js.map +0 -1
- package/dist/mcp/tools/job/update.d.ts +0 -11
- package/dist/mcp/tools/job/update.d.ts.map +0 -1
- package/dist/mcp/tools/job/update.js +0 -186
- package/dist/mcp/tools/job/update.js.map +0 -1
- package/dist/mcp/tools/resource/create.d.ts +0 -6
- package/dist/mcp/tools/resource/create.d.ts.map +0 -1
- package/dist/mcp/tools/resource/create.js +0 -124
- package/dist/mcp/tools/resource/create.js.map +0 -1
- package/dist/mcp/tools/resource/delete.d.ts +0 -5
- package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
- package/dist/mcp/tools/resource/delete.js +0 -151
- package/dist/mcp/tools/resource/delete.js.map +0 -1
- package/dist/mcp/tools/resource/find.d.ts +0 -5
- package/dist/mcp/tools/resource/find.d.ts.map +0 -1
- package/dist/mcp/tools/resource/find.js +0 -170
- package/dist/mcp/tools/resource/find.js.map +0 -1
- package/dist/mcp/tools/resource/update.d.ts +0 -6
- package/dist/mcp/tools/resource/update.d.ts.map +0 -1
- package/dist/mcp/tools/resource/update.js +0 -242
- package/dist/mcp/tools/resource/update.js.map +0 -1
- package/dist/mcp/tools/schemas.d.ts +0 -442
- package/dist/mcp/tools/schemas.d.ts.map +0 -1
- package/dist/mcp/tools/schemas.js +0 -238
- package/dist/mcp/tools/schemas.js.map +0 -1
- package/dist/utils/adminEntitySettings.d.ts +0 -17
- package/dist/utils/adminEntitySettings.d.ts.map +0 -1
- package/dist/utils/adminEntitySettings.js +0 -41
- package/dist/utils/adminEntitySettings.js.map +0 -1
- package/dist/utils/createApiKeyFields.d.ts +0 -15
- package/dist/utils/createApiKeyFields.d.ts.map +0 -1
- package/dist/utils/createApiKeyFields.js +0 -57
- package/dist/utils/createApiKeyFields.js.map +0 -1
- package/dist/utils/getEnabledSlugs.d.ts +0 -13
- package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
- package/dist/utils/getEnabledSlugs.js +0 -32
- package/dist/utils/getEnabledSlugs.js.map +0 -1
- package/dist/utils/getVirtualFieldNames.d.ts +0 -14
- package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
- package/dist/utils/getVirtualFieldNames.js +0 -35
- package/dist/utils/getVirtualFieldNames.js.map +0 -1
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
- package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
- package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
- package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
- package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
- package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
- package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
- package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
- package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
- package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
- package/dist/utils/schemaConversion/transformPointFields.js +0 -51
- package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
- package/dist/utils/transformPointDataToPayload.d.ts +0 -7
- package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
- package/dist/utils/transformPointDataToPayload.js +0 -28
- package/dist/utils/transformPointDataToPayload.js.map +0 -1
- package/src/collections/createApiKeysCollection.ts +0 -399
- package/src/defaults.ts +0 -3
- package/src/endpoints/mcp.ts +0 -26
- package/src/endpoints/resolveAccessSettings.ts +0 -74
- package/src/endpoints/withRestoredWebGlobals.ts +0 -19
- package/src/mcp/createRequest.ts +0 -13
- package/src/mcp/getMcpHandler.ts +0 -546
- package/src/mcp/helpers/config.ts +0 -213
- package/src/mcp/helpers/fields.ts +0 -154
- package/src/mcp/helpers/fileValidation.ts +0 -362
- package/src/mcp/registerTool.ts +0 -22
- package/src/mcp/tools/auth/auth.spec.ts +0 -98
- package/src/mcp/tools/auth/auth.ts +0 -89
- package/src/mcp/tools/auth/forgotPassword.ts +0 -72
- package/src/mcp/tools/auth/login.ts +0 -64
- package/src/mcp/tools/auth/resetPassword.ts +0 -61
- package/src/mcp/tools/auth/unlock.ts +0 -65
- package/src/mcp/tools/auth/verify.ts +0 -57
- package/src/mcp/tools/collection/create.ts +0 -210
- package/src/mcp/tools/collection/delete.ts +0 -211
- package/src/mcp/tools/collection/find.ts +0 -224
- package/src/mcp/tools/collection/update.ts +0 -290
- package/src/mcp/tools/config/find.ts +0 -128
- package/src/mcp/tools/config/update.ts +0 -280
- package/src/mcp/tools/global/find.ts +0 -130
- package/src/mcp/tools/global/update.ts +0 -209
- package/src/mcp/tools/job/create.ts +0 -416
- package/src/mcp/tools/job/run.ts +0 -169
- package/src/mcp/tools/job/update.ts +0 -274
- package/src/mcp/tools/resource/create.ts +0 -211
- package/src/mcp/tools/resource/delete.ts +0 -218
- package/src/mcp/tools/resource/find.ts +0 -246
- package/src/mcp/tools/resource/update.ts +0 -367
- package/src/mcp/tools/schemas.ts +0 -499
- package/src/utils/adminEntitySettings.ts +0 -40
- package/src/utils/createApiKeyFields.ts +0 -72
- package/src/utils/getEnabledSlugs.ts +0 -42
- package/src/utils/getVirtualFieldNames.ts +0 -53
- package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
- package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
- package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
- package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
- package/src/utils/schemaConversion/transformPointFields.ts +0 -55
- package/src/utils/transformPointDataToPayload.ts +0 -40
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Payload } from 'payload'
|
|
2
|
+
|
|
3
|
+
import { getPluginConfig } from './getPluginConfig.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Get the logger for the MCP plugin. Child of the main Payload logger, prefixed with `[plugin-mcp]`
|
|
7
|
+
* and tagged with a structured `plugin: 'mcp'` field. When `verboseLogs` is off, info/debug calls
|
|
8
|
+
* are silenced; warn/error still surface so operators don't lose error signal.
|
|
9
|
+
*/
|
|
10
|
+
export const getLogger: (args: { payload: Payload }) => Payload['logger'] = ({ payload }) => {
|
|
11
|
+
const pluginConfig = getPluginConfig({ config: payload.config })
|
|
12
|
+
|
|
13
|
+
const useVerboseLogs = pluginConfig?.mcp?.verboseLogs ?? false
|
|
14
|
+
|
|
15
|
+
const logger = payload.logger.child({ plugin: 'mcp' }, { msgPrefix: '[plugin-mcp] ' })
|
|
16
|
+
|
|
17
|
+
if (!useVerboseLogs) {
|
|
18
|
+
logger.level = 'warn'
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return logger
|
|
22
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { PluginsMap, SanitizedConfig } from 'payload'
|
|
2
|
+
|
|
3
|
+
import type { SanitizedMCPPluginConfig } from '../types.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns the sanitized plugin config — the form produced by
|
|
7
|
+
* `sanitizeMCPConfig` and stashed back on the plugin's `options` during init.
|
|
8
|
+
* Callers downstream of plugin init can rely on `items` and other defaults
|
|
9
|
+
* being fully resolved.
|
|
10
|
+
*/
|
|
11
|
+
export const getPluginConfig: (args: { config: SanitizedConfig }) => SanitizedMCPPluginConfig = ({
|
|
12
|
+
config,
|
|
13
|
+
}) => {
|
|
14
|
+
const plugin = config.plugins?.find(
|
|
15
|
+
(plugin) => plugin.slug === '@payloadcms/plugin-mcp',
|
|
16
|
+
) as PluginsMap['@payloadcms/plugin-mcp']
|
|
17
|
+
|
|
18
|
+
if (!plugin) {
|
|
19
|
+
throw new Error('MCP Plugin not found in config.plugins.')
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// @ts-expect-error
|
|
23
|
+
return plugin.sanitizedOptions
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import path from 'path'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns the project root: the parent of the outermost `node_modules` segment in
|
|
5
|
+
* `fromPath`. Returns `null` when the path has no `node_modules` (e.g. running from
|
|
6
|
+
* source inside the Payload monorepo).
|
|
7
|
+
*/
|
|
8
|
+
export const resolveProjectRoot = (fromPath: string): null | string => {
|
|
9
|
+
const segments = fromPath.split(path.sep)
|
|
10
|
+
const nodeModulesIndex = segments.indexOf('node_modules')
|
|
11
|
+
|
|
12
|
+
if (nodeModulesIndex <= 0) {
|
|
13
|
+
return null
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return segments.slice(0, nodeModulesIndex).join(path.sep) || null
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { fromJsonSchema, type StandardSchemaWithJSON } from '@modelcontextprotocol/server'
|
|
2
|
+
|
|
3
|
+
import type { ToolInputSchema } from '../types.js'
|
|
4
|
+
|
|
5
|
+
/** Normalize a tool/prompt input to a Standard Schema. Raw JSON Schema gets wrapped; Standard Schema instances pass through. */
|
|
6
|
+
export const toStandardSchema = (schema: ToolInputSchema): StandardSchemaWithJSON =>
|
|
7
|
+
typeof schema === 'object' && schema !== null && '~standard' in schema
|
|
8
|
+
? (schema as StandardSchemaWithJSON)
|
|
9
|
+
: fromJsonSchema(schema)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { CollectionConfig } from 'payload';
|
|
2
|
-
import type { MCPPluginConfig } from '../types.js';
|
|
3
|
-
export declare const createAPIKeysCollection: (collections: MCPPluginConfig["collections"], globals: MCPPluginConfig["globals"], customTools: Array<{
|
|
4
|
-
description: string;
|
|
5
|
-
name: string;
|
|
6
|
-
}> | undefined, experimentalTools: NonNullable<MCPPluginConfig["experimental"]>["tools"] | undefined, pluginOptions: MCPPluginConfig) => CollectionConfig;
|
|
7
|
-
//# sourceMappingURL=createApiKeysCollection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createApiKeysCollection.d.ts","sourceRoot":"","sources":["../../src/collections/createApiKeysCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAyC,MAAM,SAAS,CAAA;AAEtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,eAAO,MAAM,uBAAuB,gBACrB,eAAe,CAAC,aAAa,CAAC,WAClC,eAAe,CAAC,SAAS,CAAC,eACtB,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,iCACtC,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,6BACzD,eAAe,KAC7B,gBAiYF,CAAA"}
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import { toCamelCase } from '../utils/camelCase.js';
|
|
2
|
-
import { createApiKeyFields } from '../utils/createApiKeyFields.js';
|
|
3
|
-
export const createAPIKeysCollection = (collections, globals, customTools = [], experimentalTools = {}, pluginOptions)=>{
|
|
4
|
-
const customToolsFields = customTools.map((tool)=>{
|
|
5
|
-
const camelCasedName = toCamelCase(tool.name);
|
|
6
|
-
return {
|
|
7
|
-
name: camelCasedName,
|
|
8
|
-
type: 'checkbox',
|
|
9
|
-
admin: {
|
|
10
|
-
description: tool.description
|
|
11
|
-
},
|
|
12
|
-
defaultValue: true,
|
|
13
|
-
label: camelCasedName
|
|
14
|
-
};
|
|
15
|
-
});
|
|
16
|
-
const customResourceFields = pluginOptions.mcp?.resources?.map((resource)=>{
|
|
17
|
-
const camelCasedName = toCamelCase(resource.name);
|
|
18
|
-
return {
|
|
19
|
-
name: camelCasedName,
|
|
20
|
-
type: 'checkbox',
|
|
21
|
-
admin: {
|
|
22
|
-
description: resource.description
|
|
23
|
-
},
|
|
24
|
-
defaultValue: true,
|
|
25
|
-
label: camelCasedName
|
|
26
|
-
};
|
|
27
|
-
}) || [];
|
|
28
|
-
const customPromptFields = pluginOptions.mcp?.prompts?.map((prompt)=>{
|
|
29
|
-
const camelCasedName = toCamelCase(prompt.name);
|
|
30
|
-
return {
|
|
31
|
-
name: camelCasedName,
|
|
32
|
-
type: 'checkbox',
|
|
33
|
-
admin: {
|
|
34
|
-
description: prompt.description
|
|
35
|
-
},
|
|
36
|
-
defaultValue: true,
|
|
37
|
-
label: camelCasedName
|
|
38
|
-
};
|
|
39
|
-
}) || [];
|
|
40
|
-
const userCollection = pluginOptions.userCollection;
|
|
41
|
-
const isAuthenticated = ({ req })=>Boolean(req.user && req.user.collection === userCollection);
|
|
42
|
-
const restrictToOwnKeys = ({ req })=>req.user && req.user.collection === userCollection ? {
|
|
43
|
-
user: {
|
|
44
|
-
equals: req.user.id
|
|
45
|
-
}
|
|
46
|
-
} : false;
|
|
47
|
-
return {
|
|
48
|
-
slug: 'payload-mcp-api-keys',
|
|
49
|
-
access: {
|
|
50
|
-
// Fail-safe default: any authenticated user may manage only their OWN keys.
|
|
51
|
-
// Cross-user key issuance is disabled by default (see the `user` field below)
|
|
52
|
-
// and must be granted explicitly via `overrideApiKeyCollection`.
|
|
53
|
-
create: isAuthenticated,
|
|
54
|
-
delete: restrictToOwnKeys,
|
|
55
|
-
read: restrictToOwnKeys,
|
|
56
|
-
unlock: restrictToOwnKeys,
|
|
57
|
-
update: restrictToOwnKeys
|
|
58
|
-
},
|
|
59
|
-
admin: {
|
|
60
|
-
description: 'API keys control which collections, resources, tools, and prompts MCP clients can access',
|
|
61
|
-
group: 'MCP',
|
|
62
|
-
useAsTitle: 'label'
|
|
63
|
-
},
|
|
64
|
-
auth: {
|
|
65
|
-
disableLocalStrategy: true,
|
|
66
|
-
useAPIKey: true
|
|
67
|
-
},
|
|
68
|
-
fields: [
|
|
69
|
-
{
|
|
70
|
-
name: 'user',
|
|
71
|
-
type: 'relationship',
|
|
72
|
-
access: {
|
|
73
|
-
// Bind new keys to the creating user and prevent re-binding on update.
|
|
74
|
-
// A key acts as its associated user, so allowing arbitrary assignment lets
|
|
75
|
-
// any key manager impersonate anyone. Grant these via `overrideApiKeyCollection`
|
|
76
|
-
// to let trusted administrators issue keys on behalf of other users.
|
|
77
|
-
create: ()=>false,
|
|
78
|
-
update: ()=>false
|
|
79
|
-
},
|
|
80
|
-
admin: {
|
|
81
|
-
description: 'The user that the API key is associated with.'
|
|
82
|
-
},
|
|
83
|
-
defaultValue: ({ req })=>req.user && req.user.collection === userCollection ? req.user.id : undefined,
|
|
84
|
-
relationTo: userCollection,
|
|
85
|
-
required: true
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
name: 'label',
|
|
89
|
-
type: 'text',
|
|
90
|
-
admin: {
|
|
91
|
-
description: 'A useful label for the API key.'
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
name: 'description',
|
|
96
|
-
type: 'text',
|
|
97
|
-
admin: {
|
|
98
|
-
description: 'The purpose of the API key.'
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
...createApiKeyFields({
|
|
102
|
-
config: collections,
|
|
103
|
-
configType: 'collection'
|
|
104
|
-
}),
|
|
105
|
-
...createApiKeyFields({
|
|
106
|
-
config: globals,
|
|
107
|
-
configType: 'global'
|
|
108
|
-
}),
|
|
109
|
-
...customTools.length > 0 ? [
|
|
110
|
-
{
|
|
111
|
-
type: 'collapsible',
|
|
112
|
-
admin: {
|
|
113
|
-
description: 'Manage client access to tools',
|
|
114
|
-
position: 'sidebar'
|
|
115
|
-
},
|
|
116
|
-
fields: [
|
|
117
|
-
{
|
|
118
|
-
name: 'payload-mcp-tool',
|
|
119
|
-
type: 'group',
|
|
120
|
-
fields: customToolsFields,
|
|
121
|
-
label: false
|
|
122
|
-
}
|
|
123
|
-
],
|
|
124
|
-
label: 'Tools'
|
|
125
|
-
}
|
|
126
|
-
] : [],
|
|
127
|
-
...pluginOptions.mcp?.resources && pluginOptions.mcp?.resources.length > 0 ? [
|
|
128
|
-
{
|
|
129
|
-
type: 'collapsible',
|
|
130
|
-
admin: {
|
|
131
|
-
description: 'Manage client access to resources',
|
|
132
|
-
position: 'sidebar'
|
|
133
|
-
},
|
|
134
|
-
fields: [
|
|
135
|
-
{
|
|
136
|
-
name: 'payload-mcp-resource',
|
|
137
|
-
type: 'group',
|
|
138
|
-
fields: customResourceFields,
|
|
139
|
-
label: false
|
|
140
|
-
}
|
|
141
|
-
],
|
|
142
|
-
label: 'Resources'
|
|
143
|
-
}
|
|
144
|
-
] : [],
|
|
145
|
-
...pluginOptions.mcp?.prompts && pluginOptions.mcp?.prompts.length > 0 ? [
|
|
146
|
-
{
|
|
147
|
-
type: 'collapsible',
|
|
148
|
-
admin: {
|
|
149
|
-
description: 'Manage client access to prompts',
|
|
150
|
-
position: 'sidebar'
|
|
151
|
-
},
|
|
152
|
-
fields: [
|
|
153
|
-
{
|
|
154
|
-
name: 'payload-mcp-prompt',
|
|
155
|
-
type: 'group',
|
|
156
|
-
fields: customPromptFields,
|
|
157
|
-
label: false
|
|
158
|
-
}
|
|
159
|
-
],
|
|
160
|
-
label: 'Prompts'
|
|
161
|
-
}
|
|
162
|
-
] : [],
|
|
163
|
-
// Experimental Tools
|
|
164
|
-
...process.env.NODE_ENV === 'development' && (experimentalTools?.collections?.enabled || experimentalTools?.jobs?.enabled || experimentalTools?.config?.enabled || experimentalTools?.auth?.enabled) ? [
|
|
165
|
-
{
|
|
166
|
-
type: 'collapsible',
|
|
167
|
-
admin: {
|
|
168
|
-
description: 'Manage client access to experimental tools',
|
|
169
|
-
position: 'sidebar'
|
|
170
|
-
},
|
|
171
|
-
fields: [
|
|
172
|
-
...experimentalTools?.collections?.enabled ? [
|
|
173
|
-
{
|
|
174
|
-
name: 'collections',
|
|
175
|
-
type: 'group',
|
|
176
|
-
fields: [
|
|
177
|
-
{
|
|
178
|
-
name: 'find',
|
|
179
|
-
type: 'checkbox',
|
|
180
|
-
admin: {
|
|
181
|
-
description: 'Allow LLMs to find and list Payload collections with optional content and document counts.'
|
|
182
|
-
},
|
|
183
|
-
defaultValue: false
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
name: 'create',
|
|
187
|
-
type: 'checkbox',
|
|
188
|
-
admin: {
|
|
189
|
-
description: 'Allow LLMs to create new Payload collections with specified fields and configuration.'
|
|
190
|
-
},
|
|
191
|
-
defaultValue: false
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
name: 'update',
|
|
195
|
-
type: 'checkbox',
|
|
196
|
-
admin: {
|
|
197
|
-
description: 'Allow LLMs to update existing Payload collections with new fields, modifications, or configuration changes.'
|
|
198
|
-
},
|
|
199
|
-
defaultValue: false
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
name: 'delete',
|
|
203
|
-
type: 'checkbox',
|
|
204
|
-
admin: {
|
|
205
|
-
description: 'Allow LLMs to delete Payload collections and optionally update the configuration.'
|
|
206
|
-
},
|
|
207
|
-
defaultValue: false
|
|
208
|
-
}
|
|
209
|
-
]
|
|
210
|
-
}
|
|
211
|
-
] : [],
|
|
212
|
-
...experimentalTools?.jobs?.enabled ? [
|
|
213
|
-
{
|
|
214
|
-
name: 'jobs',
|
|
215
|
-
type: 'group',
|
|
216
|
-
fields: [
|
|
217
|
-
{
|
|
218
|
-
name: 'create',
|
|
219
|
-
type: 'checkbox',
|
|
220
|
-
admin: {
|
|
221
|
-
description: 'Allow LLMs to create new Payload jobs (tasks and workflows) with custom schemas and configuration.'
|
|
222
|
-
},
|
|
223
|
-
defaultValue: false
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
name: 'run',
|
|
227
|
-
type: 'checkbox',
|
|
228
|
-
admin: {
|
|
229
|
-
description: 'Allow LLMs to execute Payload jobs with custom input data and queue options.'
|
|
230
|
-
},
|
|
231
|
-
defaultValue: false
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
name: 'update',
|
|
235
|
-
type: 'checkbox',
|
|
236
|
-
admin: {
|
|
237
|
-
description: 'Allow LLMs to update existing Payload jobs with new schemas, configuration, or handler code.'
|
|
238
|
-
},
|
|
239
|
-
defaultValue: false
|
|
240
|
-
}
|
|
241
|
-
]
|
|
242
|
-
}
|
|
243
|
-
] : [],
|
|
244
|
-
...experimentalTools?.config?.enabled ? [
|
|
245
|
-
{
|
|
246
|
-
name: 'config',
|
|
247
|
-
type: 'group',
|
|
248
|
-
fields: [
|
|
249
|
-
{
|
|
250
|
-
name: 'find',
|
|
251
|
-
type: 'checkbox',
|
|
252
|
-
admin: {
|
|
253
|
-
description: 'Allow LLMs to read and display a Payload configuration file.'
|
|
254
|
-
},
|
|
255
|
-
defaultValue: false
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
name: 'update',
|
|
259
|
-
type: 'checkbox',
|
|
260
|
-
admin: {
|
|
261
|
-
description: 'Allow LLMs to update a Payload configuration file with various modifications.'
|
|
262
|
-
},
|
|
263
|
-
defaultValue: false
|
|
264
|
-
}
|
|
265
|
-
]
|
|
266
|
-
}
|
|
267
|
-
] : [],
|
|
268
|
-
...experimentalTools?.auth?.enabled ? [
|
|
269
|
-
{
|
|
270
|
-
name: 'auth',
|
|
271
|
-
type: 'group',
|
|
272
|
-
fields: [
|
|
273
|
-
{
|
|
274
|
-
name: 'auth',
|
|
275
|
-
type: 'checkbox',
|
|
276
|
-
admin: {
|
|
277
|
-
description: 'Allow LLMs to check authentication status for a user by setting custom headers. (e.g. {"Authorization": "Bearer <token>"})'
|
|
278
|
-
},
|
|
279
|
-
defaultValue: false,
|
|
280
|
-
label: 'Check Auth Status'
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
name: 'login',
|
|
284
|
-
type: 'checkbox',
|
|
285
|
-
admin: {
|
|
286
|
-
description: 'Allow LLMs to authenticate a user with email and password.'
|
|
287
|
-
},
|
|
288
|
-
defaultValue: false,
|
|
289
|
-
label: 'User Login'
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
name: 'verify',
|
|
293
|
-
type: 'checkbox',
|
|
294
|
-
admin: {
|
|
295
|
-
description: 'Allow LLMs to verify a user email with a verification token.'
|
|
296
|
-
},
|
|
297
|
-
defaultValue: false,
|
|
298
|
-
label: 'Email Verification'
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
name: 'resetPassword',
|
|
302
|
-
type: 'checkbox',
|
|
303
|
-
admin: {
|
|
304
|
-
description: 'Allow LLMs to reset a user password with a reset token.'
|
|
305
|
-
},
|
|
306
|
-
defaultValue: false,
|
|
307
|
-
label: 'Reset Password'
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
name: 'forgotPassword',
|
|
311
|
-
type: 'checkbox',
|
|
312
|
-
admin: {
|
|
313
|
-
description: 'Allow LLMs to send a password reset email to a user.'
|
|
314
|
-
},
|
|
315
|
-
defaultValue: false,
|
|
316
|
-
label: 'Forgot Password'
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
name: 'unlock',
|
|
320
|
-
type: 'checkbox',
|
|
321
|
-
admin: {
|
|
322
|
-
description: 'Allow LLMs to unlock a user account that has been locked due to failed login attempts.'
|
|
323
|
-
},
|
|
324
|
-
defaultValue: false,
|
|
325
|
-
label: 'Unlock Account'
|
|
326
|
-
}
|
|
327
|
-
]
|
|
328
|
-
}
|
|
329
|
-
] : []
|
|
330
|
-
],
|
|
331
|
-
label: 'Experimental Tools'
|
|
332
|
-
}
|
|
333
|
-
] : []
|
|
334
|
-
],
|
|
335
|
-
labels: {
|
|
336
|
-
plural: 'API Keys',
|
|
337
|
-
singular: 'API Key'
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
//# sourceMappingURL=createApiKeysCollection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/collections/createApiKeysCollection.ts"],"sourcesContent":["import type { CollectionConfig, CollectionSlug, PayloadRequest, Where } from 'payload'\n\nimport type { MCPPluginConfig } from '../types.js'\n\nimport { toCamelCase } from '../utils/camelCase.js'\nimport { createApiKeyFields } from '../utils/createApiKeyFields.js'\n\nexport const createAPIKeysCollection = (\n collections: MCPPluginConfig['collections'],\n globals: MCPPluginConfig['globals'],\n customTools: Array<{ description: string; name: string }> = [],\n experimentalTools: NonNullable<MCPPluginConfig['experimental']>['tools'] = {},\n pluginOptions: MCPPluginConfig,\n): CollectionConfig => {\n const customToolsFields = customTools.map((tool) => {\n const camelCasedName = toCamelCase(tool.name)\n return {\n name: camelCasedName,\n type: 'checkbox' as const,\n admin: {\n description: tool.description,\n },\n defaultValue: true,\n label: camelCasedName,\n }\n })\n\n const customResourceFields =\n pluginOptions.mcp?.resources?.map((resource) => {\n const camelCasedName = toCamelCase(resource.name)\n return {\n name: camelCasedName,\n type: 'checkbox' as const,\n admin: {\n description: resource.description,\n },\n defaultValue: true,\n label: camelCasedName,\n }\n }) || []\n\n const customPromptFields =\n pluginOptions.mcp?.prompts?.map((prompt) => {\n const camelCasedName = toCamelCase(prompt.name)\n return {\n name: camelCasedName,\n type: 'checkbox' as const,\n admin: {\n description: prompt.description,\n },\n defaultValue: true,\n label: camelCasedName,\n }\n }) || []\n\n const userCollection = pluginOptions.userCollection\n\n const isAuthenticated = ({ req }: { req: PayloadRequest }): boolean =>\n Boolean(req.user && req.user.collection === userCollection)\n\n const restrictToOwnKeys = ({ req }: { req: PayloadRequest }): boolean | Where =>\n req.user && req.user.collection === userCollection ? { user: { equals: req.user.id } } : false\n\n return {\n slug: 'payload-mcp-api-keys',\n access: {\n // Fail-safe default: any authenticated user may manage only their OWN keys.\n // Cross-user key issuance is disabled by default (see the `user` field below)\n // and must be granted explicitly via `overrideApiKeyCollection`.\n create: isAuthenticated,\n delete: restrictToOwnKeys,\n read: restrictToOwnKeys,\n unlock: restrictToOwnKeys,\n update: restrictToOwnKeys,\n },\n admin: {\n description:\n 'API keys control which collections, resources, tools, and prompts MCP clients can access',\n group: 'MCP',\n useAsTitle: 'label',\n },\n auth: {\n disableLocalStrategy: true,\n useAPIKey: true,\n },\n fields: [\n {\n name: 'user',\n type: 'relationship',\n access: {\n // Bind new keys to the creating user and prevent re-binding on update.\n // A key acts as its associated user, so allowing arbitrary assignment lets\n // any key manager impersonate anyone. Grant these via `overrideApiKeyCollection`\n // to let trusted administrators issue keys on behalf of other users.\n create: () => false,\n update: () => false,\n },\n admin: {\n description: 'The user that the API key is associated with.',\n },\n defaultValue: ({ req }: { req: PayloadRequest }) =>\n req.user && req.user.collection === userCollection ? req.user.id : undefined,\n relationTo: userCollection as CollectionSlug,\n required: true,\n },\n {\n name: 'label',\n type: 'text',\n admin: {\n description: 'A useful label for the API key.',\n },\n },\n {\n name: 'description',\n type: 'text',\n admin: {\n description: 'The purpose of the API key.',\n },\n },\n\n ...createApiKeyFields({\n config: collections,\n configType: 'collection',\n }),\n\n ...createApiKeyFields({\n config: globals,\n configType: 'global',\n }),\n\n ...(customTools.length > 0\n ? [\n {\n type: 'collapsible' as const,\n admin: {\n description: 'Manage client access to tools',\n position: 'sidebar' as const,\n },\n fields: [\n {\n name: 'payload-mcp-tool',\n type: 'group' as const,\n fields: customToolsFields,\n label: false as const,\n },\n ],\n label: 'Tools',\n },\n ]\n : []),\n\n ...(pluginOptions.mcp?.resources && pluginOptions.mcp?.resources.length > 0\n ? [\n {\n type: 'collapsible' as const,\n admin: {\n description: 'Manage client access to resources',\n position: 'sidebar' as const,\n },\n fields: [\n {\n name: 'payload-mcp-resource',\n type: 'group' as const,\n fields: customResourceFields,\n label: false as const,\n },\n ],\n label: 'Resources',\n },\n ]\n : []),\n\n ...(pluginOptions.mcp?.prompts && pluginOptions.mcp?.prompts.length > 0\n ? [\n {\n type: 'collapsible' as const,\n admin: {\n description: 'Manage client access to prompts',\n position: 'sidebar' as const,\n },\n fields: [\n {\n name: 'payload-mcp-prompt',\n type: 'group' as const,\n fields: customPromptFields,\n label: false as const,\n },\n ],\n label: 'Prompts',\n },\n ]\n : []),\n\n // Experimental Tools\n ...(process.env.NODE_ENV === 'development' &&\n (experimentalTools?.collections?.enabled ||\n experimentalTools?.jobs?.enabled ||\n experimentalTools?.config?.enabled ||\n experimentalTools?.auth?.enabled)\n ? [\n {\n type: 'collapsible' as const,\n admin: {\n description: 'Manage client access to experimental tools',\n position: 'sidebar' as const,\n },\n fields: [\n ...(experimentalTools?.collections?.enabled\n ? [\n {\n name: 'collections',\n type: 'group' as const,\n fields: [\n {\n name: 'find',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to find and list Payload collections with optional content and document counts.',\n },\n defaultValue: false,\n },\n {\n name: 'create',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to create new Payload collections with specified fields and configuration.',\n },\n defaultValue: false,\n },\n {\n name: 'update',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to update existing Payload collections with new fields, modifications, or configuration changes.',\n },\n defaultValue: false,\n },\n {\n name: 'delete',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to delete Payload collections and optionally update the configuration.',\n },\n defaultValue: false,\n },\n ],\n },\n ]\n : []),\n ...(experimentalTools?.jobs?.enabled\n ? [\n {\n name: 'jobs',\n type: 'group' as const,\n fields: [\n {\n name: 'create',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to create new Payload jobs (tasks and workflows) with custom schemas and configuration.',\n },\n defaultValue: false,\n },\n {\n name: 'run',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to execute Payload jobs with custom input data and queue options.',\n },\n defaultValue: false,\n },\n {\n name: 'update',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to update existing Payload jobs with new schemas, configuration, or handler code.',\n },\n defaultValue: false,\n },\n ],\n },\n ]\n : []),\n ...(experimentalTools?.config?.enabled\n ? [\n {\n name: 'config',\n type: 'group' as const,\n fields: [\n {\n name: 'find',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to read and display a Payload configuration file.',\n },\n defaultValue: false,\n },\n {\n name: 'update',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to update a Payload configuration file with various modifications.',\n },\n defaultValue: false,\n },\n ],\n },\n ]\n : []),\n ...(experimentalTools?.auth?.enabled\n ? [\n {\n name: 'auth',\n type: 'group' as const,\n fields: [\n {\n name: 'auth',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to check authentication status for a user by setting custom headers. (e.g. {\"Authorization\": \"Bearer <token>\"})',\n },\n defaultValue: false,\n label: 'Check Auth Status',\n },\n {\n name: 'login',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to authenticate a user with email and password.',\n },\n defaultValue: false,\n label: 'User Login',\n },\n {\n name: 'verify',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to verify a user email with a verification token.',\n },\n defaultValue: false,\n label: 'Email Verification',\n },\n {\n name: 'resetPassword',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to reset a user password with a reset token.',\n },\n defaultValue: false,\n label: 'Reset Password',\n },\n {\n name: 'forgotPassword',\n type: 'checkbox' as const,\n admin: {\n description: 'Allow LLMs to send a password reset email to a user.',\n },\n defaultValue: false,\n label: 'Forgot Password',\n },\n {\n name: 'unlock',\n type: 'checkbox' as const,\n admin: {\n description:\n 'Allow LLMs to unlock a user account that has been locked due to failed login attempts.',\n },\n defaultValue: false,\n label: 'Unlock Account',\n },\n ],\n },\n ]\n : []),\n ],\n label: 'Experimental Tools',\n },\n ]\n : []),\n ],\n labels: {\n plural: 'API Keys',\n singular: 'API Key',\n },\n }\n}\n"],"names":["toCamelCase","createApiKeyFields","createAPIKeysCollection","collections","globals","customTools","experimentalTools","pluginOptions","customToolsFields","map","tool","camelCasedName","name","type","admin","description","defaultValue","label","customResourceFields","mcp","resources","resource","customPromptFields","prompts","prompt","userCollection","isAuthenticated","req","Boolean","user","collection","restrictToOwnKeys","equals","id","slug","access","create","delete","read","unlock","update","group","useAsTitle","auth","disableLocalStrategy","useAPIKey","fields","undefined","relationTo","required","config","configType","length","position","process","env","NODE_ENV","enabled","jobs","labels","plural","singular"],"mappings":"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NC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;oCAChB;oCACA;wCACEJ,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;oCAChB;iCACD;4BACH;yBACD,GACD,EAAE;2BACFV,mBAAmBqC,MAAMc,UACzB;4BACE;gCACE7C,MAAM;gCACNC,MAAM;gCACNiC,QAAQ;oCACN;wCACElC,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;wCACdC,OAAO;oCACT;oCACA;wCACEL,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;wCACdC,OAAO;oCACT;oCACA;wCACEL,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;wCACdC,OAAO;oCACT;oCACA;wCACEL,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;wCACdC,OAAO;oCACT;oCACA;wCACEL,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aAAa;wCACf;wCACAC,cAAc;wCACdC,OAAO;oCACT;oCACA;wCACEL,MAAM;wCACNC,MAAM;wCACNC,OAAO;4CACLC,aACE;wCACJ;wCACAC,cAAc;wCACdC,OAAO;oCACT;iCACD;4BACH;yBACD,GACD,EAAE;qBACP;oBACDA,OAAO;gBACT;aACD,GACD,EAAE;SACP;QACD0C,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;IACF;AACF,EAAC"}
|
package/dist/defaults.d.ts
DELETED
package/dist/defaults.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;CAEpB,CAAA"}
|
package/dist/defaults.js
DELETED
package/dist/defaults.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.ts"],"sourcesContent":["export const defaults = {\n userCollection: 'users',\n}\n"],"names":["defaults","userCollection"],"mappings":"AAAA,OAAO,MAAMA,WAAW;IACtBC,gBAAgB;AAClB,EAAC"}
|
package/dist/endpoints/mcp.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/endpoints/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAOlD,eAAO,MAAM,oBAAoB,kBAAmB,eAAe,mBAgBlE,CAAA"}
|
package/dist/endpoints/mcp.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { createRequestFromPayloadRequest } from '../mcp/createRequest.js';
|
|
2
|
-
import { getMcpHandler } from '../mcp/getMcpHandler.js';
|
|
3
|
-
import { resolveAccessSettings } from './resolveAccessSettings.js';
|
|
4
|
-
import { withRestoredWebGlobals } from './withRestoredWebGlobals.js';
|
|
5
|
-
export const initializeMCPHandler = (pluginOptions)=>{
|
|
6
|
-
const mcpHandler = async (req)=>{
|
|
7
|
-
const useVerboseLogs = pluginOptions.mcp?.handlerOptions?.verboseLogs ?? false;
|
|
8
|
-
req.payloadAPI = 'MCP';
|
|
9
|
-
const mcpAccessSettings = await resolveAccessSettings({
|
|
10
|
-
pluginOptions,
|
|
11
|
-
req,
|
|
12
|
-
useVerboseLogs
|
|
13
|
-
});
|
|
14
|
-
req.user = mcpAccessSettings.user;
|
|
15
|
-
return await withRestoredWebGlobals(async ()=>{
|
|
16
|
-
const handler = getMcpHandler(pluginOptions, mcpAccessSettings, req);
|
|
17
|
-
const request = createRequestFromPayloadRequest(req);
|
|
18
|
-
return await handler(request);
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
return mcpHandler;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=mcp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/endpoints/mcp.ts"],"sourcesContent":["import type { PayloadHandler } from 'payload'\n\nimport type { MCPPluginConfig } from '../types.js'\n\nimport { createRequestFromPayloadRequest } from '../mcp/createRequest.js'\nimport { getMcpHandler } from '../mcp/getMcpHandler.js'\nimport { resolveAccessSettings } from './resolveAccessSettings.js'\nimport { withRestoredWebGlobals } from './withRestoredWebGlobals.js'\n\nexport const initializeMCPHandler = (pluginOptions: MCPPluginConfig) => {\n const mcpHandler: PayloadHandler = async (req) => {\n const useVerboseLogs = pluginOptions.mcp?.handlerOptions?.verboseLogs ?? false\n\n req.payloadAPI = 'MCP' as const\n\n const mcpAccessSettings = await resolveAccessSettings({ pluginOptions, req, useVerboseLogs })\n req.user = mcpAccessSettings.user\n\n return await withRestoredWebGlobals(async () => {\n const handler = getMcpHandler(pluginOptions, mcpAccessSettings, req)\n const request = createRequestFromPayloadRequest(req)\n return await handler(request)\n })\n }\n return mcpHandler\n}\n"],"names":["createRequestFromPayloadRequest","getMcpHandler","resolveAccessSettings","withRestoredWebGlobals","initializeMCPHandler","pluginOptions","mcpHandler","req","useVerboseLogs","mcp","handlerOptions","verboseLogs","payloadAPI","mcpAccessSettings","user","handler","request"],"mappings":"AAIA,SAASA,+BAA+B,QAAQ,0BAAyB;AACzE,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,qBAAqB,QAAQ,6BAA4B;AAClE,SAASC,sBAAsB,QAAQ,8BAA6B;AAEpE,OAAO,MAAMC,uBAAuB,CAACC;IACnC,MAAMC,aAA6B,OAAOC;QACxC,MAAMC,iBAAiBH,cAAcI,GAAG,EAAEC,gBAAgBC,eAAe;QAEzEJ,IAAIK,UAAU,GAAG;QAEjB,MAAMC,oBAAoB,MAAMX,sBAAsB;YAAEG;YAAeE;YAAKC;QAAe;QAC3FD,IAAIO,IAAI,GAAGD,kBAAkBC,IAAI;QAEjC,OAAO,MAAMX,uBAAuB;YAClC,MAAMY,UAAUd,cAAcI,eAAeQ,mBAAmBN;YAChE,MAAMS,UAAUhB,gCAAgCO;YAChD,OAAO,MAAMQ,QAAQC;QACvB;IACF;IACA,OAAOV;AACT,EAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type PayloadRequest } from 'payload';
|
|
2
|
-
import type { MCPAccessSettings, MCPPluginConfig } from '../types.js';
|
|
3
|
-
type ResolveAccessSettingsArgs = {
|
|
4
|
-
pluginOptions: MCPPluginConfig;
|
|
5
|
-
req: PayloadRequest;
|
|
6
|
-
useVerboseLogs: boolean;
|
|
7
|
-
};
|
|
8
|
-
export declare const resolveAccessSettings: (args: ResolveAccessSettingsArgs) => Promise<MCPAccessSettings>;
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=resolveAccessSettings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAccessSettings.d.ts","sourceRoot":"","sources":["../../src/endpoints/resolveAccessSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAiD,MAAM,SAAS,CAAA;AAE5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAErE,KAAK,yBAAyB,GAAG;IAC/B,aAAa,EAAE,eAAe,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAwDD,eAAO,MAAM,qBAAqB,SAC1B,yBAAyB,KAC9B,OAAO,CAAC,iBAAiB,CAM3B,CAAA"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import crypto from 'crypto';
|
|
2
|
-
import { UnauthorizedError } from 'payload';
|
|
3
|
-
const createDefaultAccessSettingsResolver = ({ pluginOptions, req, useVerboseLogs })=>{
|
|
4
|
-
return async (overrideApiKey)=>{
|
|
5
|
-
const authorization = req.headers.get('Authorization');
|
|
6
|
-
const apiKey = overrideApiKey ?? (authorization?.startsWith('Bearer ') ? authorization.replace('Bearer ', '').trim() : null);
|
|
7
|
-
if (apiKey === null) {
|
|
8
|
-
throw new UnauthorizedError();
|
|
9
|
-
}
|
|
10
|
-
const sha256APIKeyIndex = crypto.createHmac('sha256', req.payload.secret).update(apiKey || '').digest('hex');
|
|
11
|
-
const where = {
|
|
12
|
-
apiKeyIndex: {
|
|
13
|
-
equals: sha256APIKeyIndex
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
const { docs } = await req.payload.find({
|
|
17
|
-
collection: 'payload-mcp-api-keys',
|
|
18
|
-
depth: 1,
|
|
19
|
-
limit: 1,
|
|
20
|
-
pagination: false,
|
|
21
|
-
where
|
|
22
|
-
});
|
|
23
|
-
const apiKeyDoc = docs[0];
|
|
24
|
-
if (!apiKeyDoc) {
|
|
25
|
-
throw new UnauthorizedError();
|
|
26
|
-
}
|
|
27
|
-
if (useVerboseLogs) {
|
|
28
|
-
req.payload.logger.info('[payload-mcp] API Key is valid');
|
|
29
|
-
}
|
|
30
|
-
const user = apiKeyDoc.user;
|
|
31
|
-
if (!user || typeof user !== 'object' || !('id' in user)) {
|
|
32
|
-
throw new UnauthorizedError();
|
|
33
|
-
}
|
|
34
|
-
user.collection = pluginOptions.userCollection;
|
|
35
|
-
user._strategy = 'mcp-api-key';
|
|
36
|
-
return apiKeyDoc;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
export const resolveAccessSettings = async (args)=>{
|
|
40
|
-
const getDefaultMcpAccessSettings = createDefaultAccessSettingsResolver(args);
|
|
41
|
-
return args.pluginOptions.overrideAuth ? await args.pluginOptions.overrideAuth(args.req, getDefaultMcpAccessSettings) : await getDefaultMcpAccessSettings();
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
//# sourceMappingURL=resolveAccessSettings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/endpoints/resolveAccessSettings.ts"],"sourcesContent":["import crypto from 'crypto'\nimport { type PayloadRequest, type TypedUser, UnauthorizedError, type Where } from 'payload'\n\nimport type { MCPAccessSettings, MCPPluginConfig } from '../types.js'\n\ntype ResolveAccessSettingsArgs = {\n pluginOptions: MCPPluginConfig\n req: PayloadRequest\n useVerboseLogs: boolean\n}\n\nconst createDefaultAccessSettingsResolver = ({\n pluginOptions,\n req,\n useVerboseLogs,\n}: ResolveAccessSettingsArgs) => {\n return async (overrideApiKey?: null | string): Promise<MCPAccessSettings> => {\n const authorization = req.headers.get('Authorization')\n const apiKey =\n overrideApiKey ??\n (authorization?.startsWith('Bearer ') ? authorization.replace('Bearer ', '').trim() : null)\n\n if (apiKey === null) {\n throw new UnauthorizedError()\n }\n\n const sha256APIKeyIndex = crypto\n .createHmac('sha256', req.payload.secret)\n .update(apiKey || '')\n .digest('hex')\n const where: Where = {\n apiKeyIndex: {\n equals: sha256APIKeyIndex,\n },\n }\n const { docs } = await req.payload.find({\n collection: 'payload-mcp-api-keys',\n depth: 1,\n limit: 1,\n pagination: false,\n where,\n })\n const apiKeyDoc = docs[0]\n\n if (!apiKeyDoc) {\n throw new UnauthorizedError()\n }\n\n if (useVerboseLogs) {\n req.payload.logger.info('[payload-mcp] API Key is valid')\n }\n\n const user = apiKeyDoc.user as TypedUser\n\n if (!user || typeof user !== 'object' || !('id' in user)) {\n throw new UnauthorizedError()\n }\n\n user.collection = pluginOptions.userCollection as string\n user._strategy = 'mcp-api-key' as const\n\n return apiKeyDoc as unknown as MCPAccessSettings\n }\n}\n\nexport const resolveAccessSettings = async (\n args: ResolveAccessSettingsArgs,\n): Promise<MCPAccessSettings> => {\n const getDefaultMcpAccessSettings = createDefaultAccessSettingsResolver(args)\n\n return args.pluginOptions.overrideAuth\n ? await args.pluginOptions.overrideAuth(args.req, getDefaultMcpAccessSettings)\n : await getDefaultMcpAccessSettings()\n}\n"],"names":["crypto","UnauthorizedError","createDefaultAccessSettingsResolver","pluginOptions","req","useVerboseLogs","overrideApiKey","authorization","headers","get","apiKey","startsWith","replace","trim","sha256APIKeyIndex","createHmac","payload","secret","update","digest","where","apiKeyIndex","equals","docs","find","collection","depth","limit","pagination","apiKeyDoc","logger","info","user","userCollection","_strategy","resolveAccessSettings","args","getDefaultMcpAccessSettings","overrideAuth"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAC3B,SAA8CC,iBAAiB,QAAoB,UAAS;AAU5F,MAAMC,sCAAsC,CAAC,EAC3CC,aAAa,EACbC,GAAG,EACHC,cAAc,EACY;IAC1B,OAAO,OAAOC;QACZ,MAAMC,gBAAgBH,IAAII,OAAO,CAACC,GAAG,CAAC;QACtC,MAAMC,SACJJ,kBACCC,CAAAA,eAAeI,WAAW,aAAaJ,cAAcK,OAAO,CAAC,WAAW,IAAIC,IAAI,KAAK,IAAG;QAE3F,IAAIH,WAAW,MAAM;YACnB,MAAM,IAAIT;QACZ;QAEA,MAAMa,oBAAoBd,OACvBe,UAAU,CAAC,UAAUX,IAAIY,OAAO,CAACC,MAAM,EACvCC,MAAM,CAACR,UAAU,IACjBS,MAAM,CAAC;QACV,MAAMC,QAAe;YACnBC,aAAa;gBACXC,QAAQR;YACV;QACF;QACA,MAAM,EAAES,IAAI,EAAE,GAAG,MAAMnB,IAAIY,OAAO,CAACQ,IAAI,CAAC;YACtCC,YAAY;YACZC,OAAO;YACPC,OAAO;YACPC,YAAY;YACZR;QACF;QACA,MAAMS,YAAYN,IAAI,CAAC,EAAE;QAEzB,IAAI,CAACM,WAAW;YACd,MAAM,IAAI5B;QACZ;QAEA,IAAII,gBAAgB;YAClBD,IAAIY,OAAO,CAACc,MAAM,CAACC,IAAI,CAAC;QAC1B;QAEA,MAAMC,OAAOH,UAAUG,IAAI;QAE3B,IAAI,CAACA,QAAQ,OAAOA,SAAS,YAAY,CAAE,CAAA,QAAQA,IAAG,GAAI;YACxD,MAAM,IAAI/B;QACZ;QAEA+B,KAAKP,UAAU,GAAGtB,cAAc8B,cAAc;QAC9CD,KAAKE,SAAS,GAAG;QAEjB,OAAOL;IACT;AACF;AAEA,OAAO,MAAMM,wBAAwB,OACnCC;IAEA,MAAMC,8BAA8BnC,oCAAoCkC;IAExE,OAAOA,KAAKjC,aAAa,CAACmC,YAAY,GAClC,MAAMF,KAAKjC,aAAa,CAACmC,YAAY,CAACF,KAAKhC,GAAG,EAAEiC,+BAChD,MAAMA;AACZ,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withRestoredWebGlobals.d.ts","sourceRoot":"","sources":["../../src/endpoints/withRestoredWebGlobals.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAU,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAepF,CAAA"}
|