@payloadcms/plugin-mcp 3.86.0-internal.ac46214 → 4.0.0-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin.js +39 -0
- package/dist/collection/getAccessField.d.ts +12 -0
- package/dist/collection/getAccessField.d.ts.map +1 -0
- package/dist/collection/getAccessField.js +57 -0
- package/dist/collection/getAccessField.js.map +1 -0
- package/dist/collection/index.d.ts +6 -0
- package/dist/collection/index.d.ts.map +1 -0
- package/dist/collection/index.js +60 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/components/AccessField/index.client.d.ts +10 -0
- package/dist/components/AccessField/index.client.d.ts.map +1 -0
- package/dist/components/AccessField/index.client.js +305 -0
- package/dist/components/AccessField/index.client.js.map +1 -0
- package/dist/components/AccessField/index.css +93 -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 +10 -0
- package/dist/endpoint/access.d.ts.map +1 -0
- package/dist/endpoint/access.js +106 -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 +36 -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/index.d.ts +4 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -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 +199 -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 +250 -0
- package/dist/mcp/builtin/collections/authTools.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 +94 -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 +102 -0
- package/dist/mcp/builtin/collections/deleteTool.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 +144 -0
- package/dist/mcp/builtin/collections/findTool.js.map +1 -0
- package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
- package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
- package/dist/mcp/builtin/collections/formatCollectionError.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 +35 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.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 +199 -0
- package/dist/mcp/builtin/collections/updateTool.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 +49 -0
- package/dist/mcp/builtin/getConfigInfoTool.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 +76 -0
- package/dist/mcp/builtin/globals/findTool.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 +35 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.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 +94 -0
- package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
- package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
- package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
- package/dist/mcp/builtin/validateEntityData.js +82 -0
- package/dist/mcp/builtin/validateEntityData.js.map +1 -0
- package/dist/mcp/builtinTools.d.ts +105 -0
- package/dist/mcp/builtinTools.d.ts.map +1 -0
- package/dist/mcp/builtinTools.js +107 -0
- package/dist/mcp/builtinTools.js.map +1 -0
- package/dist/mcp/sanitizeMCPConfig.d.ts +17 -0
- package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
- package/dist/mcp/sanitizeMCPConfig.js +188 -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 +89 -0
- package/dist/stdio.js.map +1 -0
- package/dist/types.d.ts +251 -455
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/camelCase.d.ts.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/localAPIDefaults.d.ts +20 -0
- package/dist/utils/localAPIDefaults.d.ts.map +1 -0
- package/dist/utils/localAPIDefaults.js +19 -0
- package/dist/utils/localAPIDefaults.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/schemaConversion/getEntityInputSchema.d.ts +11 -0
- package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
- package/dist/utils/schemaConversion/getEntityInputSchema.js +34 -0
- package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +2 -2
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +1 -1
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +1 -1
- package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
- package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
- package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
- package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
- package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
- package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.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/dist/utils/whereSchema.d.ts +9 -0
- package/dist/utils/whereSchema.d.ts.map +1 -0
- package/dist/utils/whereSchema.js +13 -0
- package/dist/utils/whereSchema.js.map +1 -0
- package/package.json +35 -10
- package/src/collection/getAccessField.ts +64 -0
- package/src/collection/index.ts +64 -0
- package/src/components/AccessField/index.client.tsx +347 -0
- package/src/components/AccessField/index.css +93 -0
- package/src/defineTool.ts +44 -0
- package/src/endpoint/access.ts +132 -0
- package/src/endpoint/index.ts +35 -0
- package/src/exports/client.ts +2 -0
- package/src/index.ts +35 -85
- package/src/mcp/buildMcpServer.ts +257 -0
- package/src/mcp/builtin/collections/authTools.ts +233 -0
- package/src/mcp/builtin/collections/createTool.ts +112 -0
- package/src/mcp/builtin/collections/deleteTool.ts +116 -0
- package/src/mcp/builtin/collections/findTool.ts +177 -0
- package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
- package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +28 -0
- package/src/mcp/builtin/collections/updateTool.ts +211 -0
- package/src/mcp/builtin/getConfigInfoTool.ts +44 -0
- package/src/mcp/builtin/globals/findTool.ts +96 -0
- package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +28 -0
- package/src/mcp/builtin/globals/updateTool.ts +115 -0
- package/src/mcp/builtin/validateEntityData.ts +132 -0
- package/src/mcp/builtinTools.ts +98 -0
- package/src/mcp/sanitizeMCPConfig.ts +260 -0
- package/src/stdio.ts +98 -0
- package/src/types.ts +290 -490
- package/src/utils/getLogger.ts +22 -0
- package/src/utils/getPluginConfig.ts +24 -0
- package/src/utils/localAPIDefaults.ts +22 -0
- package/src/utils/resolveProjectRoot.ts +17 -0
- package/src/utils/schemaConversion/getEntityInputSchema.ts +78 -0
- package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +3 -3
- package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
- package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
- package/src/utils/toStandardSchema.ts +9 -0
- package/src/utils/whereSchema.ts +24 -0
- package/dist/collections/createApiKeysCollection.d.ts +0 -7
- package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
- package/dist/collections/createApiKeysCollection.js +0 -317
- 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 -71
- package/dist/endpoints/mcp.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 -57
- package/dist/mcp/tools/auth/auth.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 -48
- 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 -51
- 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 -48
- 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 -82
- 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 -124
- 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 -129
- 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 -256
- package/dist/mcp/tools/resource/update.js.map +0 -1
- package/dist/mcp/tools/schemas.d.ts +0 -457
- package/dist/mcp/tools/schemas.d.ts.map +0 -1
- package/dist/mcp/tools/schemas.js +0 -243
- 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/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/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/src/collections/createApiKeysCollection.ts +0 -373
- package/src/defaults.ts +0 -3
- package/src/endpoints/mcp.ts +0 -91
- package/src/mcp/createRequest.ts +0 -13
- package/src/mcp/getMcpHandler.ts +0 -545
- 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.ts +0 -71
- package/src/mcp/tools/auth/forgotPassword.ts +0 -70
- package/src/mcp/tools/auth/login.ts +0 -72
- package/src/mcp/tools/auth/resetPassword.ts +0 -61
- package/src/mcp/tools/auth/unlock.ts +0 -64
- 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 -128
- package/src/mcp/tools/global/update.ts +0 -207
- package/src/mcp/tools/job/create.ts +0 -416
- package/src/mcp/tools/job/run.ts +0 -167
- 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 -383
- package/src/mcp/tools/schemas.ts +0 -520
- package/src/utils/adminEntitySettings.ts +0 -40
- package/src/utils/createApiKeyFields.ts +0 -72
- package/src/utils/getEnabledSlugs.ts +0 -42
- package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
- package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
- package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
- package/src/utils/schemaConversion/transformPointFields.ts +0 -55
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { JSONSchema4 } from 'json-schema'
|
|
2
|
-
|
|
3
|
-
import { jsonSchemaToZod } from 'json-schema-to-zod'
|
|
4
|
-
import * as ts from 'typescript'
|
|
5
|
-
import { z } from 'zod'
|
|
6
|
-
|
|
7
|
-
import { sanitizeJsonSchema } from './sanitizeJsonSchema.js'
|
|
8
|
-
import { simplifyRelationshipFields } from './simplifyRelationshipFields.js'
|
|
9
|
-
import { transformPointFieldsForMCP } from './transformPointFields.js'
|
|
10
|
-
|
|
11
|
-
export const convertCollectionSchemaToZod = (schema: JSONSchema4) => {
|
|
12
|
-
try {
|
|
13
|
-
// Clone to avoid mutating the original schema (used elsewhere for tool listing)
|
|
14
|
-
const schemaClone = JSON.parse(JSON.stringify(schema)) as JSONSchema4
|
|
15
|
-
|
|
16
|
-
const sanitized = sanitizeJsonSchema(schemaClone)
|
|
17
|
-
const pointTransformed = transformPointFieldsForMCP(sanitized)
|
|
18
|
-
const zodSchemaAsString = jsonSchemaToZod(simplifyRelationshipFields(pointTransformed))
|
|
19
|
-
|
|
20
|
-
// Transpile TypeScript to JavaScript
|
|
21
|
-
const transpileResult = ts.transpileModule(zodSchemaAsString, {
|
|
22
|
-
compilerOptions: {
|
|
23
|
-
module: ts.ModuleKind.CommonJS,
|
|
24
|
-
removeComments: true,
|
|
25
|
-
strict: false,
|
|
26
|
-
target: ts.ScriptTarget.ES2018,
|
|
27
|
-
},
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* This Function evaluation is safe because:
|
|
32
|
-
* 1. The input schema comes from Payload's collection configuration, which is controlled by the application developer
|
|
33
|
-
* 2. The jsonSchemaToZod library converts JSON Schema to Zod schema definitions, producing only type validation code
|
|
34
|
-
* 3. The transpiled output contains only Zod schema definitions (z.string(), z.number(), etc.) - no executable logic
|
|
35
|
-
* 4. The resulting Zod schema is used only for parameter validation in MCP tools, not for data processing
|
|
36
|
-
* 5. No user input or external data is involved in the schema generation process
|
|
37
|
-
*/
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
39
|
-
return new Function('z', `return ${transpileResult.outputText}`)(z)
|
|
40
|
-
} catch (error) {
|
|
41
|
-
// If schema conversion fails (e.g., due to Zod v4 toJSONSchema null-check bug
|
|
42
|
-
// with record schemas that have undefined valueType, or bundler transforms
|
|
43
|
-
// stripping Zod internals), return a permissive schema so tools/list doesn't
|
|
44
|
-
// crash entirely. The tool will still be listed but without strict validation.
|
|
45
|
-
// See: https://github.com/colinhacks/zod/issues/5821
|
|
46
|
-
console.warn(
|
|
47
|
-
`[plugin-mcp] Schema conversion failed, using permissive fallback:`,
|
|
48
|
-
error instanceof Error ? error.message : error,
|
|
49
|
-
)
|
|
50
|
-
return z.record(z.any())
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { JSONSchema4 } from 'json-schema'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Removes internal Payload properties (id, createdAt, updatedAt) from a
|
|
5
|
-
* JSON Schema so they don't appear in the generated Zod validation schema.
|
|
6
|
-
* Also strips `id` from the `required` array when present.
|
|
7
|
-
*
|
|
8
|
-
* Additionally normalizes nullable type arrays (e.g. `['array', 'null']` →
|
|
9
|
-
* `'array'`) throughout the schema tree. Without this, `json-schema-to-zod`
|
|
10
|
-
* emits a Zod union which the MCP SDK serialises back as `anyOf`, stripping
|
|
11
|
-
* the concrete `type` from the output and breaking schema introspection.
|
|
12
|
-
*/
|
|
13
|
-
export function sanitizeJsonSchema(schema: JSONSchema4): JSONSchema4 {
|
|
14
|
-
delete schema?.properties?.id
|
|
15
|
-
delete schema?.properties?.createdAt
|
|
16
|
-
delete schema?.properties?.updatedAt
|
|
17
|
-
|
|
18
|
-
if (Array.isArray(schema.required)) {
|
|
19
|
-
schema.required = schema.required.filter((field) => field !== 'id')
|
|
20
|
-
if (schema.required.length === 0) {
|
|
21
|
-
delete schema.required
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (schema.properties && typeof schema.properties === 'object') {
|
|
26
|
-
for (const key of Object.keys(schema.properties)) {
|
|
27
|
-
const prop = schema.properties[key] as JSONSchema4
|
|
28
|
-
if (!prop || typeof prop !== 'object') {
|
|
29
|
-
continue
|
|
30
|
-
}
|
|
31
|
-
normalizeNullableType(prop)
|
|
32
|
-
if (prop.properties) {
|
|
33
|
-
sanitizeJsonSchema(prop)
|
|
34
|
-
}
|
|
35
|
-
if (prop.items && typeof prop.items === 'object' && !Array.isArray(prop.items)) {
|
|
36
|
-
sanitizeJsonSchema(prop.items)
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return schema
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Strips `'null'` from a `type` array only when the remaining type is a
|
|
46
|
-
* complex structural type (`array` or `object`).
|
|
47
|
-
*
|
|
48
|
-
* Simple scalar types (`string`, `number`, `boolean`) are intentionally
|
|
49
|
-
* preserved as `['string', 'null']` so that the MCP SDK serialises them as a
|
|
50
|
-
* compact inline `type` array. Complex types however cause `zodToJsonSchema`
|
|
51
|
-
* to emit `anyOf: [{ type: 'array', items: ... }, { type: 'null' }]`, which
|
|
52
|
-
* has no top-level `type` property and breaks schema introspection by clients.
|
|
53
|
-
*/
|
|
54
|
-
function normalizeNullableType(schema: JSONSchema4): void {
|
|
55
|
-
if (!Array.isArray(schema.type)) {
|
|
56
|
-
return
|
|
57
|
-
}
|
|
58
|
-
const nonNullTypes = schema.type.filter((t) => t !== 'null')
|
|
59
|
-
if (nonNullTypes.length === 1 && (nonNullTypes[0] === 'array' || nonNullTypes[0] === 'object')) {
|
|
60
|
-
schema.type = nonNullTypes[0]
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import type { JSONSchema4 } from 'json-schema'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Recursively processes JSON schema properties to simplify relationship fields
|
|
5
|
-
* and convert `oneOf` constructs into MCP-friendly schemas.
|
|
6
|
-
*
|
|
7
|
-
* For create/update validation we only need to accept IDs (string/number),
|
|
8
|
-
* not populated objects. `$ref` options pointing to full entity definitions
|
|
9
|
-
* are removed entirely from `oneOf` unions. When a single option remains the
|
|
10
|
-
* `oneOf` is unwrapped; otherwise it is converted to `anyOf`.
|
|
11
|
-
*
|
|
12
|
-
* This matters because `json-schema-to-zod` converts `oneOf` into a strict
|
|
13
|
-
* `z.any().superRefine(...)` validator whose base type is `z.any()`, causing
|
|
14
|
-
* `zodToJsonSchema` to emit `{}` and losing all type information in the MCP
|
|
15
|
-
* tool input schema. `anyOf` instead produces a clean `z.union([...])`.
|
|
16
|
-
*
|
|
17
|
-
* NOTE: This function must operate on a cloned schema to avoid mutating
|
|
18
|
-
* the original JSON schema used for tool listing.
|
|
19
|
-
*/
|
|
20
|
-
export function simplifyRelationshipFields(schema: JSONSchema4): JSONSchema4 {
|
|
21
|
-
if (!schema || typeof schema !== 'object') {
|
|
22
|
-
return schema
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const processed = { ...schema }
|
|
26
|
-
|
|
27
|
-
if (Array.isArray(processed.oneOf)) {
|
|
28
|
-
const hasRef = processed.oneOf.some(
|
|
29
|
-
(option) => option && typeof option === 'object' && '$ref' in option,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
if (hasRef) {
|
|
33
|
-
const nonRefOptions = processed.oneOf
|
|
34
|
-
.filter((option) => !(option && typeof option === 'object' && '$ref' in option))
|
|
35
|
-
.map((option) => simplifyRelationshipFields(option))
|
|
36
|
-
|
|
37
|
-
if (nonRefOptions.length === 1) {
|
|
38
|
-
const single = nonRefOptions[0]!
|
|
39
|
-
delete processed.oneOf
|
|
40
|
-
Object.assign(processed, single)
|
|
41
|
-
} else if (nonRefOptions.length > 1) {
|
|
42
|
-
delete processed.oneOf
|
|
43
|
-
processed.anyOf = nonRefOptions
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
processed.anyOf = processed.oneOf.map((option) => simplifyRelationshipFields(option))
|
|
47
|
-
delete processed.oneOf
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (processed.properties && typeof processed.properties === 'object') {
|
|
52
|
-
processed.properties = Object.fromEntries(
|
|
53
|
-
Object.entries(processed.properties).map(([key, value]) => [
|
|
54
|
-
key,
|
|
55
|
-
simplifyRelationshipFields(value),
|
|
56
|
-
]),
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (processed.items && typeof processed.items === 'object' && !Array.isArray(processed.items)) {
|
|
61
|
-
processed.items = simplifyRelationshipFields(processed.items)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return processed
|
|
65
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { JSONSchema4 } from 'json-schema'
|
|
2
|
-
|
|
3
|
-
export function transformPointFieldsForMCP(schema: JSONSchema4): JSONSchema4 {
|
|
4
|
-
if (!schema || typeof schema !== 'object') {
|
|
5
|
-
return schema
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const transformed = { ...schema }
|
|
9
|
-
|
|
10
|
-
if (transformed.properties && typeof transformed.properties === 'object') {
|
|
11
|
-
transformed.properties = Object.fromEntries(
|
|
12
|
-
Object.entries(transformed.properties).map(([key, value]) => {
|
|
13
|
-
const isArrayType =
|
|
14
|
-
value.type === 'array' || (Array.isArray(value.type) && value.type.includes('array'))
|
|
15
|
-
|
|
16
|
-
if (
|
|
17
|
-
value &&
|
|
18
|
-
typeof value === 'object' &&
|
|
19
|
-
isArrayType &&
|
|
20
|
-
Array.isArray(value.items) &&
|
|
21
|
-
value.items.length === 2 &&
|
|
22
|
-
value.items.every((item: JSONSchema4) => item?.type === 'number')
|
|
23
|
-
) {
|
|
24
|
-
// Transform to object format
|
|
25
|
-
const isNullable = Array.isArray(value.type) && value.type.includes('null')
|
|
26
|
-
|
|
27
|
-
return [
|
|
28
|
-
key,
|
|
29
|
-
{
|
|
30
|
-
type: isNullable ? ['object', 'null'] : 'object',
|
|
31
|
-
description: value.description || 'Geographic coordinates (longitude, latitude)',
|
|
32
|
-
properties: {
|
|
33
|
-
latitude: { type: 'number', description: 'Latitude coordinate' },
|
|
34
|
-
longitude: { type: 'number', description: 'Longitude coordinate' },
|
|
35
|
-
},
|
|
36
|
-
required: ['longitude', 'latitude'],
|
|
37
|
-
},
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return [key, transformPointFieldsForMCP(value)]
|
|
42
|
-
}),
|
|
43
|
-
)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
transformed.items &&
|
|
48
|
-
typeof transformed.items === 'object' &&
|
|
49
|
-
!Array.isArray(transformed.items)
|
|
50
|
-
) {
|
|
51
|
-
transformed.items = transformPointFieldsForMCP(transformed.items)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return transformed
|
|
55
|
-
}
|