@payloadcms/plugin-mcp 3.86.0-internal.ac46214 → 4.0.0-internal.183b315
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/@types/assets.d.js +2 -0
- package/dist/@types/assets.d.js.map +1 -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 +170 -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 +91 -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 +117 -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 +159 -0
- package/dist/mcp/builtin/collections/findTool.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 +191 -0
- package/dist/mcp/builtin/collections/updateTool.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/updateTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/updateTool.js +96 -0
- package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
- package/dist/mcp/builtinTools.d.ts +37 -0
- package/dist/mcp/builtinTools.d.ts.map +1 -0
- package/dist/mcp/builtinTools.js +64 -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 +167 -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 +262 -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/buildToolInput.d.ts +29 -0
- package/dist/utils/schemaConversion/buildToolInput.d.ts.map +1 -0
- package/dist/utils/schemaConversion/buildToolInput.js +51 -0
- package/dist/utils/schemaConversion/buildToolInput.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/package.json +35 -10
- package/src/@types/assets.d.ts +3 -0
- package/src/collection/getAccessField.ts +64 -0
- package/src/collection/index.ts +64 -0
- package/src/components/AccessField/index.client.tsx +344 -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 +229 -0
- package/src/mcp/builtin/collections/authTools.ts +233 -0
- package/src/mcp/builtin/collections/createTool.ts +116 -0
- package/src/mcp/builtin/collections/deleteTool.ts +123 -0
- package/src/mcp/builtin/collections/findTool.ts +187 -0
- package/src/mcp/builtin/collections/updateTool.ts +210 -0
- package/src/mcp/builtin/globals/findTool.ts +96 -0
- package/src/mcp/builtin/globals/updateTool.ts +120 -0
- package/src/mcp/builtinTools.ts +84 -0
- package/src/mcp/sanitizeMCPConfig.ts +239 -0
- package/src/stdio.ts +98 -0
- package/src/types.ts +295 -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/buildToolInput.ts +68 -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/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,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Removes internal Payload properties (id, createdAt, updatedAt) from a
|
|
3
|
-
* JSON Schema so they don't appear in the generated Zod validation schema.
|
|
4
|
-
* Also strips `id` from the `required` array when present.
|
|
5
|
-
*
|
|
6
|
-
* Additionally normalizes nullable type arrays (e.g. `['array', 'null']` →
|
|
7
|
-
* `'array'`) throughout the schema tree. Without this, `json-schema-to-zod`
|
|
8
|
-
* emits a Zod union which the MCP SDK serialises back as `anyOf`, stripping
|
|
9
|
-
* the concrete `type` from the output and breaking schema introspection.
|
|
10
|
-
*/ export function sanitizeJsonSchema(schema) {
|
|
11
|
-
delete schema?.properties?.id;
|
|
12
|
-
delete schema?.properties?.createdAt;
|
|
13
|
-
delete schema?.properties?.updatedAt;
|
|
14
|
-
if (Array.isArray(schema.required)) {
|
|
15
|
-
schema.required = schema.required.filter((field)=>field !== 'id');
|
|
16
|
-
if (schema.required.length === 0) {
|
|
17
|
-
delete schema.required;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (schema.properties && typeof schema.properties === 'object') {
|
|
21
|
-
for (const key of Object.keys(schema.properties)){
|
|
22
|
-
const prop = schema.properties[key];
|
|
23
|
-
if (!prop || typeof prop !== 'object') {
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
normalizeNullableType(prop);
|
|
27
|
-
if (prop.properties) {
|
|
28
|
-
sanitizeJsonSchema(prop);
|
|
29
|
-
}
|
|
30
|
-
if (prop.items && typeof prop.items === 'object' && !Array.isArray(prop.items)) {
|
|
31
|
-
sanitizeJsonSchema(prop.items);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return schema;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Strips `'null'` from a `type` array only when the remaining type is a
|
|
39
|
-
* complex structural type (`array` or `object`).
|
|
40
|
-
*
|
|
41
|
-
* Simple scalar types (`string`, `number`, `boolean`) are intentionally
|
|
42
|
-
* preserved as `['string', 'null']` so that the MCP SDK serialises them as a
|
|
43
|
-
* compact inline `type` array. Complex types however cause `zodToJsonSchema`
|
|
44
|
-
* to emit `anyOf: [{ type: 'array', items: ... }, { type: 'null' }]`, which
|
|
45
|
-
* has no top-level `type` property and breaks schema introspection by clients.
|
|
46
|
-
*/ function normalizeNullableType(schema) {
|
|
47
|
-
if (!Array.isArray(schema.type)) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const nonNullTypes = schema.type.filter((t)=>t !== 'null');
|
|
51
|
-
if (nonNullTypes.length === 1 && (nonNullTypes[0] === 'array' || nonNullTypes[0] === 'object')) {
|
|
52
|
-
schema.type = nonNullTypes[0];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=sanitizeJsonSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/schemaConversion/sanitizeJsonSchema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\n\n/**\n * Removes internal Payload properties (id, createdAt, updatedAt) from a\n * JSON Schema so they don't appear in the generated Zod validation schema.\n * Also strips `id` from the `required` array when present.\n *\n * Additionally normalizes nullable type arrays (e.g. `['array', 'null']` →\n * `'array'`) throughout the schema tree. Without this, `json-schema-to-zod`\n * emits a Zod union which the MCP SDK serialises back as `anyOf`, stripping\n * the concrete `type` from the output and breaking schema introspection.\n */\nexport function sanitizeJsonSchema(schema: JSONSchema4): JSONSchema4 {\n delete schema?.properties?.id\n delete schema?.properties?.createdAt\n delete schema?.properties?.updatedAt\n\n if (Array.isArray(schema.required)) {\n schema.required = schema.required.filter((field) => field !== 'id')\n if (schema.required.length === 0) {\n delete schema.required\n }\n }\n\n if (schema.properties && typeof schema.properties === 'object') {\n for (const key of Object.keys(schema.properties)) {\n const prop = schema.properties[key] as JSONSchema4\n if (!prop || typeof prop !== 'object') {\n continue\n }\n normalizeNullableType(prop)\n if (prop.properties) {\n sanitizeJsonSchema(prop)\n }\n if (prop.items && typeof prop.items === 'object' && !Array.isArray(prop.items)) {\n sanitizeJsonSchema(prop.items)\n }\n }\n }\n\n return schema\n}\n\n/**\n * Strips `'null'` from a `type` array only when the remaining type is a\n * complex structural type (`array` or `object`).\n *\n * Simple scalar types (`string`, `number`, `boolean`) are intentionally\n * preserved as `['string', 'null']` so that the MCP SDK serialises them as a\n * compact inline `type` array. Complex types however cause `zodToJsonSchema`\n * to emit `anyOf: [{ type: 'array', items: ... }, { type: 'null' }]`, which\n * has no top-level `type` property and breaks schema introspection by clients.\n */\nfunction normalizeNullableType(schema: JSONSchema4): void {\n if (!Array.isArray(schema.type)) {\n return\n }\n const nonNullTypes = schema.type.filter((t) => t !== 'null')\n if (nonNullTypes.length === 1 && (nonNullTypes[0] === 'array' || nonNullTypes[0] === 'object')) {\n schema.type = nonNullTypes[0]\n }\n}\n"],"names":["sanitizeJsonSchema","schema","properties","id","createdAt","updatedAt","Array","isArray","required","filter","field","length","key","Object","keys","prop","normalizeNullableType","items","type","nonNullTypes","t"],"mappings":"AAEA;;;;;;;;;CASC,GACD,OAAO,SAASA,mBAAmBC,MAAmB;IACpD,OAAOA,QAAQC,YAAYC;IAC3B,OAAOF,QAAQC,YAAYE;IAC3B,OAAOH,QAAQC,YAAYG;IAE3B,IAAIC,MAAMC,OAAO,CAACN,OAAOO,QAAQ,GAAG;QAClCP,OAAOO,QAAQ,GAAGP,OAAOO,QAAQ,CAACC,MAAM,CAAC,CAACC,QAAUA,UAAU;QAC9D,IAAIT,OAAOO,QAAQ,CAACG,MAAM,KAAK,GAAG;YAChC,OAAOV,OAAOO,QAAQ;QACxB;IACF;IAEA,IAAIP,OAAOC,UAAU,IAAI,OAAOD,OAAOC,UAAU,KAAK,UAAU;QAC9D,KAAK,MAAMU,OAAOC,OAAOC,IAAI,CAACb,OAAOC,UAAU,EAAG;YAChD,MAAMa,OAAOd,OAAOC,UAAU,CAACU,IAAI;YACnC,IAAI,CAACG,QAAQ,OAAOA,SAAS,UAAU;gBACrC;YACF;YACAC,sBAAsBD;YACtB,IAAIA,KAAKb,UAAU,EAAE;gBACnBF,mBAAmBe;YACrB;YACA,IAAIA,KAAKE,KAAK,IAAI,OAAOF,KAAKE,KAAK,KAAK,YAAY,CAACX,MAAMC,OAAO,CAACQ,KAAKE,KAAK,GAAG;gBAC9EjB,mBAAmBe,KAAKE,KAAK;YAC/B;QACF;IACF;IAEA,OAAOhB;AACT;AAEA;;;;;;;;;CASC,GACD,SAASe,sBAAsBf,MAAmB;IAChD,IAAI,CAACK,MAAMC,OAAO,CAACN,OAAOiB,IAAI,GAAG;QAC/B;IACF;IACA,MAAMC,eAAelB,OAAOiB,IAAI,CAACT,MAAM,CAAC,CAACW,IAAMA,MAAM;IACrD,IAAID,aAAaR,MAAM,KAAK,KAAMQ,CAAAA,YAAY,CAAC,EAAE,KAAK,WAAWA,YAAY,CAAC,EAAE,KAAK,QAAO,GAAI;QAC9FlB,OAAOiB,IAAI,GAAGC,YAAY,CAAC,EAAE;IAC/B;AACF"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { JSONSchema4 } from 'json-schema';
|
|
2
|
-
/**
|
|
3
|
-
* Recursively processes JSON schema properties to simplify relationship fields
|
|
4
|
-
* and convert `oneOf` constructs into MCP-friendly schemas.
|
|
5
|
-
*
|
|
6
|
-
* For create/update validation we only need to accept IDs (string/number),
|
|
7
|
-
* not populated objects. `$ref` options pointing to full entity definitions
|
|
8
|
-
* are removed entirely from `oneOf` unions. When a single option remains the
|
|
9
|
-
* `oneOf` is unwrapped; otherwise it is converted to `anyOf`.
|
|
10
|
-
*
|
|
11
|
-
* This matters because `json-schema-to-zod` converts `oneOf` into a strict
|
|
12
|
-
* `z.any().superRefine(...)` validator whose base type is `z.any()`, causing
|
|
13
|
-
* `zodToJsonSchema` to emit `{}` and losing all type information in the MCP
|
|
14
|
-
* tool input schema. `anyOf` instead produces a clean `z.union([...])`.
|
|
15
|
-
*
|
|
16
|
-
* NOTE: This function must operate on a cloned schema to avoid mutating
|
|
17
|
-
* the original JSON schema used for tool listing.
|
|
18
|
-
*/
|
|
19
|
-
export declare function simplifyRelationshipFields(schema: JSONSchema4): JSONSchema4;
|
|
20
|
-
//# sourceMappingURL=simplifyRelationshipFields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simplifyRelationshipFields.d.ts","sourceRoot":"","sources":["../../../src/utils/schemaConversion/simplifyRelationshipFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CA6C3E"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursively processes JSON schema properties to simplify relationship fields
|
|
3
|
-
* and convert `oneOf` constructs into MCP-friendly schemas.
|
|
4
|
-
*
|
|
5
|
-
* For create/update validation we only need to accept IDs (string/number),
|
|
6
|
-
* not populated objects. `$ref` options pointing to full entity definitions
|
|
7
|
-
* are removed entirely from `oneOf` unions. When a single option remains the
|
|
8
|
-
* `oneOf` is unwrapped; otherwise it is converted to `anyOf`.
|
|
9
|
-
*
|
|
10
|
-
* This matters because `json-schema-to-zod` converts `oneOf` into a strict
|
|
11
|
-
* `z.any().superRefine(...)` validator whose base type is `z.any()`, causing
|
|
12
|
-
* `zodToJsonSchema` to emit `{}` and losing all type information in the MCP
|
|
13
|
-
* tool input schema. `anyOf` instead produces a clean `z.union([...])`.
|
|
14
|
-
*
|
|
15
|
-
* NOTE: This function must operate on a cloned schema to avoid mutating
|
|
16
|
-
* the original JSON schema used for tool listing.
|
|
17
|
-
*/ export function simplifyRelationshipFields(schema) {
|
|
18
|
-
if (!schema || typeof schema !== 'object') {
|
|
19
|
-
return schema;
|
|
20
|
-
}
|
|
21
|
-
const processed = {
|
|
22
|
-
...schema
|
|
23
|
-
};
|
|
24
|
-
if (Array.isArray(processed.oneOf)) {
|
|
25
|
-
const hasRef = processed.oneOf.some((option)=>option && typeof option === 'object' && '$ref' in option);
|
|
26
|
-
if (hasRef) {
|
|
27
|
-
const nonRefOptions = processed.oneOf.filter((option)=>!(option && typeof option === 'object' && '$ref' in option)).map((option)=>simplifyRelationshipFields(option));
|
|
28
|
-
if (nonRefOptions.length === 1) {
|
|
29
|
-
const single = nonRefOptions[0];
|
|
30
|
-
delete processed.oneOf;
|
|
31
|
-
Object.assign(processed, single);
|
|
32
|
-
} else if (nonRefOptions.length > 1) {
|
|
33
|
-
delete processed.oneOf;
|
|
34
|
-
processed.anyOf = nonRefOptions;
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
processed.anyOf = processed.oneOf.map((option)=>simplifyRelationshipFields(option));
|
|
38
|
-
delete processed.oneOf;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (processed.properties && typeof processed.properties === 'object') {
|
|
42
|
-
processed.properties = Object.fromEntries(Object.entries(processed.properties).map(([key, value])=>[
|
|
43
|
-
key,
|
|
44
|
-
simplifyRelationshipFields(value)
|
|
45
|
-
]));
|
|
46
|
-
}
|
|
47
|
-
if (processed.items && typeof processed.items === 'object' && !Array.isArray(processed.items)) {
|
|
48
|
-
processed.items = simplifyRelationshipFields(processed.items);
|
|
49
|
-
}
|
|
50
|
-
return processed;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=simplifyRelationshipFields.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/schemaConversion/simplifyRelationshipFields.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\n\n/**\n * Recursively processes JSON schema properties to simplify relationship fields\n * and convert `oneOf` constructs into MCP-friendly schemas.\n *\n * For create/update validation we only need to accept IDs (string/number),\n * not populated objects. `$ref` options pointing to full entity definitions\n * are removed entirely from `oneOf` unions. When a single option remains the\n * `oneOf` is unwrapped; otherwise it is converted to `anyOf`.\n *\n * This matters because `json-schema-to-zod` converts `oneOf` into a strict\n * `z.any().superRefine(...)` validator whose base type is `z.any()`, causing\n * `zodToJsonSchema` to emit `{}` and losing all type information in the MCP\n * tool input schema. `anyOf` instead produces a clean `z.union([...])`.\n *\n * NOTE: This function must operate on a cloned schema to avoid mutating\n * the original JSON schema used for tool listing.\n */\nexport function simplifyRelationshipFields(schema: JSONSchema4): JSONSchema4 {\n if (!schema || typeof schema !== 'object') {\n return schema\n }\n\n const processed = { ...schema }\n\n if (Array.isArray(processed.oneOf)) {\n const hasRef = processed.oneOf.some(\n (option) => option && typeof option === 'object' && '$ref' in option,\n )\n\n if (hasRef) {\n const nonRefOptions = processed.oneOf\n .filter((option) => !(option && typeof option === 'object' && '$ref' in option))\n .map((option) => simplifyRelationshipFields(option))\n\n if (nonRefOptions.length === 1) {\n const single = nonRefOptions[0]!\n delete processed.oneOf\n Object.assign(processed, single)\n } else if (nonRefOptions.length > 1) {\n delete processed.oneOf\n processed.anyOf = nonRefOptions\n }\n } else {\n processed.anyOf = processed.oneOf.map((option) => simplifyRelationshipFields(option))\n delete processed.oneOf\n }\n }\n\n if (processed.properties && typeof processed.properties === 'object') {\n processed.properties = Object.fromEntries(\n Object.entries(processed.properties).map(([key, value]) => [\n key,\n simplifyRelationshipFields(value),\n ]),\n )\n }\n\n if (processed.items && typeof processed.items === 'object' && !Array.isArray(processed.items)) {\n processed.items = simplifyRelationshipFields(processed.items)\n }\n\n return processed\n}\n"],"names":["simplifyRelationshipFields","schema","processed","Array","isArray","oneOf","hasRef","some","option","nonRefOptions","filter","map","length","single","Object","assign","anyOf","properties","fromEntries","entries","key","value","items"],"mappings":"AAEA;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,SAASA,2BAA2BC,MAAmB;IAC5D,IAAI,CAACA,UAAU,OAAOA,WAAW,UAAU;QACzC,OAAOA;IACT;IAEA,MAAMC,YAAY;QAAE,GAAGD,MAAM;IAAC;IAE9B,IAAIE,MAAMC,OAAO,CAACF,UAAUG,KAAK,GAAG;QAClC,MAAMC,SAASJ,UAAUG,KAAK,CAACE,IAAI,CACjC,CAACC,SAAWA,UAAU,OAAOA,WAAW,YAAY,UAAUA;QAGhE,IAAIF,QAAQ;YACV,MAAMG,gBAAgBP,UAAUG,KAAK,CAClCK,MAAM,CAAC,CAACF,SAAW,CAAEA,CAAAA,UAAU,OAAOA,WAAW,YAAY,UAAUA,MAAK,GAC5EG,GAAG,CAAC,CAACH,SAAWR,2BAA2BQ;YAE9C,IAAIC,cAAcG,MAAM,KAAK,GAAG;gBAC9B,MAAMC,SAASJ,aAAa,CAAC,EAAE;gBAC/B,OAAOP,UAAUG,KAAK;gBACtBS,OAAOC,MAAM,CAACb,WAAWW;YAC3B,OAAO,IAAIJ,cAAcG,MAAM,GAAG,GAAG;gBACnC,OAAOV,UAAUG,KAAK;gBACtBH,UAAUc,KAAK,GAAGP;YACpB;QACF,OAAO;YACLP,UAAUc,KAAK,GAAGd,UAAUG,KAAK,CAACM,GAAG,CAAC,CAACH,SAAWR,2BAA2BQ;YAC7E,OAAON,UAAUG,KAAK;QACxB;IACF;IAEA,IAAIH,UAAUe,UAAU,IAAI,OAAOf,UAAUe,UAAU,KAAK,UAAU;QACpEf,UAAUe,UAAU,GAAGH,OAAOI,WAAW,CACvCJ,OAAOK,OAAO,CAACjB,UAAUe,UAAU,EAAEN,GAAG,CAAC,CAAC,CAACS,KAAKC,MAAM,GAAK;gBACzDD;gBACApB,2BAA2BqB;aAC5B;IAEL;IAEA,IAAInB,UAAUoB,KAAK,IAAI,OAAOpB,UAAUoB,KAAK,KAAK,YAAY,CAACnB,MAAMC,OAAO,CAACF,UAAUoB,KAAK,GAAG;QAC7FpB,UAAUoB,KAAK,GAAGtB,2BAA2BE,UAAUoB,KAAK;IAC9D;IAEA,OAAOpB;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transformPointFields.d.ts","sourceRoot":"","sources":["../../../src/utils/schemaConversion/transformPointFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAoD3E"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export function transformPointFieldsForMCP(schema) {
|
|
2
|
-
if (!schema || typeof schema !== 'object') {
|
|
3
|
-
return schema;
|
|
4
|
-
}
|
|
5
|
-
const transformed = {
|
|
6
|
-
...schema
|
|
7
|
-
};
|
|
8
|
-
if (transformed.properties && typeof transformed.properties === 'object') {
|
|
9
|
-
transformed.properties = Object.fromEntries(Object.entries(transformed.properties).map(([key, value])=>{
|
|
10
|
-
const isArrayType = value.type === 'array' || Array.isArray(value.type) && value.type.includes('array');
|
|
11
|
-
if (value && typeof value === 'object' && isArrayType && Array.isArray(value.items) && value.items.length === 2 && value.items.every((item)=>item?.type === 'number')) {
|
|
12
|
-
// Transform to object format
|
|
13
|
-
const isNullable = Array.isArray(value.type) && value.type.includes('null');
|
|
14
|
-
return [
|
|
15
|
-
key,
|
|
16
|
-
{
|
|
17
|
-
type: isNullable ? [
|
|
18
|
-
'object',
|
|
19
|
-
'null'
|
|
20
|
-
] : 'object',
|
|
21
|
-
description: value.description || 'Geographic coordinates (longitude, latitude)',
|
|
22
|
-
properties: {
|
|
23
|
-
latitude: {
|
|
24
|
-
type: 'number',
|
|
25
|
-
description: 'Latitude coordinate'
|
|
26
|
-
},
|
|
27
|
-
longitude: {
|
|
28
|
-
type: 'number',
|
|
29
|
-
description: 'Longitude coordinate'
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
required: [
|
|
33
|
-
'longitude',
|
|
34
|
-
'latitude'
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
return [
|
|
40
|
-
key,
|
|
41
|
-
transformPointFieldsForMCP(value)
|
|
42
|
-
];
|
|
43
|
-
}));
|
|
44
|
-
}
|
|
45
|
-
if (transformed.items && typeof transformed.items === 'object' && !Array.isArray(transformed.items)) {
|
|
46
|
-
transformed.items = transformPointFieldsForMCP(transformed.items);
|
|
47
|
-
}
|
|
48
|
-
return transformed;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=transformPointFields.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/schemaConversion/transformPointFields.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\n\nexport function transformPointFieldsForMCP(schema: JSONSchema4): JSONSchema4 {\n if (!schema || typeof schema !== 'object') {\n return schema\n }\n\n const transformed = { ...schema }\n\n if (transformed.properties && typeof transformed.properties === 'object') {\n transformed.properties = Object.fromEntries(\n Object.entries(transformed.properties).map(([key, value]) => {\n const isArrayType =\n value.type === 'array' || (Array.isArray(value.type) && value.type.includes('array'))\n\n if (\n value &&\n typeof value === 'object' &&\n isArrayType &&\n Array.isArray(value.items) &&\n value.items.length === 2 &&\n value.items.every((item: JSONSchema4) => item?.type === 'number')\n ) {\n // Transform to object format\n const isNullable = Array.isArray(value.type) && value.type.includes('null')\n\n return [\n key,\n {\n type: isNullable ? ['object', 'null'] : 'object',\n description: value.description || 'Geographic coordinates (longitude, latitude)',\n properties: {\n latitude: { type: 'number', description: 'Latitude coordinate' },\n longitude: { type: 'number', description: 'Longitude coordinate' },\n },\n required: ['longitude', 'latitude'],\n },\n ]\n }\n\n return [key, transformPointFieldsForMCP(value)]\n }),\n )\n }\n\n if (\n transformed.items &&\n typeof transformed.items === 'object' &&\n !Array.isArray(transformed.items)\n ) {\n transformed.items = transformPointFieldsForMCP(transformed.items)\n }\n\n return transformed\n}\n"],"names":["transformPointFieldsForMCP","schema","transformed","properties","Object","fromEntries","entries","map","key","value","isArrayType","type","Array","isArray","includes","items","length","every","item","isNullable","description","latitude","longitude","required"],"mappings":"AAEA,OAAO,SAASA,2BAA2BC,MAAmB;IAC5D,IAAI,CAACA,UAAU,OAAOA,WAAW,UAAU;QACzC,OAAOA;IACT;IAEA,MAAMC,cAAc;QAAE,GAAGD,MAAM;IAAC;IAEhC,IAAIC,YAAYC,UAAU,IAAI,OAAOD,YAAYC,UAAU,KAAK,UAAU;QACxED,YAAYC,UAAU,GAAGC,OAAOC,WAAW,CACzCD,OAAOE,OAAO,CAACJ,YAAYC,UAAU,EAAEI,GAAG,CAAC,CAAC,CAACC,KAAKC,MAAM;YACtD,MAAMC,cACJD,MAAME,IAAI,KAAK,WAAYC,MAAMC,OAAO,CAACJ,MAAME,IAAI,KAAKF,MAAME,IAAI,CAACG,QAAQ,CAAC;YAE9E,IACEL,SACA,OAAOA,UAAU,YACjBC,eACAE,MAAMC,OAAO,CAACJ,MAAMM,KAAK,KACzBN,MAAMM,KAAK,CAACC,MAAM,KAAK,KACvBP,MAAMM,KAAK,CAACE,KAAK,CAAC,CAACC,OAAsBA,MAAMP,SAAS,WACxD;gBACA,6BAA6B;gBAC7B,MAAMQ,aAAaP,MAAMC,OAAO,CAACJ,MAAME,IAAI,KAAKF,MAAME,IAAI,CAACG,QAAQ,CAAC;gBAEpE,OAAO;oBACLN;oBACA;wBACEG,MAAMQ,aAAa;4BAAC;4BAAU;yBAAO,GAAG;wBACxCC,aAAaX,MAAMW,WAAW,IAAI;wBAClCjB,YAAY;4BACVkB,UAAU;gCAAEV,MAAM;gCAAUS,aAAa;4BAAsB;4BAC/DE,WAAW;gCAAEX,MAAM;gCAAUS,aAAa;4BAAuB;wBACnE;wBACAG,UAAU;4BAAC;4BAAa;yBAAW;oBACrC;iBACD;YACH;YAEA,OAAO;gBAACf;gBAAKR,2BAA2BS;aAAO;QACjD;IAEJ;IAEA,IACEP,YAAYa,KAAK,IACjB,OAAOb,YAAYa,KAAK,KAAK,YAC7B,CAACH,MAAMC,OAAO,CAACX,YAAYa,KAAK,GAChC;QACAb,YAAYa,KAAK,GAAGf,2BAA2BE,YAAYa,KAAK;IAClE;IAEA,OAAOb;AACT"}
|
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
import type { CollectionConfig, CollectionSlug } from 'payload'
|
|
2
|
-
|
|
3
|
-
import type { MCPPluginConfig } from '../types.js'
|
|
4
|
-
|
|
5
|
-
import { toCamelCase } from '../utils/camelCase.js'
|
|
6
|
-
import { createApiKeyFields } from '../utils/createApiKeyFields.js'
|
|
7
|
-
|
|
8
|
-
export const createAPIKeysCollection = (
|
|
9
|
-
collections: MCPPluginConfig['collections'],
|
|
10
|
-
globals: MCPPluginConfig['globals'],
|
|
11
|
-
customTools: Array<{ description: string; name: string }> = [],
|
|
12
|
-
experimentalTools: NonNullable<MCPPluginConfig['experimental']>['tools'] = {},
|
|
13
|
-
pluginOptions: MCPPluginConfig,
|
|
14
|
-
): CollectionConfig => {
|
|
15
|
-
const customToolsFields = customTools.map((tool) => {
|
|
16
|
-
const camelCasedName = toCamelCase(tool.name)
|
|
17
|
-
return {
|
|
18
|
-
name: camelCasedName,
|
|
19
|
-
type: 'checkbox' as const,
|
|
20
|
-
admin: {
|
|
21
|
-
description: tool.description,
|
|
22
|
-
},
|
|
23
|
-
defaultValue: true,
|
|
24
|
-
label: camelCasedName,
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
const customResourceFields =
|
|
29
|
-
pluginOptions.mcp?.resources?.map((resource) => {
|
|
30
|
-
const camelCasedName = toCamelCase(resource.name)
|
|
31
|
-
return {
|
|
32
|
-
name: camelCasedName,
|
|
33
|
-
type: 'checkbox' as const,
|
|
34
|
-
admin: {
|
|
35
|
-
description: resource.description,
|
|
36
|
-
},
|
|
37
|
-
defaultValue: true,
|
|
38
|
-
label: camelCasedName,
|
|
39
|
-
}
|
|
40
|
-
}) || []
|
|
41
|
-
|
|
42
|
-
const customPromptFields =
|
|
43
|
-
pluginOptions.mcp?.prompts?.map((prompt) => {
|
|
44
|
-
const camelCasedName = toCamelCase(prompt.name)
|
|
45
|
-
return {
|
|
46
|
-
name: camelCasedName,
|
|
47
|
-
type: 'checkbox' as const,
|
|
48
|
-
admin: {
|
|
49
|
-
description: prompt.description,
|
|
50
|
-
},
|
|
51
|
-
defaultValue: true,
|
|
52
|
-
label: camelCasedName,
|
|
53
|
-
}
|
|
54
|
-
}) || []
|
|
55
|
-
|
|
56
|
-
const userCollection = pluginOptions.userCollection
|
|
57
|
-
|
|
58
|
-
return {
|
|
59
|
-
slug: 'payload-mcp-api-keys',
|
|
60
|
-
admin: {
|
|
61
|
-
description:
|
|
62
|
-
'API keys control which collections, resources, tools, and prompts MCP clients can access',
|
|
63
|
-
group: 'MCP',
|
|
64
|
-
useAsTitle: 'label',
|
|
65
|
-
},
|
|
66
|
-
auth: {
|
|
67
|
-
disableLocalStrategy: true,
|
|
68
|
-
useAPIKey: true,
|
|
69
|
-
},
|
|
70
|
-
fields: [
|
|
71
|
-
{
|
|
72
|
-
name: 'user',
|
|
73
|
-
type: 'relationship',
|
|
74
|
-
admin: {
|
|
75
|
-
description: 'The user that the API key is associated with.',
|
|
76
|
-
},
|
|
77
|
-
relationTo: userCollection as CollectionSlug,
|
|
78
|
-
required: true,
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
name: 'label',
|
|
82
|
-
type: 'text',
|
|
83
|
-
admin: {
|
|
84
|
-
description: 'A useful label for the API key.',
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
name: 'description',
|
|
89
|
-
type: 'text',
|
|
90
|
-
admin: {
|
|
91
|
-
description: 'The purpose of the API key.',
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
|
|
95
|
-
...createApiKeyFields({
|
|
96
|
-
config: collections,
|
|
97
|
-
configType: 'collection',
|
|
98
|
-
}),
|
|
99
|
-
|
|
100
|
-
...createApiKeyFields({
|
|
101
|
-
config: globals,
|
|
102
|
-
configType: 'global',
|
|
103
|
-
}),
|
|
104
|
-
|
|
105
|
-
...(customTools.length > 0
|
|
106
|
-
? [
|
|
107
|
-
{
|
|
108
|
-
type: 'collapsible' as const,
|
|
109
|
-
admin: {
|
|
110
|
-
description: 'Manage client access to tools',
|
|
111
|
-
position: 'sidebar' as const,
|
|
112
|
-
},
|
|
113
|
-
fields: [
|
|
114
|
-
{
|
|
115
|
-
name: 'payload-mcp-tool',
|
|
116
|
-
type: 'group' as const,
|
|
117
|
-
fields: customToolsFields,
|
|
118
|
-
label: false as const,
|
|
119
|
-
},
|
|
120
|
-
],
|
|
121
|
-
label: 'Tools',
|
|
122
|
-
},
|
|
123
|
-
]
|
|
124
|
-
: []),
|
|
125
|
-
|
|
126
|
-
...(pluginOptions.mcp?.resources && pluginOptions.mcp?.resources.length > 0
|
|
127
|
-
? [
|
|
128
|
-
{
|
|
129
|
-
type: 'collapsible' as const,
|
|
130
|
-
admin: {
|
|
131
|
-
description: 'Manage client access to resources',
|
|
132
|
-
position: 'sidebar' as const,
|
|
133
|
-
},
|
|
134
|
-
fields: [
|
|
135
|
-
{
|
|
136
|
-
name: 'payload-mcp-resource',
|
|
137
|
-
type: 'group' as const,
|
|
138
|
-
fields: customResourceFields,
|
|
139
|
-
label: false as const,
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
label: 'Resources',
|
|
143
|
-
},
|
|
144
|
-
]
|
|
145
|
-
: []),
|
|
146
|
-
|
|
147
|
-
...(pluginOptions.mcp?.prompts && pluginOptions.mcp?.prompts.length > 0
|
|
148
|
-
? [
|
|
149
|
-
{
|
|
150
|
-
type: 'collapsible' as const,
|
|
151
|
-
admin: {
|
|
152
|
-
description: 'Manage client access to prompts',
|
|
153
|
-
position: 'sidebar' as const,
|
|
154
|
-
},
|
|
155
|
-
fields: [
|
|
156
|
-
{
|
|
157
|
-
name: 'payload-mcp-prompt',
|
|
158
|
-
type: 'group' as const,
|
|
159
|
-
fields: customPromptFields,
|
|
160
|
-
label: false as const,
|
|
161
|
-
},
|
|
162
|
-
],
|
|
163
|
-
label: 'Prompts',
|
|
164
|
-
},
|
|
165
|
-
]
|
|
166
|
-
: []),
|
|
167
|
-
|
|
168
|
-
// Experimental Tools
|
|
169
|
-
...(process.env.NODE_ENV === 'development' &&
|
|
170
|
-
(experimentalTools?.collections?.enabled ||
|
|
171
|
-
experimentalTools?.jobs?.enabled ||
|
|
172
|
-
experimentalTools?.config?.enabled ||
|
|
173
|
-
experimentalTools?.auth?.enabled)
|
|
174
|
-
? [
|
|
175
|
-
{
|
|
176
|
-
type: 'collapsible' as const,
|
|
177
|
-
admin: {
|
|
178
|
-
description: 'Manage client access to experimental tools',
|
|
179
|
-
position: 'sidebar' as const,
|
|
180
|
-
},
|
|
181
|
-
fields: [
|
|
182
|
-
...(experimentalTools?.collections?.enabled
|
|
183
|
-
? [
|
|
184
|
-
{
|
|
185
|
-
name: 'collections',
|
|
186
|
-
type: 'group' as const,
|
|
187
|
-
fields: [
|
|
188
|
-
{
|
|
189
|
-
name: 'find',
|
|
190
|
-
type: 'checkbox' as const,
|
|
191
|
-
admin: {
|
|
192
|
-
description:
|
|
193
|
-
'Allow LLMs to find and list Payload collections with optional content and document counts.',
|
|
194
|
-
},
|
|
195
|
-
defaultValue: false,
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
name: 'create',
|
|
199
|
-
type: 'checkbox' as const,
|
|
200
|
-
admin: {
|
|
201
|
-
description:
|
|
202
|
-
'Allow LLMs to create new Payload collections with specified fields and configuration.',
|
|
203
|
-
},
|
|
204
|
-
defaultValue: false,
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
name: 'update',
|
|
208
|
-
type: 'checkbox' as const,
|
|
209
|
-
admin: {
|
|
210
|
-
description:
|
|
211
|
-
'Allow LLMs to update existing Payload collections with new fields, modifications, or configuration changes.',
|
|
212
|
-
},
|
|
213
|
-
defaultValue: false,
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
name: 'delete',
|
|
217
|
-
type: 'checkbox' as const,
|
|
218
|
-
admin: {
|
|
219
|
-
description:
|
|
220
|
-
'Allow LLMs to delete Payload collections and optionally update the configuration.',
|
|
221
|
-
},
|
|
222
|
-
defaultValue: false,
|
|
223
|
-
},
|
|
224
|
-
],
|
|
225
|
-
},
|
|
226
|
-
]
|
|
227
|
-
: []),
|
|
228
|
-
...(experimentalTools?.jobs?.enabled
|
|
229
|
-
? [
|
|
230
|
-
{
|
|
231
|
-
name: 'jobs',
|
|
232
|
-
type: 'group' as const,
|
|
233
|
-
fields: [
|
|
234
|
-
{
|
|
235
|
-
name: 'create',
|
|
236
|
-
type: 'checkbox' as const,
|
|
237
|
-
admin: {
|
|
238
|
-
description:
|
|
239
|
-
'Allow LLMs to create new Payload jobs (tasks and workflows) with custom schemas and configuration.',
|
|
240
|
-
},
|
|
241
|
-
defaultValue: false,
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
name: 'run',
|
|
245
|
-
type: 'checkbox' as const,
|
|
246
|
-
admin: {
|
|
247
|
-
description:
|
|
248
|
-
'Allow LLMs to execute Payload jobs with custom input data and queue options.',
|
|
249
|
-
},
|
|
250
|
-
defaultValue: false,
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
name: 'update',
|
|
254
|
-
type: 'checkbox' as const,
|
|
255
|
-
admin: {
|
|
256
|
-
description:
|
|
257
|
-
'Allow LLMs to update existing Payload jobs with new schemas, configuration, or handler code.',
|
|
258
|
-
},
|
|
259
|
-
defaultValue: false,
|
|
260
|
-
},
|
|
261
|
-
],
|
|
262
|
-
},
|
|
263
|
-
]
|
|
264
|
-
: []),
|
|
265
|
-
...(experimentalTools?.config?.enabled
|
|
266
|
-
? [
|
|
267
|
-
{
|
|
268
|
-
name: 'config',
|
|
269
|
-
type: 'group' as const,
|
|
270
|
-
fields: [
|
|
271
|
-
{
|
|
272
|
-
name: 'find',
|
|
273
|
-
type: 'checkbox' as const,
|
|
274
|
-
admin: {
|
|
275
|
-
description:
|
|
276
|
-
'Allow LLMs to read and display a Payload configuration file.',
|
|
277
|
-
},
|
|
278
|
-
defaultValue: false,
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
name: 'update',
|
|
282
|
-
type: 'checkbox' as const,
|
|
283
|
-
admin: {
|
|
284
|
-
description:
|
|
285
|
-
'Allow LLMs to update a Payload configuration file with various modifications.',
|
|
286
|
-
},
|
|
287
|
-
defaultValue: false,
|
|
288
|
-
},
|
|
289
|
-
],
|
|
290
|
-
},
|
|
291
|
-
]
|
|
292
|
-
: []),
|
|
293
|
-
...(experimentalTools?.auth?.enabled
|
|
294
|
-
? [
|
|
295
|
-
{
|
|
296
|
-
name: 'auth',
|
|
297
|
-
type: 'group' as const,
|
|
298
|
-
fields: [
|
|
299
|
-
{
|
|
300
|
-
name: 'auth',
|
|
301
|
-
type: 'checkbox' as const,
|
|
302
|
-
admin: {
|
|
303
|
-
description:
|
|
304
|
-
'Allow LLMs to check authentication status for a user by setting custom headers. (e.g. {"Authorization": "Bearer <token>"})',
|
|
305
|
-
},
|
|
306
|
-
defaultValue: false,
|
|
307
|
-
label: 'Check Auth Status',
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
name: 'login',
|
|
311
|
-
type: 'checkbox' as const,
|
|
312
|
-
admin: {
|
|
313
|
-
description:
|
|
314
|
-
'Allow LLMs to authenticate a user with email and password.',
|
|
315
|
-
},
|
|
316
|
-
defaultValue: false,
|
|
317
|
-
label: 'User Login',
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
name: 'verify',
|
|
321
|
-
type: 'checkbox' as const,
|
|
322
|
-
admin: {
|
|
323
|
-
description:
|
|
324
|
-
'Allow LLMs to verify a user email with a verification token.',
|
|
325
|
-
},
|
|
326
|
-
defaultValue: false,
|
|
327
|
-
label: 'Email Verification',
|
|
328
|
-
},
|
|
329
|
-
{
|
|
330
|
-
name: 'resetPassword',
|
|
331
|
-
type: 'checkbox' as const,
|
|
332
|
-
admin: {
|
|
333
|
-
description:
|
|
334
|
-
'Allow LLMs to reset a user password with a reset token.',
|
|
335
|
-
},
|
|
336
|
-
defaultValue: false,
|
|
337
|
-
label: 'Reset Password',
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
name: 'forgotPassword',
|
|
341
|
-
type: 'checkbox' as const,
|
|
342
|
-
admin: {
|
|
343
|
-
description: 'Allow LLMs to send a password reset email to a user.',
|
|
344
|
-
},
|
|
345
|
-
defaultValue: false,
|
|
346
|
-
label: 'Forgot Password',
|
|
347
|
-
},
|
|
348
|
-
{
|
|
349
|
-
name: 'unlock',
|
|
350
|
-
type: 'checkbox' as const,
|
|
351
|
-
admin: {
|
|
352
|
-
description:
|
|
353
|
-
'Allow LLMs to unlock a user account that has been locked due to failed login attempts.',
|
|
354
|
-
},
|
|
355
|
-
defaultValue: false,
|
|
356
|
-
label: 'Unlock Account',
|
|
357
|
-
},
|
|
358
|
-
],
|
|
359
|
-
},
|
|
360
|
-
]
|
|
361
|
-
: []),
|
|
362
|
-
],
|
|
363
|
-
label: 'Experimental Tools',
|
|
364
|
-
},
|
|
365
|
-
]
|
|
366
|
-
: []),
|
|
367
|
-
],
|
|
368
|
-
labels: {
|
|
369
|
-
plural: 'API Keys',
|
|
370
|
-
singular: 'API Key',
|
|
371
|
-
},
|
|
372
|
-
}
|
|
373
|
-
}
|
package/src/defaults.ts
DELETED