@payloadcms/plugin-mcp 4.0.0-canary.0 → 4.0.0-canary.2
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/dist/collection/getAccessField.d.ts.map +1 -1
- package/dist/collection/getAccessField.js +25 -10
- package/dist/collection/getAccessField.js.map +1 -1
- package/dist/collection/index.d.ts.map +1 -1
- package/dist/collection/index.js +73 -27
- package/dist/collection/index.js.map +1 -1
- package/dist/components/APIKeyField/index.client.d.ts +9 -0
- package/dist/components/APIKeyField/index.client.d.ts.map +1 -0
- package/dist/components/APIKeyField/index.client.js +85 -0
- package/dist/components/APIKeyField/index.client.js.map +1 -0
- package/dist/components/APIKeyField/index.css +105 -0
- package/dist/components/APIKeysEmptyState/index.client.d.ts +4 -0
- package/dist/components/APIKeysEmptyState/index.client.d.ts.map +1 -0
- package/dist/components/APIKeysEmptyState/index.client.js +21 -0
- package/dist/components/APIKeysEmptyState/index.client.js.map +1 -0
- package/dist/components/AccessField/index.client.d.ts.map +1 -1
- package/dist/components/AccessField/index.client.js +149 -207
- package/dist/components/AccessField/index.client.js.map +1 -1
- package/dist/components/AccessField/index.css +50 -44
- package/dist/components/SettingsMenu/index.client.d.ts +8 -0
- package/dist/components/SettingsMenu/index.client.d.ts.map +1 -0
- package/dist/components/SettingsMenu/index.client.js +29 -0
- package/dist/components/SettingsMenu/index.client.js.map +1 -0
- package/dist/endpoint/access.js +21 -5
- package/dist/endpoint/access.js.map +1 -1
- package/dist/exports/client.d.ts +3 -0
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +3 -0
- package/dist/exports/client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/buildMcpServer.d.ts.map +1 -1
- package/dist/mcp/buildMcpServer.js +100 -64
- package/dist/mcp/buildMcpServer.js.map +1 -1
- package/dist/mcp/builtin/collections/createTool.d.ts +1 -1
- package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/createTool.js +28 -21
- package/dist/mcp/builtin/collections/createTool.js.map +1 -1
- package/dist/mcp/builtin/collections/deleteTool.d.ts +1 -1
- package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/deleteTool.js +5 -20
- package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
- package/dist/mcp/builtin/collections/findTool.d.ts +1 -1
- package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/findTool.js +6 -21
- package/dist/mcp/builtin/collections/findTool.js.map +1 -1
- 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 +1 -1
- package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/updateTool.js +74 -62
- package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
- 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.js +1 -1
- package/dist/mcp/builtin/globals/findTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/globals/updateTool.js +21 -19
- package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
- 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 +84 -16
- package/dist/mcp/builtinTools.d.ts.map +1 -1
- package/dist/mcp/builtinTools.js +54 -11
- package/dist/mcp/builtinTools.js.map +1 -1
- package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
- package/dist/mcp/sanitizeMCPConfig.js +61 -40
- package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
- package/dist/translations/index.d.ts +11 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +92 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/languages/ar.d.ts +31 -0
- package/dist/translations/languages/ar.d.ts.map +1 -0
- package/dist/translations/languages/ar.js +34 -0
- package/dist/translations/languages/ar.js.map +1 -0
- package/dist/translations/languages/az.d.ts +31 -0
- package/dist/translations/languages/az.d.ts.map +1 -0
- package/dist/translations/languages/az.js +34 -0
- package/dist/translations/languages/az.js.map +1 -0
- package/dist/translations/languages/bg.d.ts +31 -0
- package/dist/translations/languages/bg.d.ts.map +1 -0
- package/dist/translations/languages/bg.js +34 -0
- package/dist/translations/languages/bg.js.map +1 -0
- package/dist/translations/languages/bnBd.d.ts +31 -0
- package/dist/translations/languages/bnBd.d.ts.map +1 -0
- package/dist/translations/languages/bnBd.js +34 -0
- package/dist/translations/languages/bnBd.js.map +1 -0
- package/dist/translations/languages/bnIn.d.ts +31 -0
- package/dist/translations/languages/bnIn.d.ts.map +1 -0
- package/dist/translations/languages/bnIn.js +34 -0
- package/dist/translations/languages/bnIn.js.map +1 -0
- package/dist/translations/languages/ca.d.ts +31 -0
- package/dist/translations/languages/ca.d.ts.map +1 -0
- package/dist/translations/languages/ca.js +34 -0
- package/dist/translations/languages/ca.js.map +1 -0
- package/dist/translations/languages/cs.d.ts +31 -0
- package/dist/translations/languages/cs.d.ts.map +1 -0
- package/dist/translations/languages/cs.js +34 -0
- package/dist/translations/languages/cs.js.map +1 -0
- package/dist/translations/languages/da.d.ts +31 -0
- package/dist/translations/languages/da.d.ts.map +1 -0
- package/dist/translations/languages/da.js +34 -0
- package/dist/translations/languages/da.js.map +1 -0
- package/dist/translations/languages/de.d.ts +31 -0
- package/dist/translations/languages/de.d.ts.map +1 -0
- package/dist/translations/languages/de.js +34 -0
- package/dist/translations/languages/de.js.map +1 -0
- package/dist/translations/languages/en.d.ts +31 -0
- package/dist/translations/languages/en.d.ts.map +1 -0
- package/dist/translations/languages/en.js +34 -0
- package/dist/translations/languages/en.js.map +1 -0
- package/dist/translations/languages/es.d.ts +31 -0
- package/dist/translations/languages/es.d.ts.map +1 -0
- package/dist/translations/languages/es.js +34 -0
- package/dist/translations/languages/es.js.map +1 -0
- package/dist/translations/languages/et.d.ts +31 -0
- package/dist/translations/languages/et.d.ts.map +1 -0
- package/dist/translations/languages/et.js +34 -0
- package/dist/translations/languages/et.js.map +1 -0
- package/dist/translations/languages/fa.d.ts +31 -0
- package/dist/translations/languages/fa.d.ts.map +1 -0
- package/dist/translations/languages/fa.js +34 -0
- package/dist/translations/languages/fa.js.map +1 -0
- package/dist/translations/languages/fr.d.ts +31 -0
- package/dist/translations/languages/fr.d.ts.map +1 -0
- package/dist/translations/languages/fr.js +34 -0
- package/dist/translations/languages/fr.js.map +1 -0
- package/dist/translations/languages/he.d.ts +31 -0
- package/dist/translations/languages/he.d.ts.map +1 -0
- package/dist/translations/languages/he.js +34 -0
- package/dist/translations/languages/he.js.map +1 -0
- package/dist/translations/languages/hr.d.ts +31 -0
- package/dist/translations/languages/hr.d.ts.map +1 -0
- package/dist/translations/languages/hr.js +34 -0
- package/dist/translations/languages/hr.js.map +1 -0
- package/dist/translations/languages/hu.d.ts +31 -0
- package/dist/translations/languages/hu.d.ts.map +1 -0
- package/dist/translations/languages/hu.js +34 -0
- package/dist/translations/languages/hu.js.map +1 -0
- package/dist/translations/languages/hy.d.ts +31 -0
- package/dist/translations/languages/hy.d.ts.map +1 -0
- package/dist/translations/languages/hy.js +34 -0
- package/dist/translations/languages/hy.js.map +1 -0
- package/dist/translations/languages/id.d.ts +31 -0
- package/dist/translations/languages/id.d.ts.map +1 -0
- package/dist/translations/languages/id.js +34 -0
- package/dist/translations/languages/id.js.map +1 -0
- package/dist/translations/languages/is.d.ts +31 -0
- package/dist/translations/languages/is.d.ts.map +1 -0
- package/dist/translations/languages/is.js +34 -0
- package/dist/translations/languages/is.js.map +1 -0
- package/dist/translations/languages/it.d.ts +31 -0
- package/dist/translations/languages/it.d.ts.map +1 -0
- package/dist/translations/languages/it.js +34 -0
- package/dist/translations/languages/it.js.map +1 -0
- package/dist/translations/languages/ja.d.ts +31 -0
- package/dist/translations/languages/ja.d.ts.map +1 -0
- package/dist/translations/languages/ja.js +34 -0
- package/dist/translations/languages/ja.js.map +1 -0
- package/dist/translations/languages/ko.d.ts +31 -0
- package/dist/translations/languages/ko.d.ts.map +1 -0
- package/dist/translations/languages/ko.js +34 -0
- package/dist/translations/languages/ko.js.map +1 -0
- package/dist/translations/languages/lt.d.ts +31 -0
- package/dist/translations/languages/lt.d.ts.map +1 -0
- package/dist/translations/languages/lt.js +34 -0
- package/dist/translations/languages/lt.js.map +1 -0
- package/dist/translations/languages/lv.d.ts +31 -0
- package/dist/translations/languages/lv.d.ts.map +1 -0
- package/dist/translations/languages/lv.js +34 -0
- package/dist/translations/languages/lv.js.map +1 -0
- package/dist/translations/languages/my.d.ts +31 -0
- package/dist/translations/languages/my.d.ts.map +1 -0
- package/dist/translations/languages/my.js +34 -0
- package/dist/translations/languages/my.js.map +1 -0
- package/dist/translations/languages/nb.d.ts +31 -0
- package/dist/translations/languages/nb.d.ts.map +1 -0
- package/dist/translations/languages/nb.js +34 -0
- package/dist/translations/languages/nb.js.map +1 -0
- package/dist/translations/languages/nl.d.ts +31 -0
- package/dist/translations/languages/nl.d.ts.map +1 -0
- package/dist/translations/languages/nl.js +34 -0
- package/dist/translations/languages/nl.js.map +1 -0
- package/dist/translations/languages/pl.d.ts +31 -0
- package/dist/translations/languages/pl.d.ts.map +1 -0
- package/dist/translations/languages/pl.js +34 -0
- package/dist/translations/languages/pl.js.map +1 -0
- package/dist/translations/languages/pt.d.ts +31 -0
- package/dist/translations/languages/pt.d.ts.map +1 -0
- package/dist/translations/languages/pt.js +34 -0
- package/dist/translations/languages/pt.js.map +1 -0
- package/dist/translations/languages/ro.d.ts +31 -0
- package/dist/translations/languages/ro.d.ts.map +1 -0
- package/dist/translations/languages/ro.js +34 -0
- package/dist/translations/languages/ro.js.map +1 -0
- package/dist/translations/languages/rs.d.ts +31 -0
- package/dist/translations/languages/rs.d.ts.map +1 -0
- package/dist/translations/languages/rs.js +34 -0
- package/dist/translations/languages/rs.js.map +1 -0
- package/dist/translations/languages/rsLatin.d.ts +31 -0
- package/dist/translations/languages/rsLatin.d.ts.map +1 -0
- package/dist/translations/languages/rsLatin.js +34 -0
- package/dist/translations/languages/rsLatin.js.map +1 -0
- package/dist/translations/languages/ru.d.ts +31 -0
- package/dist/translations/languages/ru.d.ts.map +1 -0
- package/dist/translations/languages/ru.js +34 -0
- package/dist/translations/languages/ru.js.map +1 -0
- package/dist/translations/languages/sk.d.ts +31 -0
- package/dist/translations/languages/sk.d.ts.map +1 -0
- package/dist/translations/languages/sk.js +34 -0
- package/dist/translations/languages/sk.js.map +1 -0
- package/dist/translations/languages/sl.d.ts +31 -0
- package/dist/translations/languages/sl.d.ts.map +1 -0
- package/dist/translations/languages/sl.js +34 -0
- package/dist/translations/languages/sl.js.map +1 -0
- package/dist/translations/languages/sv.d.ts +31 -0
- package/dist/translations/languages/sv.d.ts.map +1 -0
- package/dist/translations/languages/sv.js +34 -0
- package/dist/translations/languages/sv.js.map +1 -0
- package/dist/translations/languages/ta.d.ts +31 -0
- package/dist/translations/languages/ta.d.ts.map +1 -0
- package/dist/translations/languages/ta.js +34 -0
- package/dist/translations/languages/ta.js.map +1 -0
- package/dist/translations/languages/th.d.ts +31 -0
- package/dist/translations/languages/th.d.ts.map +1 -0
- package/dist/translations/languages/th.js +34 -0
- package/dist/translations/languages/th.js.map +1 -0
- package/dist/translations/languages/tr.d.ts +31 -0
- package/dist/translations/languages/tr.d.ts.map +1 -0
- package/dist/translations/languages/tr.js +34 -0
- package/dist/translations/languages/tr.js.map +1 -0
- package/dist/translations/languages/uk.d.ts +31 -0
- package/dist/translations/languages/uk.d.ts.map +1 -0
- package/dist/translations/languages/uk.js +34 -0
- package/dist/translations/languages/uk.js.map +1 -0
- package/dist/translations/languages/vi.d.ts +31 -0
- package/dist/translations/languages/vi.d.ts.map +1 -0
- package/dist/translations/languages/vi.js +34 -0
- package/dist/translations/languages/vi.js.map +1 -0
- package/dist/translations/languages/zh.d.ts +31 -0
- package/dist/translations/languages/zh.d.ts.map +1 -0
- package/dist/translations/languages/zh.js +34 -0
- package/dist/translations/languages/zh.js.map +1 -0
- package/dist/translations/languages/zhTw.d.ts +31 -0
- package/dist/translations/languages/zhTw.d.ts.map +1 -0
- package/dist/translations/languages/zhTw.js +34 -0
- package/dist/translations/languages/zhTw.js.map +1 -0
- package/dist/translations/types.d.ts +32 -0
- package/dist/translations/types.d.ts.map +1 -0
- package/dist/translations/types.js +3 -0
- package/dist/translations/types.js.map +1 -0
- package/dist/types.d.ts +22 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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/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/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 +7 -6
- package/src/collection/getAccessField.ts +33 -13
- package/src/collection/index.ts +64 -22
- package/src/components/APIKeyField/index.client.tsx +73 -0
- package/src/components/APIKeyField/index.css +105 -0
- package/src/components/APIKeysEmptyState/index.client.tsx +36 -0
- package/src/components/AccessField/index.client.tsx +175 -220
- package/src/components/AccessField/index.css +50 -44
- package/src/components/SettingsMenu/index.client.tsx +34 -0
- package/src/endpoint/access.ts +17 -5
- package/src/exports/client.ts +3 -0
- package/src/index.ts +49 -3
- package/src/mcp/buildMcpServer.ts +123 -90
- package/src/mcp/builtin/collections/createTool.ts +46 -50
- package/src/mcp/builtin/collections/deleteTool.ts +9 -16
- package/src/mcp/builtin/collections/findTool.ts +7 -17
- 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 +97 -91
- package/src/mcp/builtin/getConfigInfoTool.ts +44 -0
- package/src/mcp/builtin/globals/findTool.ts +1 -1
- package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +28 -0
- package/src/mcp/builtin/globals/updateTool.ts +40 -43
- package/src/mcp/builtin/validateEntityData.ts +132 -0
- package/src/mcp/builtinTools.ts +52 -38
- package/src/mcp/sanitizeMCPConfig.ts +78 -57
- package/src/translations/index.ts +108 -0
- package/src/translations/languages/ar.ts +35 -0
- package/src/translations/languages/az.ts +35 -0
- package/src/translations/languages/bg.ts +35 -0
- package/src/translations/languages/bnBd.ts +35 -0
- package/src/translations/languages/bnIn.ts +35 -0
- package/src/translations/languages/ca.ts +35 -0
- package/src/translations/languages/cs.ts +35 -0
- package/src/translations/languages/da.ts +35 -0
- package/src/translations/languages/de.ts +35 -0
- package/src/translations/languages/en.ts +35 -0
- package/src/translations/languages/es.ts +35 -0
- package/src/translations/languages/et.ts +35 -0
- package/src/translations/languages/fa.ts +35 -0
- package/src/translations/languages/fr.ts +35 -0
- package/src/translations/languages/he.ts +35 -0
- package/src/translations/languages/hr.ts +35 -0
- package/src/translations/languages/hu.ts +35 -0
- package/src/translations/languages/hy.ts +35 -0
- package/src/translations/languages/id.ts +35 -0
- package/src/translations/languages/is.ts +35 -0
- package/src/translations/languages/it.ts +35 -0
- package/src/translations/languages/ja.ts +35 -0
- package/src/translations/languages/ko.ts +35 -0
- package/src/translations/languages/lt.ts +35 -0
- package/src/translations/languages/lv.ts +35 -0
- package/src/translations/languages/my.ts +35 -0
- package/src/translations/languages/nb.ts +35 -0
- package/src/translations/languages/nl.ts +35 -0
- package/src/translations/languages/pl.ts +35 -0
- package/src/translations/languages/pt.ts +35 -0
- package/src/translations/languages/ro.ts +35 -0
- package/src/translations/languages/rs.ts +35 -0
- package/src/translations/languages/rsLatin.ts +35 -0
- package/src/translations/languages/ru.ts +35 -0
- package/src/translations/languages/sk.ts +35 -0
- package/src/translations/languages/sl.ts +35 -0
- package/src/translations/languages/sv.ts +35 -0
- package/src/translations/languages/ta.ts +35 -0
- package/src/translations/languages/th.ts +35 -0
- package/src/translations/languages/tr.ts +35 -0
- package/src/translations/languages/uk.ts +35 -0
- package/src/translations/languages/vi.ts +35 -0
- package/src/translations/languages/zh.ts +35 -0
- package/src/translations/languages/zhTw.ts +35 -0
- package/src/translations/types.ts +34 -0
- package/src/types.ts +30 -30
- package/src/utils/schemaConversion/getEntityInputSchema.ts +78 -0
- package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
- package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
- package/src/utils/whereSchema.ts +24 -0
- package/dist/utils/schemaConversion/prepareCollectionSchema.d.ts +0 -7
- package/dist/utils/schemaConversion/prepareCollectionSchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/prepareCollectionSchema.js +0 -37
- package/dist/utils/schemaConversion/prepareCollectionSchema.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 -56
- 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 -57
- package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
- package/src/utils/schemaConversion/prepareCollectionSchema.ts +0 -39
- package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
- package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -70
- package/src/utils/schemaConversion/transformPointFields.ts +0 -56
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { CollectionSlug, GlobalSlug, PayloadRequest, SanitizedConfig } from 'payload'
|
|
2
|
+
|
|
3
|
+
import { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/server'
|
|
4
|
+
|
|
5
|
+
import type { JsonSchemaType, MCPToolResponse } from '../../types.js'
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
getCollectionInputSchema,
|
|
9
|
+
getGlobalInputSchema,
|
|
10
|
+
} from '../../utils/schemaConversion/getEntityInputSchema.js'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Keep the default `shortcircuit: true` - `false` makes validating nested rich text exponentially slow.
|
|
14
|
+
*/
|
|
15
|
+
const validator = new CfWorkerJsonSchemaValidator({ shortcircuit: true })
|
|
16
|
+
|
|
17
|
+
type EntityValidator = {
|
|
18
|
+
schema: JsonSchemaType
|
|
19
|
+
validate: ReturnType<(typeof validator)['getValidator']>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* - Caches each entity's schema and validator, so both are only built on the first request.
|
|
24
|
+
* - Keyed by payload config, then by entity type, slug, partial and language.
|
|
25
|
+
*/
|
|
26
|
+
const validatorCache = new WeakMap<SanitizedConfig, Map<string, EntityValidator>>()
|
|
27
|
+
|
|
28
|
+
export const validateCollectionData = ({
|
|
29
|
+
collectionSlug,
|
|
30
|
+
data,
|
|
31
|
+
partial,
|
|
32
|
+
req,
|
|
33
|
+
}: {
|
|
34
|
+
collectionSlug: CollectionSlug
|
|
35
|
+
data: Record<string, unknown>
|
|
36
|
+
partial?: boolean
|
|
37
|
+
req: PayloadRequest
|
|
38
|
+
}): MCPToolResponse | null =>
|
|
39
|
+
validateData({
|
|
40
|
+
slug: collectionSlug,
|
|
41
|
+
buildSchema: () => getCollectionInputSchema({ collectionSlug, req }),
|
|
42
|
+
data,
|
|
43
|
+
entity: 'collection',
|
|
44
|
+
partial,
|
|
45
|
+
req,
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
export const validateGlobalData = ({
|
|
49
|
+
data,
|
|
50
|
+
globalSlug,
|
|
51
|
+
req,
|
|
52
|
+
}: {
|
|
53
|
+
data: Record<string, unknown>
|
|
54
|
+
globalSlug: GlobalSlug
|
|
55
|
+
req: PayloadRequest
|
|
56
|
+
}): MCPToolResponse | null =>
|
|
57
|
+
validateData({
|
|
58
|
+
slug: globalSlug,
|
|
59
|
+
buildSchema: () => getGlobalInputSchema({ globalSlug, req }),
|
|
60
|
+
data,
|
|
61
|
+
entity: 'global',
|
|
62
|
+
partial: true,
|
|
63
|
+
req,
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
const validateData = ({
|
|
67
|
+
slug,
|
|
68
|
+
buildSchema,
|
|
69
|
+
data,
|
|
70
|
+
entity,
|
|
71
|
+
partial,
|
|
72
|
+
req,
|
|
73
|
+
}: {
|
|
74
|
+
buildSchema: () => JsonSchemaType | null
|
|
75
|
+
data: Record<string, unknown>
|
|
76
|
+
entity: 'collection' | 'global'
|
|
77
|
+
partial?: boolean
|
|
78
|
+
req: PayloadRequest
|
|
79
|
+
slug: string
|
|
80
|
+
}): MCPToolResponse | null => {
|
|
81
|
+
let cache = validatorCache.get(req.payload.config)
|
|
82
|
+
if (!cache) {
|
|
83
|
+
cache = new Map()
|
|
84
|
+
validatorCache.set(req.payload.config, cache)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const cacheKey = `${entity}:${slug}:${partial ? 'partial' : 'full'}:${req.i18n.language}`
|
|
88
|
+
let entityValidator = cache.get(cacheKey)
|
|
89
|
+
|
|
90
|
+
if (!entityValidator) {
|
|
91
|
+
const schema = buildSchema()
|
|
92
|
+
|
|
93
|
+
if (!schema) {
|
|
94
|
+
return null
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
entityValidator = {
|
|
98
|
+
schema,
|
|
99
|
+
validate: validator.getValidator(partial ? withoutRequired(schema) : schema),
|
|
100
|
+
}
|
|
101
|
+
cache.set(cacheKey, entityValidator)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const result = entityValidator.validate(data)
|
|
105
|
+
|
|
106
|
+
if (result.valid) {
|
|
107
|
+
return null
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const { schema } = entityValidator
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
content: [
|
|
114
|
+
{
|
|
115
|
+
type: 'text',
|
|
116
|
+
text: `Invalid data for ${entity} "${slug}": ${result.errorMessage}\n\nUse this schema for data:\n\`\`\`json\n${JSON.stringify(schema)}\n\`\`\``,
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
isError: true,
|
|
120
|
+
structuredContent: {
|
|
121
|
+
[`${entity}Slug`]: slug,
|
|
122
|
+
errors: [{ message: result.errorMessage }],
|
|
123
|
+
schema,
|
|
124
|
+
},
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** Updates are partial — drop the schema's top-level `required` before validating. */
|
|
129
|
+
const withoutRequired = (schema: JsonSchemaType): JsonSchemaType => {
|
|
130
|
+
const { required: _required, ...rest } = schema
|
|
131
|
+
return rest
|
|
132
|
+
}
|
package/src/mcp/builtinTools.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CollectionTool, GlobalTool } from '../types.js'
|
|
1
|
+
import type { CollectionTool, GlobalTool, Tool } from '../types.js'
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
authCollectionTool,
|
|
@@ -8,62 +8,72 @@ import {
|
|
|
8
8
|
unlockCollectionTool,
|
|
9
9
|
verifyCollectionTool,
|
|
10
10
|
} from './builtin/collections/authTools.js'
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { createDocumentTool } from './builtin/collections/createTool.js'
|
|
12
|
+
import { deleteDocumentsTool } from './builtin/collections/deleteTool.js'
|
|
13
|
+
import { findDocumentsTool } from './builtin/collections/findTool.js'
|
|
14
|
+
import { getCollectionSchemaTool } from './builtin/collections/getCollectionSchemaTool.js'
|
|
15
|
+
import { updateDocumentTool } from './builtin/collections/updateTool.js'
|
|
16
|
+
import { getConfigInfoTool } from './builtin/getConfigInfoTool.js'
|
|
15
17
|
import { findGlobalTool } from './builtin/globals/findTool.js'
|
|
18
|
+
import { getGlobalSchemaTool } from './builtin/globals/getGlobalSchemaTool.js'
|
|
16
19
|
import { updateGlobalTool } from './builtin/globals/updateTool.js'
|
|
17
20
|
|
|
21
|
+
export const TOOL_BUILTINS = {
|
|
22
|
+
getConfigInfo: { label: 'Config Info', mcpName: 'getConfigInfo', tool: getConfigInfoTool },
|
|
23
|
+
} satisfies Record<string, { label: string; mcpName: string; tool: Tool }>
|
|
24
|
+
|
|
18
25
|
/**
|
|
19
26
|
* The static built-in collection CRUD tools. Keys here are the source of truth
|
|
20
27
|
* for `MCPCollectionBuiltinName` — adding/removing an entry updates the type
|
|
21
28
|
* automatically.
|
|
22
29
|
*/
|
|
23
|
-
export const COLLECTION_BUILTINS
|
|
24
|
-
create:
|
|
25
|
-
delete:
|
|
26
|
-
find:
|
|
27
|
-
|
|
28
|
-
}
|
|
30
|
+
export const COLLECTION_BUILTINS = {
|
|
31
|
+
create: { mcpName: 'createDocument', tool: createDocumentTool },
|
|
32
|
+
delete: { mcpName: 'deleteDocuments', tool: deleteDocumentsTool },
|
|
33
|
+
find: { mcpName: 'findDocuments', tool: findDocumentsTool },
|
|
34
|
+
getCollectionSchema: { mcpName: 'getCollectionSchema', tool: getCollectionSchemaTool },
|
|
35
|
+
update: { mcpName: 'updateDocument', tool: updateDocumentTool },
|
|
36
|
+
} satisfies Record<string, { mcpName: string; tool: CollectionTool }>
|
|
29
37
|
|
|
30
38
|
/**
|
|
31
39
|
* The static auth tools surfaced under auth-enabled collections. Each entry
|
|
32
40
|
* carries the admin-UI label alongside the tool. Keys are the source of truth
|
|
33
41
|
* for `MCPCollectionAuthToolName`.
|
|
34
42
|
*/
|
|
35
|
-
export const COLLECTION_AUTH_BUILTINS
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
export const COLLECTION_AUTH_BUILTINS = {
|
|
44
|
+
auth: { label: 'Check Auth Status', mcpName: 'auth', tool: authCollectionTool },
|
|
45
|
+
forgotPassword: {
|
|
46
|
+
label: 'Forgot Password',
|
|
47
|
+
mcpName: 'forgotPassword',
|
|
48
|
+
tool: forgotPasswordCollectionTool,
|
|
49
|
+
},
|
|
50
|
+
login: { label: 'User Login', mcpName: 'login', tool: loginCollectionTool },
|
|
51
|
+
resetPassword: {
|
|
52
|
+
label: 'Reset Password',
|
|
53
|
+
mcpName: 'resetPassword',
|
|
54
|
+
tool: resetPasswordCollectionTool,
|
|
55
|
+
},
|
|
56
|
+
unlock: { label: 'Unlock Account', mcpName: 'unlock', tool: unlockCollectionTool },
|
|
57
|
+
verify: { label: 'Email Verification', mcpName: 'verify', tool: verifyCollectionTool },
|
|
58
|
+
} satisfies Record<string, { label: string; mcpName: string; tool: CollectionTool }>
|
|
46
59
|
|
|
47
60
|
/**
|
|
48
61
|
* The static built-in global tools. Keys are the source of truth for
|
|
49
62
|
* `MCPGlobalBuiltinName`.
|
|
50
63
|
*/
|
|
51
|
-
export const GLOBAL_BUILTINS
|
|
52
|
-
find: findGlobalTool,
|
|
53
|
-
|
|
54
|
-
}
|
|
64
|
+
export const GLOBAL_BUILTINS = {
|
|
65
|
+
find: { mcpName: 'findGlobal', tool: findGlobalTool },
|
|
66
|
+
getGlobalSchema: { mcpName: 'getGlobalSchema', tool: getGlobalSchemaTool },
|
|
67
|
+
update: { mcpName: 'updateGlobal', tool: updateGlobalTool },
|
|
68
|
+
} satisfies Record<string, { mcpName: string; tool: GlobalTool }>
|
|
69
|
+
|
|
70
|
+
export type MCPCollectionBuiltinName = keyof typeof COLLECTION_BUILTINS
|
|
55
71
|
|
|
56
|
-
export type
|
|
72
|
+
export type MCPCollectionAuthToolName = keyof typeof COLLECTION_AUTH_BUILTINS
|
|
57
73
|
|
|
58
|
-
export type
|
|
59
|
-
| 'auth'
|
|
60
|
-
| 'forgotPassword'
|
|
61
|
-
| 'login'
|
|
62
|
-
| 'resetPassword'
|
|
63
|
-
| 'unlock'
|
|
64
|
-
| 'verify'
|
|
74
|
+
export type MCPGlobalBuiltinName = keyof typeof GLOBAL_BUILTINS
|
|
65
75
|
|
|
66
|
-
export type
|
|
76
|
+
export type MCPTopLevelBuiltinName = keyof typeof TOOL_BUILTINS
|
|
67
77
|
|
|
68
78
|
/**
|
|
69
79
|
* Pre-typed `Object.entries` for each registry. The cast from `string` to the
|
|
@@ -71,14 +81,18 @@ export type MCPGlobalBuiltinName = 'find' | 'update'
|
|
|
71
81
|
* cast — TypeScript's `Object.entries` always widens keys to `string`, which
|
|
72
82
|
* defeats the narrow type lookups on `MCPCollectionToolsMap`.
|
|
73
83
|
*/
|
|
84
|
+
export const TOOL_BUILTIN_ENTRIES = Object.entries(TOOL_BUILTINS) as Array<
|
|
85
|
+
[MCPTopLevelBuiltinName, (typeof TOOL_BUILTINS)[MCPTopLevelBuiltinName]]
|
|
86
|
+
>
|
|
87
|
+
|
|
74
88
|
export const COLLECTION_BUILTIN_ENTRIES = Object.entries(COLLECTION_BUILTINS) as Array<
|
|
75
|
-
[MCPCollectionBuiltinName,
|
|
89
|
+
[MCPCollectionBuiltinName, (typeof COLLECTION_BUILTINS)[MCPCollectionBuiltinName]]
|
|
76
90
|
>
|
|
77
91
|
|
|
78
92
|
export const COLLECTION_AUTH_BUILTIN_ENTRIES = Object.entries(COLLECTION_AUTH_BUILTINS) as Array<
|
|
79
|
-
[MCPCollectionAuthToolName,
|
|
93
|
+
[MCPCollectionAuthToolName, (typeof COLLECTION_AUTH_BUILTINS)[MCPCollectionAuthToolName]]
|
|
80
94
|
>
|
|
81
95
|
|
|
82
96
|
export const GLOBAL_BUILTIN_ENTRIES = Object.entries(GLOBAL_BUILTINS) as Array<
|
|
83
|
-
[MCPGlobalBuiltinName,
|
|
97
|
+
[MCPGlobalBuiltinName, (typeof GLOBAL_BUILTINS)[MCPGlobalBuiltinName]]
|
|
84
98
|
>
|
|
@@ -8,13 +8,12 @@ import type {
|
|
|
8
8
|
} from 'payload'
|
|
9
9
|
|
|
10
10
|
import type {
|
|
11
|
+
CollectionMCPItem,
|
|
11
12
|
CollectionTool,
|
|
13
|
+
GlobalMCPItem,
|
|
12
14
|
GlobalTool,
|
|
13
|
-
MCPBuiltInToolOverride,
|
|
14
15
|
MCPItem,
|
|
15
|
-
MCPPluginCollectionConfig,
|
|
16
16
|
MCPPluginConfig,
|
|
17
|
-
MCPPluginGlobalConfig,
|
|
18
17
|
SanitizedMCPPluginConfig,
|
|
19
18
|
} from '../types.js'
|
|
20
19
|
|
|
@@ -25,6 +24,8 @@ import {
|
|
|
25
24
|
COLLECTION_BUILTINS,
|
|
26
25
|
GLOBAL_BUILTIN_ENTRIES,
|
|
27
26
|
GLOBAL_BUILTINS,
|
|
27
|
+
TOOL_BUILTIN_ENTRIES,
|
|
28
|
+
TOOL_BUILTINS,
|
|
28
29
|
} from './builtinTools.js'
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -54,29 +55,45 @@ export const sanitizeMCPConfig = ({
|
|
|
54
55
|
items.push(...sanitizeGlobalConfig({ global, pluginConfig }))
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
for (const [
|
|
58
|
+
for (const [configKey, { label, mcpName, tool }] of TOOL_BUILTIN_ENTRIES) {
|
|
58
59
|
items.push({
|
|
59
60
|
type: 'tool',
|
|
60
|
-
|
|
61
|
-
label
|
|
61
|
+
configKey,
|
|
62
|
+
label,
|
|
63
|
+
mcpName,
|
|
62
64
|
tool,
|
|
63
65
|
})
|
|
64
66
|
}
|
|
65
67
|
|
|
66
|
-
for (const [
|
|
68
|
+
for (const [configKey, tool] of Object.entries(pluginConfig.tools ?? {})) {
|
|
69
|
+
if (configKey in TOOL_BUILTINS) {
|
|
70
|
+
continue
|
|
71
|
+
}
|
|
72
|
+
items.push({
|
|
73
|
+
type: 'tool',
|
|
74
|
+
configKey,
|
|
75
|
+
label: configKey,
|
|
76
|
+
mcpName: configKey,
|
|
77
|
+
tool,
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
for (const [configKey, prompt] of Object.entries(pluginConfig.prompts ?? {})) {
|
|
67
82
|
items.push({
|
|
68
83
|
type: 'prompt',
|
|
69
|
-
|
|
70
|
-
label: prompt.title ??
|
|
84
|
+
configKey,
|
|
85
|
+
label: prompt.title ?? configKey,
|
|
86
|
+
mcpName: configKey,
|
|
71
87
|
prompt,
|
|
72
88
|
})
|
|
73
89
|
}
|
|
74
90
|
|
|
75
|
-
for (const [
|
|
91
|
+
for (const [configKey, resource] of Object.entries(pluginConfig.resources ?? {})) {
|
|
76
92
|
items.push({
|
|
77
93
|
type: 'resource',
|
|
78
|
-
|
|
79
|
-
label: resource.title ??
|
|
94
|
+
configKey,
|
|
95
|
+
label: resource.title ?? configKey,
|
|
96
|
+
mcpName: configKey,
|
|
80
97
|
resource,
|
|
81
98
|
})
|
|
82
99
|
}
|
|
@@ -101,30 +118,39 @@ const sanitizeCollectionConfig = ({
|
|
|
101
118
|
}: {
|
|
102
119
|
collection: CollectionConfig | SanitizedCollectionConfig
|
|
103
120
|
pluginConfig: MCPPluginConfig
|
|
104
|
-
}):
|
|
121
|
+
}): CollectionMCPItem[] => {
|
|
105
122
|
if (collection.slug === 'payload-mcp-api-keys') {
|
|
106
123
|
return []
|
|
107
124
|
}
|
|
108
125
|
const slug = collection.slug
|
|
109
126
|
const collectionPluginConfig = pluginConfig.collections?.[slug]
|
|
110
|
-
const items:
|
|
127
|
+
const items: CollectionMCPItem[] = []
|
|
111
128
|
|
|
112
|
-
for (const [toolKey, tool] of COLLECTION_BUILTIN_ENTRIES) {
|
|
129
|
+
for (const [toolKey, { mcpName, tool }] of COLLECTION_BUILTIN_ENTRIES) {
|
|
113
130
|
const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey]
|
|
114
131
|
if (matchedConfigEntry === false) {
|
|
115
132
|
continue
|
|
116
133
|
}
|
|
134
|
+
const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined
|
|
117
135
|
items.push({
|
|
118
136
|
type: 'collectionTool',
|
|
119
137
|
collectionSlug: slug,
|
|
120
|
-
|
|
138
|
+
configKey: toolKey,
|
|
121
139
|
label: capitalize(toolKey),
|
|
122
|
-
|
|
140
|
+
mcpName,
|
|
141
|
+
tool: {
|
|
142
|
+
...tool,
|
|
143
|
+
description: override?.description ?? tool.description,
|
|
144
|
+
overrideResponse:
|
|
145
|
+
override?.overrideResponse ??
|
|
146
|
+
collectionPluginConfig?.overrideResponse ??
|
|
147
|
+
tool.overrideResponse,
|
|
148
|
+
},
|
|
123
149
|
})
|
|
124
150
|
}
|
|
125
151
|
|
|
126
152
|
if (collection.auth) {
|
|
127
|
-
for (const [authToolKey, { label, tool }] of COLLECTION_AUTH_BUILTIN_ENTRIES) {
|
|
153
|
+
for (const [authToolKey, { label, mcpName, tool }] of COLLECTION_AUTH_BUILTIN_ENTRIES) {
|
|
128
154
|
const matchedConfigEntry = collectionPluginConfig?.tools?.[authToolKey]
|
|
129
155
|
if (!matchedConfigEntry) {
|
|
130
156
|
continue
|
|
@@ -134,9 +160,17 @@ const sanitizeCollectionConfig = ({
|
|
|
134
160
|
items.push({
|
|
135
161
|
type: 'collectionTool',
|
|
136
162
|
collectionSlug: slug,
|
|
137
|
-
|
|
163
|
+
configKey: authToolKey,
|
|
138
164
|
label,
|
|
139
|
-
|
|
165
|
+
mcpName,
|
|
166
|
+
tool: {
|
|
167
|
+
...tool,
|
|
168
|
+
description: override?.description ?? tool.description,
|
|
169
|
+
overrideResponse:
|
|
170
|
+
override?.overrideResponse ??
|
|
171
|
+
collectionPluginConfig?.overrideResponse ??
|
|
172
|
+
tool.overrideResponse,
|
|
173
|
+
},
|
|
140
174
|
})
|
|
141
175
|
}
|
|
142
176
|
}
|
|
@@ -146,8 +180,8 @@ const sanitizeCollectionConfig = ({
|
|
|
146
180
|
const customEntries = Object.entries(collectionPluginConfig?.tools ?? {}) as Array<
|
|
147
181
|
[string, CollectionTool | undefined]
|
|
148
182
|
>
|
|
149
|
-
for (const [
|
|
150
|
-
if (
|
|
183
|
+
for (const [configKey, customTool] of customEntries) {
|
|
184
|
+
if (configKey in COLLECTION_BUILTINS || configKey in COLLECTION_AUTH_BUILTINS) {
|
|
151
185
|
continue
|
|
152
186
|
}
|
|
153
187
|
if (!customTool) {
|
|
@@ -156,8 +190,9 @@ const sanitizeCollectionConfig = ({
|
|
|
156
190
|
items.push({
|
|
157
191
|
type: 'collectionTool',
|
|
158
192
|
collectionSlug: slug,
|
|
159
|
-
|
|
160
|
-
label:
|
|
193
|
+
configKey,
|
|
194
|
+
label: configKey,
|
|
195
|
+
mcpName: configKey,
|
|
161
196
|
tool: customTool,
|
|
162
197
|
})
|
|
163
198
|
}
|
|
@@ -171,30 +206,39 @@ const sanitizeGlobalConfig = ({
|
|
|
171
206
|
}: {
|
|
172
207
|
global: GlobalConfig | SanitizedGlobalConfig
|
|
173
208
|
pluginConfig: MCPPluginConfig
|
|
174
|
-
}):
|
|
209
|
+
}): GlobalMCPItem[] => {
|
|
175
210
|
const slug = global.slug
|
|
176
211
|
const globalPluginConfig = pluginConfig.globals?.[slug]
|
|
177
|
-
const items:
|
|
212
|
+
const items: GlobalMCPItem[] = []
|
|
178
213
|
|
|
179
|
-
for (const [toolKey,
|
|
214
|
+
for (const [toolKey, { mcpName, tool }] of GLOBAL_BUILTIN_ENTRIES) {
|
|
180
215
|
const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey]
|
|
181
216
|
if (matchedConfigEntry === false) {
|
|
182
217
|
continue
|
|
183
218
|
}
|
|
219
|
+
const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined
|
|
184
220
|
items.push({
|
|
185
221
|
type: 'globalTool',
|
|
222
|
+
configKey: toolKey,
|
|
186
223
|
globalSlug: slug,
|
|
187
|
-
key: toolKey,
|
|
188
224
|
label: capitalize(toolKey),
|
|
189
|
-
|
|
225
|
+
mcpName,
|
|
226
|
+
tool: {
|
|
227
|
+
...tool,
|
|
228
|
+
description: override?.description ?? tool.description,
|
|
229
|
+
overrideResponse:
|
|
230
|
+
override?.overrideResponse ??
|
|
231
|
+
globalPluginConfig?.overrideResponse ??
|
|
232
|
+
tool.overrideResponse,
|
|
233
|
+
},
|
|
190
234
|
})
|
|
191
235
|
}
|
|
192
236
|
|
|
193
237
|
const customEntries = Object.entries(globalPluginConfig?.tools ?? {}) as Array<
|
|
194
238
|
[string, GlobalTool | undefined]
|
|
195
239
|
>
|
|
196
|
-
for (const [
|
|
197
|
-
if (
|
|
240
|
+
for (const [configKey, customTool] of customEntries) {
|
|
241
|
+
if (configKey in GLOBAL_BUILTINS) {
|
|
198
242
|
continue
|
|
199
243
|
}
|
|
200
244
|
if (!customTool) {
|
|
@@ -202,9 +246,10 @@ const sanitizeGlobalConfig = ({
|
|
|
202
246
|
}
|
|
203
247
|
items.push({
|
|
204
248
|
type: 'globalTool',
|
|
249
|
+
configKey,
|
|
205
250
|
globalSlug: slug,
|
|
206
|
-
|
|
207
|
-
|
|
251
|
+
label: configKey,
|
|
252
|
+
mcpName: configKey,
|
|
208
253
|
tool: customTool,
|
|
209
254
|
})
|
|
210
255
|
}
|
|
@@ -213,27 +258,3 @@ const sanitizeGlobalConfig = ({
|
|
|
213
258
|
}
|
|
214
259
|
|
|
215
260
|
const capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1)
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Spread the static built-in tool and apply consumer-side overrides.
|
|
219
|
-
* Precedence: per-tool override > scope-level (collection/global) override >
|
|
220
|
-
* the static tool's defaults. `toolEntry` is whatever the user put under
|
|
221
|
-
* `tools: { find: ... }` — could be `true`, `false`, or an override object —
|
|
222
|
-
* so it's narrowed internally.
|
|
223
|
-
*/
|
|
224
|
-
const overrideBuiltinTool = <TTool extends CollectionTool | GlobalTool>(
|
|
225
|
-
tool: TTool,
|
|
226
|
-
toolOverride?: MCPBuiltInToolOverride,
|
|
227
|
-
entityPluginConfig?: TTool extends CollectionTool
|
|
228
|
-
? MCPPluginCollectionConfig<any>
|
|
229
|
-
: MCPPluginGlobalConfig,
|
|
230
|
-
): TTool => {
|
|
231
|
-
return {
|
|
232
|
-
...tool,
|
|
233
|
-
description: toolOverride?.description ?? entityPluginConfig?.description ?? tool.description,
|
|
234
|
-
overrideResponse:
|
|
235
|
-
toolOverride?.overrideResponse ??
|
|
236
|
-
entityPluginConfig?.overrideResponse ??
|
|
237
|
-
tool.overrideResponse,
|
|
238
|
-
}
|
|
239
|
-
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
NestedKeysStripped,
|
|
3
|
+
SupportedLanguages,
|
|
4
|
+
} from '@payloadcms/translations'
|
|
5
|
+
|
|
6
|
+
import type { PluginDefaultTranslationsObject } from './types.js'
|
|
7
|
+
|
|
8
|
+
import { ar } from './languages/ar.js'
|
|
9
|
+
import { az } from './languages/az.js'
|
|
10
|
+
import { bg } from './languages/bg.js'
|
|
11
|
+
import { bnBd } from './languages/bnBd.js'
|
|
12
|
+
import { bnIn } from './languages/bnIn.js'
|
|
13
|
+
import { ca } from './languages/ca.js'
|
|
14
|
+
import { cs } from './languages/cs.js'
|
|
15
|
+
import { da } from './languages/da.js'
|
|
16
|
+
import { de } from './languages/de.js'
|
|
17
|
+
import { en } from './languages/en.js'
|
|
18
|
+
import { es } from './languages/es.js'
|
|
19
|
+
import { et } from './languages/et.js'
|
|
20
|
+
import { fa } from './languages/fa.js'
|
|
21
|
+
import { fr } from './languages/fr.js'
|
|
22
|
+
import { he } from './languages/he.js'
|
|
23
|
+
import { hr } from './languages/hr.js'
|
|
24
|
+
import { hu } from './languages/hu.js'
|
|
25
|
+
import { hy } from './languages/hy.js'
|
|
26
|
+
import { id } from './languages/id.js'
|
|
27
|
+
import { is } from './languages/is.js'
|
|
28
|
+
import { it } from './languages/it.js'
|
|
29
|
+
import { ja } from './languages/ja.js'
|
|
30
|
+
import { ko } from './languages/ko.js'
|
|
31
|
+
import { lt } from './languages/lt.js'
|
|
32
|
+
import { lv } from './languages/lv.js'
|
|
33
|
+
import { my } from './languages/my.js'
|
|
34
|
+
import { nb } from './languages/nb.js'
|
|
35
|
+
import { nl } from './languages/nl.js'
|
|
36
|
+
import { pl } from './languages/pl.js'
|
|
37
|
+
import { pt } from './languages/pt.js'
|
|
38
|
+
import { ro } from './languages/ro.js'
|
|
39
|
+
import { rs } from './languages/rs.js'
|
|
40
|
+
import { rsLatin } from './languages/rsLatin.js'
|
|
41
|
+
import { ru } from './languages/ru.js'
|
|
42
|
+
import { sk } from './languages/sk.js'
|
|
43
|
+
import { sl } from './languages/sl.js'
|
|
44
|
+
import { sv } from './languages/sv.js'
|
|
45
|
+
import { ta } from './languages/ta.js'
|
|
46
|
+
import { th } from './languages/th.js'
|
|
47
|
+
import { tr } from './languages/tr.js'
|
|
48
|
+
import { uk } from './languages/uk.js'
|
|
49
|
+
import { vi } from './languages/vi.js'
|
|
50
|
+
import { zh } from './languages/zh.js'
|
|
51
|
+
import { zhTw } from './languages/zhTw.js'
|
|
52
|
+
|
|
53
|
+
export const translations = {
|
|
54
|
+
id,
|
|
55
|
+
ar,
|
|
56
|
+
az,
|
|
57
|
+
bg,
|
|
58
|
+
'bn-BD': bnBd,
|
|
59
|
+
'bn-IN': bnIn,
|
|
60
|
+
ca,
|
|
61
|
+
cs,
|
|
62
|
+
da,
|
|
63
|
+
de,
|
|
64
|
+
en,
|
|
65
|
+
es,
|
|
66
|
+
et,
|
|
67
|
+
fa,
|
|
68
|
+
fr,
|
|
69
|
+
he,
|
|
70
|
+
hr,
|
|
71
|
+
hu,
|
|
72
|
+
hy,
|
|
73
|
+
is,
|
|
74
|
+
it,
|
|
75
|
+
ja,
|
|
76
|
+
ko,
|
|
77
|
+
lt,
|
|
78
|
+
lv,
|
|
79
|
+
my,
|
|
80
|
+
nb,
|
|
81
|
+
nl,
|
|
82
|
+
pl,
|
|
83
|
+
pt,
|
|
84
|
+
ro,
|
|
85
|
+
rs,
|
|
86
|
+
'rs-latin': rsLatin,
|
|
87
|
+
ru,
|
|
88
|
+
sk,
|
|
89
|
+
sl,
|
|
90
|
+
sv,
|
|
91
|
+
ta,
|
|
92
|
+
th,
|
|
93
|
+
tr,
|
|
94
|
+
uk,
|
|
95
|
+
vi,
|
|
96
|
+
zh,
|
|
97
|
+
'zh-TW': zhTw,
|
|
98
|
+
} as SupportedLanguages<PluginDefaultTranslationsObject>
|
|
99
|
+
|
|
100
|
+
export type PluginMCPTranslations = PluginDefaultTranslationsObject
|
|
101
|
+
|
|
102
|
+
export type PluginMCPTranslationKeys = NestedKeysStripped<PluginMCPTranslations>
|
|
103
|
+
|
|
104
|
+
declare module '@payloadcms/translations' {
|
|
105
|
+
interface CustomTranslationKeys {
|
|
106
|
+
'plugin-mcp': PluginMCPTranslationKeys
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PluginLanguage } from '../types.js'
|
|
2
|
+
|
|
3
|
+
export const arTranslations = {
|
|
4
|
+
'plugin-mcp': {
|
|
5
|
+
apiKeyDescription: 'تتحكم مفاتيح API في المجموعات والموارد والأدوات والمطالبات التي يمكن لعملاء MCP الوصول إليها.',
|
|
6
|
+
apiKeys: 'مفاتيح API',
|
|
7
|
+
authentication: 'المصادقة',
|
|
8
|
+
description: 'الوصف',
|
|
9
|
+
descriptionDescription: 'صف الغرض من مفتاح API.',
|
|
10
|
+
dismiss: 'إغلاق',
|
|
11
|
+
keepKeyPrivate: 'حافظ على سرية مفتاحك.',
|
|
12
|
+
keyPrivateDescription: 'هذا المفتاح يمنح MCP إمكانية الوصول إلى محتواك. لا تشاركه مع الآخرين!',
|
|
13
|
+
lastUsed: 'آخر استخدام',
|
|
14
|
+
manageAPIKeys: 'إدارة مفاتيح API',
|
|
15
|
+
mcp: 'MCP',
|
|
16
|
+
noAPIKeys: 'لا توجد مفاتيح API',
|
|
17
|
+
operations: 'العمليات',
|
|
18
|
+
overrideAccess: 'تجاوز التحكم في الوصول',
|
|
19
|
+
overrideAccessDescription: 'عند تفعيله، يتجاوز هذا المفتاح تحكم Payload في الوصول لكل عملية ينفذها. اتركه غير مفعل ما لم يكن لديك سبب محدد.',
|
|
20
|
+
permissions: 'الأذونات',
|
|
21
|
+
permissionsDescription: 'اسمح لعملاء MCP بالوصول إلى المجموعات والأدوات والموارد والمطالبات التالية.',
|
|
22
|
+
prompts: 'المطالبات',
|
|
23
|
+
resources: 'الموارد',
|
|
24
|
+
server: 'الخادم',
|
|
25
|
+
title: 'العنوان',
|
|
26
|
+
titleDescription: 'اسم مستعار مفيد لمفتاح API.',
|
|
27
|
+
tools: 'الأدوات',
|
|
28
|
+
userDescription: 'المستخدم الذي سيعمل MCP بصفته.',
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const ar: PluginLanguage = {
|
|
33
|
+
dateFNSKey: 'ar',
|
|
34
|
+
translations: arTranslations,
|
|
35
|
+
}
|