@payloadcms/plugin-mcp 3.86.0-internal.ac46214 → 4.0.0-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/README.md +2 -2
  2. package/bin.js +39 -0
  3. package/dist/collection/getAccessField.d.ts +12 -0
  4. package/dist/collection/getAccessField.d.ts.map +1 -0
  5. package/dist/collection/getAccessField.js +57 -0
  6. package/dist/collection/getAccessField.js.map +1 -0
  7. package/dist/collection/index.d.ts +6 -0
  8. package/dist/collection/index.d.ts.map +1 -0
  9. package/dist/collection/index.js +60 -0
  10. package/dist/collection/index.js.map +1 -0
  11. package/dist/components/AccessField/index.client.d.ts +10 -0
  12. package/dist/components/AccessField/index.client.d.ts.map +1 -0
  13. package/dist/components/AccessField/index.client.js +305 -0
  14. package/dist/components/AccessField/index.client.js.map +1 -0
  15. package/dist/components/AccessField/index.css +93 -0
  16. package/dist/defineTool.d.ts +26 -0
  17. package/dist/defineTool.d.ts.map +1 -0
  18. package/dist/defineTool.js +37 -0
  19. package/dist/defineTool.js.map +1 -0
  20. package/dist/endpoint/access.d.ts +10 -0
  21. package/dist/endpoint/access.d.ts.map +1 -0
  22. package/dist/endpoint/access.js +106 -0
  23. package/dist/endpoint/access.js.map +1 -0
  24. package/dist/endpoint/index.d.ts +3 -0
  25. package/dist/endpoint/index.d.ts.map +1 -0
  26. package/dist/endpoint/index.js +36 -0
  27. package/dist/endpoint/index.js.map +1 -0
  28. package/dist/exports/client.d.ts +2 -0
  29. package/dist/exports/client.d.ts.map +1 -0
  30. package/dist/exports/client.js +4 -0
  31. package/dist/exports/client.js.map +1 -0
  32. package/dist/index.d.ts +4 -7
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +44 -67
  35. package/dist/index.js.map +1 -1
  36. package/dist/mcp/buildMcpServer.d.ts +19 -0
  37. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  38. package/dist/mcp/buildMcpServer.js +199 -0
  39. package/dist/mcp/buildMcpServer.js.map +1 -0
  40. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  41. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  42. package/dist/mcp/builtin/collections/authTools.js +250 -0
  43. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  44. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  45. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  46. package/dist/mcp/builtin/collections/createTool.js +94 -0
  47. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  48. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  49. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  50. package/dist/mcp/builtin/collections/deleteTool.js +102 -0
  51. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  52. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  53. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  54. package/dist/mcp/builtin/collections/findTool.js +144 -0
  55. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  56. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  57. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  58. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  59. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  60. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  61. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  62. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +35 -0
  63. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  64. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  65. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  66. package/dist/mcp/builtin/collections/updateTool.js +199 -0
  67. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  68. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  69. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  70. package/dist/mcp/builtin/getConfigInfoTool.js +49 -0
  71. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  72. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  73. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  74. package/dist/mcp/builtin/globals/findTool.js +76 -0
  75. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  76. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  77. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  78. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +35 -0
  79. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  80. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  81. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  82. package/dist/mcp/builtin/globals/updateTool.js +94 -0
  83. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  84. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  85. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  86. package/dist/mcp/builtin/validateEntityData.js +82 -0
  87. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  88. package/dist/mcp/builtinTools.d.ts +105 -0
  89. package/dist/mcp/builtinTools.d.ts.map +1 -0
  90. package/dist/mcp/builtinTools.js +107 -0
  91. package/dist/mcp/builtinTools.js.map +1 -0
  92. package/dist/mcp/sanitizeMCPConfig.d.ts +17 -0
  93. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  94. package/dist/mcp/sanitizeMCPConfig.js +188 -0
  95. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  96. package/dist/stdio.d.ts +8 -0
  97. package/dist/stdio.d.ts.map +1 -0
  98. package/dist/stdio.js +89 -0
  99. package/dist/stdio.js.map +1 -0
  100. package/dist/types.d.ts +251 -455
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/types.js +6 -1
  103. package/dist/types.js.map +1 -1
  104. package/dist/utils/camelCase.d.ts.map +1 -1
  105. package/dist/utils/getLogger.d.ts +10 -0
  106. package/dist/utils/getLogger.d.ts.map +1 -0
  107. package/dist/utils/getLogger.js +22 -0
  108. package/dist/utils/getLogger.js.map +1 -0
  109. package/dist/utils/getPluginConfig.d.ts +12 -0
  110. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  111. package/dist/utils/getPluginConfig.js +15 -0
  112. package/dist/utils/getPluginConfig.js.map +1 -0
  113. package/dist/utils/localAPIDefaults.d.ts +20 -0
  114. package/dist/utils/localAPIDefaults.d.ts.map +1 -0
  115. package/dist/utils/localAPIDefaults.js +19 -0
  116. package/dist/utils/localAPIDefaults.js.map +1 -0
  117. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  118. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  119. package/dist/utils/resolveProjectRoot.js +15 -0
  120. package/dist/utils/resolveProjectRoot.js.map +1 -0
  121. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +11 -0
  122. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  123. package/dist/utils/schemaConversion/getEntityInputSchema.js +34 -0
  124. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  125. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +2 -2
  126. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +1 -1
  127. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +1 -1
  128. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
  129. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  130. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
  131. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  132. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
  133. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  134. package/dist/utils/toStandardSchema.d.ts +5 -0
  135. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  136. package/dist/utils/toStandardSchema.js +4 -0
  137. package/dist/utils/toStandardSchema.js.map +1 -0
  138. package/dist/utils/whereSchema.d.ts +9 -0
  139. package/dist/utils/whereSchema.d.ts.map +1 -0
  140. package/dist/utils/whereSchema.js +13 -0
  141. package/dist/utils/whereSchema.js.map +1 -0
  142. package/package.json +35 -10
  143. package/src/collection/getAccessField.ts +64 -0
  144. package/src/collection/index.ts +64 -0
  145. package/src/components/AccessField/index.client.tsx +347 -0
  146. package/src/components/AccessField/index.css +93 -0
  147. package/src/defineTool.ts +44 -0
  148. package/src/endpoint/access.ts +132 -0
  149. package/src/endpoint/index.ts +35 -0
  150. package/src/exports/client.ts +2 -0
  151. package/src/index.ts +35 -85
  152. package/src/mcp/buildMcpServer.ts +257 -0
  153. package/src/mcp/builtin/collections/authTools.ts +233 -0
  154. package/src/mcp/builtin/collections/createTool.ts +112 -0
  155. package/src/mcp/builtin/collections/deleteTool.ts +116 -0
  156. package/src/mcp/builtin/collections/findTool.ts +177 -0
  157. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  158. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +28 -0
  159. package/src/mcp/builtin/collections/updateTool.ts +211 -0
  160. package/src/mcp/builtin/getConfigInfoTool.ts +44 -0
  161. package/src/mcp/builtin/globals/findTool.ts +96 -0
  162. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +28 -0
  163. package/src/mcp/builtin/globals/updateTool.ts +115 -0
  164. package/src/mcp/builtin/validateEntityData.ts +132 -0
  165. package/src/mcp/builtinTools.ts +98 -0
  166. package/src/mcp/sanitizeMCPConfig.ts +260 -0
  167. package/src/stdio.ts +98 -0
  168. package/src/types.ts +290 -490
  169. package/src/utils/getLogger.ts +22 -0
  170. package/src/utils/getPluginConfig.ts +24 -0
  171. package/src/utils/localAPIDefaults.ts +22 -0
  172. package/src/utils/resolveProjectRoot.ts +17 -0
  173. package/src/utils/schemaConversion/getEntityInputSchema.ts +78 -0
  174. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +3 -3
  175. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
  176. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
  177. package/src/utils/toStandardSchema.ts +9 -0
  178. package/src/utils/whereSchema.ts +24 -0
  179. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  180. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  181. package/dist/collections/createApiKeysCollection.js +0 -317
  182. package/dist/collections/createApiKeysCollection.js.map +0 -1
  183. package/dist/defaults.d.ts +0 -4
  184. package/dist/defaults.d.ts.map +0 -1
  185. package/dist/defaults.js +0 -5
  186. package/dist/defaults.js.map +0 -1
  187. package/dist/endpoints/mcp.d.ts +0 -4
  188. package/dist/endpoints/mcp.d.ts.map +0 -1
  189. package/dist/endpoints/mcp.js +0 -71
  190. package/dist/endpoints/mcp.js.map +0 -1
  191. package/dist/mcp/createRequest.d.ts +0 -3
  192. package/dist/mcp/createRequest.d.ts.map +0 -1
  193. package/dist/mcp/createRequest.js +0 -14
  194. package/dist/mcp/createRequest.js.map +0 -1
  195. package/dist/mcp/getMcpHandler.d.ts +0 -4
  196. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  197. package/dist/mcp/getMcpHandler.js +0 -231
  198. package/dist/mcp/getMcpHandler.js.map +0 -1
  199. package/dist/mcp/helpers/config.d.ts +0 -22
  200. package/dist/mcp/helpers/config.d.ts.map +0 -1
  201. package/dist/mcp/helpers/config.js +0 -153
  202. package/dist/mcp/helpers/config.js.map +0 -1
  203. package/dist/mcp/helpers/fields.d.ts +0 -19
  204. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  205. package/dist/mcp/helpers/fields.js +0 -102
  206. package/dist/mcp/helpers/fields.js.map +0 -1
  207. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  208. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  209. package/dist/mcp/helpers/fileValidation.js +0 -267
  210. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  211. package/dist/mcp/registerTool.d.ts +0 -6
  212. package/dist/mcp/registerTool.d.ts.map +0 -1
  213. package/dist/mcp/registerTool.js +0 -18
  214. package/dist/mcp/registerTool.js.map +0 -1
  215. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  216. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  217. package/dist/mcp/tools/auth/auth.js +0 -57
  218. package/dist/mcp/tools/auth/auth.js.map +0 -1
  219. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  220. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  221. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  222. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  223. package/dist/mcp/tools/auth/login.d.ts +0 -4
  224. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  225. package/dist/mcp/tools/auth/login.js +0 -51
  226. package/dist/mcp/tools/auth/login.js.map +0 -1
  227. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  228. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  229. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  230. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  231. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  232. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  233. package/dist/mcp/tools/auth/unlock.js +0 -48
  234. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  235. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  236. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  237. package/dist/mcp/tools/auth/verify.js +0 -45
  238. package/dist/mcp/tools/auth/verify.js.map +0 -1
  239. package/dist/mcp/tools/collection/create.d.ts +0 -10
  240. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  241. package/dist/mcp/tools/collection/create.js +0 -139
  242. package/dist/mcp/tools/collection/create.js.map +0 -1
  243. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  244. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  245. package/dist/mcp/tools/collection/delete.js +0 -154
  246. package/dist/mcp/tools/collection/delete.js.map +0 -1
  247. package/dist/mcp/tools/collection/find.d.ts +0 -10
  248. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  249. package/dist/mcp/tools/collection/find.js +0 -165
  250. package/dist/mcp/tools/collection/find.js.map +0 -1
  251. package/dist/mcp/tools/collection/update.d.ts +0 -10
  252. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  253. package/dist/mcp/tools/collection/update.js +0 -209
  254. package/dist/mcp/tools/collection/update.js.map +0 -1
  255. package/dist/mcp/tools/config/find.d.ts +0 -10
  256. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  257. package/dist/mcp/tools/config/find.js +0 -97
  258. package/dist/mcp/tools/config/find.js.map +0 -1
  259. package/dist/mcp/tools/config/update.d.ts +0 -10
  260. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  261. package/dist/mcp/tools/config/update.js +0 -215
  262. package/dist/mcp/tools/config/update.js.map +0 -1
  263. package/dist/mcp/tools/global/find.d.ts +0 -5
  264. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  265. package/dist/mcp/tools/global/find.js +0 -82
  266. package/dist/mcp/tools/global/find.js.map +0 -1
  267. package/dist/mcp/tools/global/update.d.ts +0 -6
  268. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  269. package/dist/mcp/tools/global/update.js +0 -124
  270. package/dist/mcp/tools/global/update.js.map +0 -1
  271. package/dist/mcp/tools/job/create.d.ts +0 -10
  272. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  273. package/dist/mcp/tools/job/create.js +0 -293
  274. package/dist/mcp/tools/job/create.js.map +0 -1
  275. package/dist/mcp/tools/job/run.d.ts +0 -10
  276. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  277. package/dist/mcp/tools/job/run.js +0 -129
  278. package/dist/mcp/tools/job/run.js.map +0 -1
  279. package/dist/mcp/tools/job/update.d.ts +0 -11
  280. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  281. package/dist/mcp/tools/job/update.js +0 -186
  282. package/dist/mcp/tools/job/update.js.map +0 -1
  283. package/dist/mcp/tools/resource/create.d.ts +0 -6
  284. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  285. package/dist/mcp/tools/resource/create.js +0 -124
  286. package/dist/mcp/tools/resource/create.js.map +0 -1
  287. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  288. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  289. package/dist/mcp/tools/resource/delete.js +0 -151
  290. package/dist/mcp/tools/resource/delete.js.map +0 -1
  291. package/dist/mcp/tools/resource/find.d.ts +0 -5
  292. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  293. package/dist/mcp/tools/resource/find.js +0 -170
  294. package/dist/mcp/tools/resource/find.js.map +0 -1
  295. package/dist/mcp/tools/resource/update.d.ts +0 -6
  296. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  297. package/dist/mcp/tools/resource/update.js +0 -256
  298. package/dist/mcp/tools/resource/update.js.map +0 -1
  299. package/dist/mcp/tools/schemas.d.ts +0 -457
  300. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  301. package/dist/mcp/tools/schemas.js +0 -243
  302. package/dist/mcp/tools/schemas.js.map +0 -1
  303. package/dist/utils/adminEntitySettings.d.ts +0 -17
  304. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  305. package/dist/utils/adminEntitySettings.js +0 -41
  306. package/dist/utils/adminEntitySettings.js.map +0 -1
  307. package/dist/utils/createApiKeyFields.d.ts +0 -15
  308. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  309. package/dist/utils/createApiKeyFields.js +0 -57
  310. package/dist/utils/createApiKeyFields.js.map +0 -1
  311. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  312. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  313. package/dist/utils/getEnabledSlugs.js +0 -32
  314. package/dist/utils/getEnabledSlugs.js.map +0 -1
  315. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  316. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  317. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  318. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  319. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  320. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  321. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  322. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  323. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  324. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  325. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  326. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  327. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  328. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  329. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  330. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  331. package/src/collections/createApiKeysCollection.ts +0 -373
  332. package/src/defaults.ts +0 -3
  333. package/src/endpoints/mcp.ts +0 -91
  334. package/src/mcp/createRequest.ts +0 -13
  335. package/src/mcp/getMcpHandler.ts +0 -545
  336. package/src/mcp/helpers/config.ts +0 -213
  337. package/src/mcp/helpers/fields.ts +0 -154
  338. package/src/mcp/helpers/fileValidation.ts +0 -362
  339. package/src/mcp/registerTool.ts +0 -22
  340. package/src/mcp/tools/auth/auth.ts +0 -71
  341. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  342. package/src/mcp/tools/auth/login.ts +0 -72
  343. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  344. package/src/mcp/tools/auth/unlock.ts +0 -64
  345. package/src/mcp/tools/auth/verify.ts +0 -57
  346. package/src/mcp/tools/collection/create.ts +0 -210
  347. package/src/mcp/tools/collection/delete.ts +0 -211
  348. package/src/mcp/tools/collection/find.ts +0 -224
  349. package/src/mcp/tools/collection/update.ts +0 -290
  350. package/src/mcp/tools/config/find.ts +0 -128
  351. package/src/mcp/tools/config/update.ts +0 -280
  352. package/src/mcp/tools/global/find.ts +0 -128
  353. package/src/mcp/tools/global/update.ts +0 -207
  354. package/src/mcp/tools/job/create.ts +0 -416
  355. package/src/mcp/tools/job/run.ts +0 -167
  356. package/src/mcp/tools/job/update.ts +0 -274
  357. package/src/mcp/tools/resource/create.ts +0 -211
  358. package/src/mcp/tools/resource/delete.ts +0 -218
  359. package/src/mcp/tools/resource/find.ts +0 -246
  360. package/src/mcp/tools/resource/update.ts +0 -383
  361. package/src/mcp/tools/schemas.ts +0 -520
  362. package/src/utils/adminEntitySettings.ts +0 -40
  363. package/src/utils/createApiKeyFields.ts +0 -72
  364. package/src/utils/getEnabledSlugs.ts +0 -42
  365. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  366. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  367. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  368. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
@@ -1 +0,0 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/config/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,eAAO,MAAM,cAAc,QACpB,cAAc,eACN,OAAO,kBACJ,MAAM,oBACL,OAAO;;;;;CAmEzB,CAAA;AAGD,eAAO,MAAM,cAAc,WACjB,SAAS,OACZ,cAAc,eACN,OAAO,kBACJ,MAAM,SA0CvB,CAAA"}
@@ -1,97 +0,0 @@
1
- import { readFileSync, statSync } from 'fs';
2
- import { toolSchemas } from '../schemas.js';
3
- export const readConfigFile = (req, verboseLogs, configFilePath, includeMetadata = false)=>{
4
- const payload = req.payload;
5
- if (verboseLogs) {
6
- payload.logger.info(`[payload-mcp] Reading config file, includeMetadata: ${includeMetadata}`);
7
- }
8
- try {
9
- // Security check: ensure we're working with the specified config file
10
- if (!configFilePath.startsWith(process.cwd()) && !configFilePath.startsWith('/')) {
11
- payload.logger.error(`[payload-mcp] Invalid config path attempted: ${configFilePath}`);
12
- return {
13
- content: [
14
- {
15
- type: 'text',
16
- text: '❌ **Error**: Invalid config path'
17
- }
18
- ]
19
- };
20
- }
21
- const content = readFileSync(configFilePath, 'utf8');
22
- const stats = statSync(configFilePath);
23
- if (verboseLogs) {
24
- payload.logger.info(`[payload-mcp] Successfully read config file. Size: ${stats.size} bytes`);
25
- }
26
- let responseText = `# Payload Configuration
27
-
28
- **File**: \`${configFilePath}\``;
29
- if (includeMetadata) {
30
- responseText += `
31
- **Size**: ${stats.size.toLocaleString()} bytes
32
- **Modified**: ${stats.mtime.toISOString()}
33
- **Created**: ${stats.birthtime.toISOString()}`;
34
- }
35
- responseText += `
36
- ---
37
-
38
- **Configuration Content:**
39
- \`\`\`typescript
40
- ${content}
41
- \`\`\``;
42
- return {
43
- content: [
44
- {
45
- type: 'text',
46
- text: responseText
47
- }
48
- ]
49
- };
50
- } catch (error) {
51
- const errorMessage = error.message;
52
- payload.logger.error(`[payload-mcp] Error reading config file: ${errorMessage}`);
53
- return {
54
- content: [
55
- {
56
- type: 'text',
57
- text: `❌ **Error reading config file**: ${errorMessage}`
58
- }
59
- ]
60
- };
61
- }
62
- };
63
- // MCP Server tool registration
64
- export const findConfigTool = (server, req, verboseLogs, configFilePath)=>{
65
- const tool = (includeMetadata = false)=>{
66
- const payload = req.payload;
67
- if (verboseLogs) {
68
- payload.logger.info(`[payload-mcp] Finding config, includeMetadata: ${includeMetadata}`);
69
- }
70
- try {
71
- const result = readConfigFile(req, verboseLogs, configFilePath, includeMetadata);
72
- if (verboseLogs) {
73
- payload.logger.info(`[payload-mcp] Config search completed`);
74
- }
75
- return result;
76
- } catch (error) {
77
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
78
- payload.logger.error(`[payload-mcp] Error finding config: ${errorMessage}`);
79
- return {
80
- content: [
81
- {
82
- type: 'text',
83
- text: `Error finding config: ${errorMessage}`
84
- }
85
- ]
86
- };
87
- }
88
- };
89
- server.registerTool('findConfig', {
90
- description: toolSchemas.findConfig.description,
91
- inputSchema: toolSchemas.findConfig.parameters.shape
92
- }, ({ includeMetadata })=>{
93
- return tool(includeMetadata);
94
- });
95
- };
96
-
97
- //# sourceMappingURL=find.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/config/find.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { readFileSync, statSync } from 'fs'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const readConfigFile = (\n req: PayloadRequest,\n verboseLogs: boolean,\n configFilePath: string,\n includeMetadata: boolean = false,\n) => {\n const payload = req.payload\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Reading config file, includeMetadata: ${includeMetadata}`)\n }\n\n try {\n // Security check: ensure we're working with the specified config file\n if (!configFilePath.startsWith(process.cwd()) && !configFilePath.startsWith('/')) {\n payload.logger.error(`[payload-mcp] Invalid config path attempted: ${configFilePath}`)\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: Invalid config path',\n },\n ],\n }\n }\n\n const content = readFileSync(configFilePath, 'utf8')\n const stats = statSync(configFilePath)\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Successfully read config file. Size: ${stats.size} bytes`)\n }\n\n let responseText = `# Payload Configuration\n\n**File**: \\`${configFilePath}\\``\n\n if (includeMetadata) {\n responseText += `\n**Size**: ${stats.size.toLocaleString()} bytes\n**Modified**: ${stats.mtime.toISOString()}\n**Created**: ${stats.birthtime.toISOString()}`\n }\n\n responseText += `\n---\n\n**Configuration Content:**\n\\`\\`\\`typescript\n${content}\n\\`\\`\\``\n\n return {\n content: [\n {\n type: 'text' as const,\n text: responseText,\n },\n ],\n }\n } catch (error) {\n const errorMessage = (error as Error).message\n payload.logger.error(`[payload-mcp] Error reading config file: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error reading config file**: ${errorMessage}`,\n },\n ],\n }\n }\n}\n\n// MCP Server tool registration\nexport const findConfigTool = (\n server: McpServer,\n req: PayloadRequest,\n verboseLogs: boolean,\n configFilePath: string,\n) => {\n const tool = (includeMetadata: boolean = false) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Finding config, includeMetadata: ${includeMetadata}`)\n }\n\n try {\n const result = readConfigFile(req, verboseLogs, configFilePath, includeMetadata)\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Config search completed`)\n }\n\n return result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error finding config: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error finding config: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'findConfig',\n {\n description: toolSchemas.findConfig.description,\n inputSchema: toolSchemas.findConfig.parameters.shape,\n },\n ({ includeMetadata }) => {\n return tool(includeMetadata)\n },\n )\n}\n"],"names":["readFileSync","statSync","toolSchemas","readConfigFile","req","verboseLogs","configFilePath","includeMetadata","payload","logger","info","startsWith","process","cwd","error","content","type","text","stats","size","responseText","toLocaleString","mtime","toISOString","birthtime","errorMessage","message","findConfigTool","server","tool","result","Error","registerTool","description","findConfig","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,YAAY,EAAEC,QAAQ,QAAQ,KAAI;AAE3C,SAASC,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,iBAAiB,CAC5BC,KACAC,aACAC,gBACAC,kBAA2B,KAAK;IAEhC,MAAMC,UAAUJ,IAAII,OAAO;IAC3B,IAAIH,aAAa;QACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,oDAAoD,EAAEH,iBAAiB;IAC9F;IAEA,IAAI;QACF,sEAAsE;QACtE,IAAI,CAACD,eAAeK,UAAU,CAACC,QAAQC,GAAG,OAAO,CAACP,eAAeK,UAAU,CAAC,MAAM;YAChFH,QAAQC,MAAM,CAACK,KAAK,CAAC,CAAC,6CAA6C,EAAER,gBAAgB;YACrF,OAAO;gBACLS,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM;oBACR;iBACD;YACH;QACF;QAEA,MAAMF,UAAUf,aAAaM,gBAAgB;QAC7C,MAAMY,QAAQjB,SAASK;QAEvB,IAAID,aAAa;YACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,mDAAmD,EAAEQ,MAAMC,IAAI,CAAC,MAAM,CAAC;QAC9F;QAEA,IAAIC,eAAe,CAAC;;YAEZ,EAAEd,eAAe,EAAE,CAAC;QAE5B,IAAIC,iBAAiB;YACnBa,gBAAgB,CAAC;UACb,EAAEF,MAAMC,IAAI,CAACE,cAAc,GAAG;cAC1B,EAAEH,MAAMI,KAAK,CAACC,WAAW,GAAG;aAC7B,EAAEL,MAAMM,SAAS,CAACD,WAAW,IAAI;QAC1C;QAEAH,gBAAgB,CAAC;;;;;AAKrB,EAAEL,QAAQ;MACJ,CAAC;QAEH,OAAO;YACLA,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAMG;gBACR;aACD;QACH;IACF,EAAE,OAAON,OAAO;QACd,MAAMW,eAAe,AAACX,MAAgBY,OAAO;QAC7ClB,QAAQC,MAAM,CAACK,KAAK,CAAC,CAAC,yCAAyC,EAAEW,cAAc;QAC/E,OAAO;YACLV,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,iCAAiC,EAAEQ,cAAc;gBAC1D;aACD;QACH;IACF;AACF,EAAC;AAED,+BAA+B;AAC/B,OAAO,MAAME,iBAAiB,CAC5BC,QACAxB,KACAC,aACAC;IAEA,MAAMuB,OAAO,CAACtB,kBAA2B,KAAK;QAC5C,MAAMC,UAAUJ,IAAII,OAAO;QAE3B,IAAIH,aAAa;YACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,+CAA+C,EAAEH,iBAAiB;QACzF;QAEA,IAAI;YACF,MAAMuB,SAAS3B,eAAeC,KAAKC,aAAaC,gBAAgBC;YAEhE,IAAIF,aAAa;gBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,qCAAqC,CAAC;YAC7D;YAEA,OAAOoB;QACT,EAAE,OAAOhB,OAAO;YACd,MAAMW,eAAeX,iBAAiBiB,QAAQjB,MAAMY,OAAO,GAAG;YAC9DlB,QAAQC,MAAM,CAACK,KAAK,CAAC,CAAC,oCAAoC,EAAEW,cAAc;YAE1E,OAAO;gBACLV,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,sBAAsB,EAAEQ,cAAc;oBAC/C;iBACD;YACH;QACF;IACF;IAEAG,OAAOI,YAAY,CACjB,cACA;QACEC,aAAa/B,YAAYgC,UAAU,CAACD,WAAW;QAC/CE,aAAajC,YAAYgC,UAAU,CAACE,UAAU,CAACC,KAAK;IACtD,GACA,CAAC,EAAE9B,eAAe,EAAE;QAClB,OAAOsB,KAAKtB;IACd;AAEJ,EAAC"}
@@ -1,10 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { PayloadRequest } from 'payload';
3
- export declare const updateConfig: (req: PayloadRequest, verboseLogs: boolean, configFilePath: string, updateType: string, collectionName?: string, adminConfig?: any, databaseConfig?: any, pluginUpdates?: any, newContent?: string) => {
4
- content: {
5
- type: "text";
6
- text: string;
7
- }[];
8
- };
9
- export declare const updateConfigTool: (server: McpServer, req: PayloadRequest, verboseLogs: boolean, configFilePath: string) => void;
10
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/config/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAa7C,eAAO,MAAM,YAAY,QAClB,cAAc,eACN,OAAO,kBACJ,MAAM,cACV,MAAM,mBACD,MAAM,gBACT,GAAG,mBACA,GAAG,kBACJ,GAAG,eACN,MAAM;;;;;CAwLpB,CAAA;AAED,eAAO,MAAM,gBAAgB,WACnB,SAAS,OACZ,cAAc,eACN,OAAO,kBACJ,MAAM,SAkEvB,CAAA"}
@@ -1,215 +0,0 @@
1
- import { readFileSync, writeFileSync } from 'fs';
2
- import { addCollectionToConfig, removeCollectionFromConfig, updateAdminConfig, updateDatabaseConfig, updatePluginsConfig } from '../../helpers/config.js';
3
- import { toolSchemas } from '../schemas.js';
4
- export const updateConfig = (req, verboseLogs, configFilePath, updateType, collectionName, adminConfig, databaseConfig, pluginUpdates, newContent)=>{
5
- const payload = req.payload;
6
- if (verboseLogs) {
7
- payload.logger.info(`[payload-mcp] Updating config with update type: ${updateType}`);
8
- }
9
- // Security check: ensure we're working with the specified config file
10
- if (!configFilePath.startsWith(process.cwd()) && !configFilePath.startsWith('/')) {
11
- payload.logger.error(`[payload-mcp] Invalid config path attempted: ${configFilePath}`);
12
- return {
13
- content: [
14
- {
15
- type: 'text',
16
- text: '❌ **Error**: Invalid config path'
17
- }
18
- ]
19
- };
20
- }
21
- try {
22
- // Read current config
23
- let currentContent;
24
- try {
25
- currentContent = readFileSync(configFilePath, 'utf8');
26
- } catch (_ignore) {
27
- return {
28
- content: [
29
- {
30
- type: 'text',
31
- text: `❌ **Error**: Config file not found: ${configFilePath}`
32
- }
33
- ]
34
- };
35
- }
36
- let updatedContent;
37
- let updateSummary = [];
38
- switch(updateType){
39
- case 'add_collection':
40
- if (!collectionName) {
41
- return {
42
- content: [
43
- {
44
- type: 'text',
45
- text: '❌ **Error**: No collection name provided for add_collection update type'
46
- }
47
- ]
48
- };
49
- }
50
- updatedContent = addCollectionToConfig(currentContent, collectionName);
51
- updateSummary = [
52
- `Added collection: ${collectionName}`
53
- ];
54
- break;
55
- case 'remove_collection':
56
- if (!collectionName) {
57
- return {
58
- content: [
59
- {
60
- type: 'text',
61
- text: '❌ **Error**: No collection name provided for remove_collection update type'
62
- }
63
- ]
64
- };
65
- }
66
- updatedContent = removeCollectionFromConfig(currentContent, collectionName);
67
- updateSummary = [
68
- `Removed collection: ${collectionName}`
69
- ];
70
- break;
71
- case 'replace_content':
72
- if (!newContent) {
73
- return {
74
- content: [
75
- {
76
- type: 'text',
77
- text: '❌ **Error**: No new content provided for replace_content update type'
78
- }
79
- ]
80
- };
81
- }
82
- updatedContent = newContent;
83
- updateSummary = [
84
- 'Replaced entire config content'
85
- ];
86
- break;
87
- case 'update_admin':
88
- if (!adminConfig) {
89
- return {
90
- content: [
91
- {
92
- type: 'text',
93
- text: '❌ **Error**: No admin config provided for update_admin update type'
94
- }
95
- ]
96
- };
97
- }
98
- updatedContent = updateAdminConfig(currentContent, adminConfig);
99
- updateSummary = Object.keys(adminConfig).map((key)=>`Updated admin config: ${key}`);
100
- break;
101
- case 'update_database':
102
- if (!databaseConfig) {
103
- return {
104
- content: [
105
- {
106
- type: 'text',
107
- text: '❌ **Error**: No database config provided for update_database update type'
108
- }
109
- ]
110
- };
111
- }
112
- updatedContent = updateDatabaseConfig(currentContent, databaseConfig);
113
- updateSummary = Object.keys(databaseConfig).map((key)=>`Updated database config: ${key}`);
114
- break;
115
- case 'update_plugins':
116
- if (!pluginUpdates) {
117
- return {
118
- content: [
119
- {
120
- type: 'text',
121
- text: '❌ **Error**: No plugin updates provided for update_plugins update type'
122
- }
123
- ]
124
- };
125
- }
126
- updatedContent = updatePluginsConfig(currentContent, pluginUpdates);
127
- updateSummary = [];
128
- if (pluginUpdates.add) {
129
- updateSummary.push(`Added plugins: ${pluginUpdates.add.join(', ')}`);
130
- }
131
- if (pluginUpdates.remove) {
132
- updateSummary.push(`Removed plugins: ${pluginUpdates.remove.join(', ')}`);
133
- }
134
- break;
135
- default:
136
- return {
137
- content: [
138
- {
139
- type: 'text',
140
- text: `❌ **Error**: Unknown update type: ${updateType}`
141
- }
142
- ]
143
- };
144
- }
145
- // Write the updated content back to the file
146
- writeFileSync(configFilePath, updatedContent, 'utf8');
147
- if (verboseLogs) {
148
- payload.logger.info(`[payload-mcp] Successfully updated config file: ${configFilePath}`);
149
- }
150
- return {
151
- content: [
152
- {
153
- type: 'text',
154
- text: `✅ **Config updated successfully!**
155
-
156
- **File**: \`${configFilePath}\`
157
- **Update Type**: ${updateType}
158
-
159
- **Changes Made**:
160
- ${updateSummary.map((summary)=>`- ${summary}`).join('\n')}
161
-
162
- **Updated Config Content:**
163
- \`\`\`typescript
164
- ${updatedContent}
165
- \`\`\``
166
- }
167
- ]
168
- };
169
- } catch (error) {
170
- const errorMessage = error.message;
171
- payload.logger.error(`[payload-mcp] Error updating config: ${errorMessage}`);
172
- return {
173
- content: [
174
- {
175
- type: 'text',
176
- text: `❌ **Error updating config**: ${errorMessage}`
177
- }
178
- ]
179
- };
180
- }
181
- };
182
- export const updateConfigTool = (server, req, verboseLogs, configFilePath)=>{
183
- const tool = ({ adminConfig, collectionName, databaseConfig, newContent, pluginUpdates, updateType })=>{
184
- const payload = req.payload;
185
- if (verboseLogs) {
186
- payload.logger.info(`[payload-mcp] Updating config: ${updateType}`);
187
- }
188
- try {
189
- const result = updateConfig(req, verboseLogs, configFilePath, updateType, collectionName, adminConfig, databaseConfig, pluginUpdates, newContent);
190
- if (verboseLogs) {
191
- payload.logger.info(`[payload-mcp] Config update completed for: ${updateType}`);
192
- }
193
- return result;
194
- } catch (error) {
195
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
196
- payload.logger.error(`[payload-mcp] Error updating config: ${errorMessage}`);
197
- return {
198
- content: [
199
- {
200
- type: 'text',
201
- text: `Error updating config: ${errorMessage}`
202
- }
203
- ]
204
- };
205
- }
206
- };
207
- server.registerTool('updateConfig', {
208
- description: toolSchemas.updateConfig.description,
209
- inputSchema: toolSchemas.updateConfig.parameters.shape
210
- }, (args)=>{
211
- return tool(args);
212
- });
213
- };
214
-
215
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/config/update.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { readFileSync, writeFileSync } from 'fs'\n\nimport {\n addCollectionToConfig,\n removeCollectionFromConfig,\n updateAdminConfig,\n updateDatabaseConfig,\n updatePluginsConfig,\n} from '../../helpers/config.js'\nimport { toolSchemas } from '../schemas.js'\n\nexport const updateConfig = (\n req: PayloadRequest,\n verboseLogs: boolean,\n configFilePath: string,\n updateType: string,\n collectionName?: string,\n adminConfig?: any,\n databaseConfig?: any,\n pluginUpdates?: any,\n newContent?: string,\n) => {\n const payload = req.payload\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Updating config with update type: ${updateType}`)\n }\n\n // Security check: ensure we're working with the specified config file\n if (!configFilePath.startsWith(process.cwd()) && !configFilePath.startsWith('/')) {\n payload.logger.error(`[payload-mcp] Invalid config path attempted: ${configFilePath}`)\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: Invalid config path',\n },\n ],\n }\n }\n\n try {\n // Read current config\n let currentContent: string\n try {\n currentContent = readFileSync(configFilePath, 'utf8')\n } catch (_ignore) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error**: Config file not found: ${configFilePath}`,\n },\n ],\n }\n }\n\n let updatedContent: string\n let updateSummary: string[] = []\n\n switch (updateType) {\n case 'add_collection':\n if (!collectionName) {\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: No collection name provided for add_collection update type',\n },\n ],\n }\n }\n updatedContent = addCollectionToConfig(currentContent, collectionName)\n updateSummary = [`Added collection: ${collectionName}`]\n break\n\n case 'remove_collection':\n if (!collectionName) {\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: No collection name provided for remove_collection update type',\n },\n ],\n }\n }\n updatedContent = removeCollectionFromConfig(currentContent, collectionName)\n updateSummary = [`Removed collection: ${collectionName}`]\n break\n\n case 'replace_content':\n if (!newContent) {\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: No new content provided for replace_content update type',\n },\n ],\n }\n }\n updatedContent = newContent\n updateSummary = ['Replaced entire config content']\n break\n\n case 'update_admin':\n if (!adminConfig) {\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: No admin config provided for update_admin update type',\n },\n ],\n }\n }\n updatedContent = updateAdminConfig(currentContent, adminConfig)\n updateSummary = Object.keys(adminConfig).map((key) => `Updated admin config: ${key}`)\n break\n\n case 'update_database':\n if (!databaseConfig) {\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: No database config provided for update_database update type',\n },\n ],\n }\n }\n updatedContent = updateDatabaseConfig(currentContent, databaseConfig)\n updateSummary = Object.keys(databaseConfig).map((key) => `Updated database config: ${key}`)\n break\n\n case 'update_plugins':\n if (!pluginUpdates) {\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: No plugin updates provided for update_plugins update type',\n },\n ],\n }\n }\n updatedContent = updatePluginsConfig(currentContent, pluginUpdates)\n updateSummary = []\n if (pluginUpdates.add) {\n updateSummary.push(`Added plugins: ${pluginUpdates.add.join(', ')}`)\n }\n if (pluginUpdates.remove) {\n updateSummary.push(`Removed plugins: ${pluginUpdates.remove.join(', ')}`)\n }\n break\n\n default:\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error**: Unknown update type: ${updateType}`,\n },\n ],\n }\n }\n\n // Write the updated content back to the file\n writeFileSync(configFilePath, updatedContent, 'utf8')\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Successfully updated config file: ${configFilePath}`)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `✅ **Config updated successfully!**\n\n**File**: \\`${configFilePath}\\`\n**Update Type**: ${updateType}\n\n**Changes Made**:\n${updateSummary.map((summary) => `- ${summary}`).join('\\n')}\n\n**Updated Config Content:**\n\\`\\`\\`typescript\n${updatedContent}\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = (error as Error).message\n payload.logger.error(`[payload-mcp] Error updating config: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error updating config**: ${errorMessage}`,\n },\n ],\n }\n }\n}\n\nexport const updateConfigTool = (\n server: McpServer,\n req: PayloadRequest,\n verboseLogs: boolean,\n configFilePath: string,\n) => {\n const tool = ({\n adminConfig,\n collectionName,\n databaseConfig,\n newContent,\n pluginUpdates,\n updateType,\n }: {\n adminConfig?: any\n collectionName?: string\n databaseConfig?: any\n newContent?: string\n pluginUpdates?: any\n updateType: string\n }) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Updating config: ${updateType}`)\n }\n\n try {\n const result = updateConfig(\n req,\n verboseLogs,\n configFilePath,\n updateType,\n collectionName,\n adminConfig,\n databaseConfig,\n pluginUpdates,\n newContent,\n )\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Config update completed for: ${updateType}`)\n }\n\n return result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error updating config: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error updating config: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'updateConfig',\n {\n description: toolSchemas.updateConfig.description,\n inputSchema: toolSchemas.updateConfig.parameters.shape,\n },\n (args) => {\n return tool(args)\n },\n )\n}\n"],"names":["readFileSync","writeFileSync","addCollectionToConfig","removeCollectionFromConfig","updateAdminConfig","updateDatabaseConfig","updatePluginsConfig","toolSchemas","updateConfig","req","verboseLogs","configFilePath","updateType","collectionName","adminConfig","databaseConfig","pluginUpdates","newContent","payload","logger","info","startsWith","process","cwd","error","content","type","text","currentContent","_ignore","updatedContent","updateSummary","Object","keys","map","key","add","push","join","remove","summary","errorMessage","message","updateConfigTool","server","tool","result","Error","registerTool","description","inputSchema","parameters","shape","args"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { PayloadRequest, TypedUser } from 'payload';
3
- import type { MCPPluginConfig } from '../../../types.js';
4
- export declare const findGlobalTool: (server: McpServer, req: PayloadRequest, user: TypedUser, verboseLogs: boolean, globalSlug: string, globals: MCPPluginConfig["globals"]) => void;
5
- //# sourceMappingURL=find.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/global/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAc,SAAS,EAAE,MAAM,SAAS,CAAA;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAKxD,eAAO,MAAM,cAAc,WACjB,SAAS,OACZ,cAAc,QACb,SAAS,eACF,OAAO,cACR,MAAM,WACT,eAAe,CAAC,SAAS,CAAC,SAiHpC,CAAA"}
@@ -1,82 +0,0 @@
1
- import { toCamelCase } from '../../../utils/camelCase.js';
2
- import { toolSchemas } from '../schemas.js';
3
- export const findGlobalTool = (server, req, user, verboseLogs, globalSlug, globals)=>{
4
- const tool = async (depth = 0, locale, fallbackLocale, select)=>{
5
- const payload = req.payload;
6
- if (verboseLogs) {
7
- payload.logger.info(`[payload-mcp] Reading global: ${globalSlug}, depth: ${depth}${locale ? `, locale: ${locale}` : ''}`);
8
- }
9
- try {
10
- const findOptions = {
11
- slug: globalSlug,
12
- depth,
13
- user
14
- };
15
- let selectClause;
16
- if (select) {
17
- try {
18
- selectClause = JSON.parse(select);
19
- } catch (_parseError) {
20
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON for global: ${select}`);
21
- const response = {
22
- content: [
23
- {
24
- type: 'text',
25
- text: 'Error: Invalid JSON in select clause'
26
- }
27
- ]
28
- };
29
- return globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response;
30
- }
31
- }
32
- // Add locale parameters if provided
33
- if (locale) {
34
- findOptions.locale = locale;
35
- }
36
- if (fallbackLocale) {
37
- findOptions.fallbackLocale = fallbackLocale;
38
- }
39
- if (selectClause) {
40
- findOptions.select = selectClause;
41
- }
42
- const result = await payload.findGlobal(findOptions);
43
- if (verboseLogs) {
44
- payload.logger.info(`[payload-mcp] Found global: ${globalSlug}`);
45
- }
46
- const response = {
47
- content: [
48
- {
49
- type: 'text',
50
- text: `Global "${globalSlug}":
51
- \`\`\`json
52
- ${JSON.stringify(result)}
53
- \`\`\``
54
- }
55
- ]
56
- };
57
- return globals?.[globalSlug]?.overrideResponse?.(response, result, req) || response;
58
- } catch (error) {
59
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
60
- payload.logger.error(`[payload-mcp] Error reading global ${globalSlug}: ${errorMessage}`);
61
- const response = {
62
- content: [
63
- {
64
- type: 'text',
65
- text: `❌ **Error reading global "${globalSlug}":** ${errorMessage}`
66
- }
67
- ]
68
- };
69
- return globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response;
70
- }
71
- };
72
- if (globals?.[globalSlug]?.enabled) {
73
- server.registerTool(`find${globalSlug.charAt(0).toUpperCase() + toCamelCase(globalSlug).slice(1)}`, {
74
- description: `${toolSchemas.findGlobal.description.trim()}\n\n${globals?.[globalSlug]?.description || ''}`,
75
- inputSchema: toolSchemas.findGlobal.parameters.shape
76
- }, async ({ depth, fallbackLocale, locale, select })=>{
77
- return await tool(depth, locale, fallbackLocale, select);
78
- });
79
- }
80
- };
81
-
82
- //# sourceMappingURL=find.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/global/find.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest, SelectType, TypedUser } from 'payload'\n\nimport type { MCPPluginConfig } from '../../../types.js'\n\nimport { toCamelCase } from '../../../utils/camelCase.js'\nimport { toolSchemas } from '../schemas.js'\n\nexport const findGlobalTool = (\n server: McpServer,\n req: PayloadRequest,\n user: TypedUser,\n verboseLogs: boolean,\n globalSlug: string,\n globals: MCPPluginConfig['globals'],\n) => {\n const tool = async (\n depth: number = 0,\n locale?: string,\n fallbackLocale?: string,\n select?: string,\n ): Promise<{\n content: Array<{\n text: string\n type: 'text'\n }>\n }> => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Reading global: ${globalSlug}, depth: ${depth}${locale ? `, locale: ${locale}` : ''}`,\n )\n }\n\n try {\n const findOptions: Parameters<typeof payload.findGlobal>[0] = {\n slug: globalSlug,\n depth,\n user,\n }\n\n let selectClause: SelectType | undefined\n if (select) {\n try {\n selectClause = JSON.parse(select) as SelectType\n } catch (_parseError) {\n payload.logger.warn(`[payload-mcp] Invalid select clause JSON for global: ${select}`)\n const response = {\n content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],\n }\n return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n }\n }\n\n // Add locale parameters if provided\n if (locale) {\n findOptions.locale = locale\n }\n if (fallbackLocale) {\n findOptions.fallbackLocale = fallbackLocale\n }\n if (selectClause) {\n findOptions.select = selectClause\n }\n\n const result = await payload.findGlobal(findOptions)\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Found global: ${globalSlug}`)\n }\n\n const response = {\n content: [\n {\n type: 'text' as const,\n text: `Global \"${globalSlug}\":\n\\`\\`\\`json\n${JSON.stringify(result)}\n\\`\\`\\``,\n },\n ],\n }\n\n return (globals?.[globalSlug]?.overrideResponse?.(response, result, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error reading global ${globalSlug}: ${errorMessage}`)\n const response = {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error reading global \"${globalSlug}\":** ${errorMessage}`,\n },\n ],\n }\n return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n }\n }\n\n if (globals?.[globalSlug]?.enabled) {\n server.registerTool(\n `find${globalSlug.charAt(0).toUpperCase() + toCamelCase(globalSlug).slice(1)}`,\n {\n description: `${toolSchemas.findGlobal.description.trim()}\\n\\n${globals?.[globalSlug]?.description || ''}`,\n inputSchema: toolSchemas.findGlobal.parameters.shape,\n },\n async ({ depth, fallbackLocale, locale, select }) => {\n return await tool(depth, locale, fallbackLocale, select)\n },\n )\n }\n}\n"],"names":["toCamelCase","toolSchemas","findGlobalTool","server","req","user","verboseLogs","globalSlug","globals","tool","depth","locale","fallbackLocale","select","payload","logger","info","findOptions","slug","selectClause","JSON","parse","_parseError","warn","response","content","type","text","overrideResponse","result","findGlobal","stringify","error","errorMessage","Error","message","enabled","registerTool","charAt","toUpperCase","slice","description","trim","inputSchema","parameters","shape"],"mappings":"AAKA,SAASA,WAAW,QAAQ,8BAA6B;AACzD,SAASC,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,iBAAiB,CAC5BC,QACAC,KACAC,MACAC,aACAC,YACAC;IAEA,MAAMC,OAAO,OACXC,QAAgB,CAAC,EACjBC,QACAC,gBACAC;QAOA,MAAMC,UAAUV,IAAIU,OAAO;QAE3B,IAAIR,aAAa;YACfQ,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,8BAA8B,EAAET,WAAW,SAAS,EAAEG,QAAQC,SAAS,CAAC,UAAU,EAAEA,QAAQ,GAAG,IAAI;QAExG;QAEA,IAAI;YACF,MAAMM,cAAwD;gBAC5DC,MAAMX;gBACNG;gBACAL;YACF;YAEA,IAAIc;YACJ,IAAIN,QAAQ;gBACV,IAAI;oBACFM,eAAeC,KAAKC,KAAK,CAACR;gBAC5B,EAAE,OAAOS,aAAa;oBACpBR,QAAQC,MAAM,CAACQ,IAAI,CAAC,CAAC,qDAAqD,EAAEV,QAAQ;oBACpF,MAAMW,WAAW;wBACfC,SAAS;4BAAC;gCAAEC,MAAM;gCAAiBC,MAAM;4BAAuC;yBAAE;oBACpF;oBACA,OAAQnB,SAAS,CAACD,WAAW,EAAEqB,mBAAmBJ,UAAU,CAAC,GAAGpB,QAAQoB;gBAM1E;YACF;YAEA,oCAAoC;YACpC,IAAIb,QAAQ;gBACVM,YAAYN,MAAM,GAAGA;YACvB;YACA,IAAIC,gBAAgB;gBAClBK,YAAYL,cAAc,GAAGA;YAC/B;YACA,IAAIO,cAAc;gBAChBF,YAAYJ,MAAM,GAAGM;YACvB;YAEA,MAAMU,SAAS,MAAMf,QAAQgB,UAAU,CAACb;YAExC,IAAIX,aAAa;gBACfQ,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,4BAA4B,EAAET,YAAY;YACjE;YAEA,MAAMiB,WAAW;gBACfC,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,QAAQ,EAAEpB,WAAW;;AAExC,EAAEa,KAAKW,SAAS,CAACF,QAAQ;MACnB,CAAC;oBACG;iBACD;YACH;YAEA,OAAQrB,SAAS,CAACD,WAAW,EAAEqB,mBAAmBJ,UAAUK,QAAQzB,QAAQoB;QAM9E,EAAE,OAAOQ,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9DrB,QAAQC,MAAM,CAACiB,KAAK,CAAC,CAAC,mCAAmC,EAAEzB,WAAW,EAAE,EAAE0B,cAAc;YACxF,MAAMT,WAAW;gBACfC,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,0BAA0B,EAAEpB,WAAW,KAAK,EAAE0B,cAAc;oBACrE;iBACD;YACH;YACA,OAAQzB,SAAS,CAACD,WAAW,EAAEqB,mBAAmBJ,UAAU,CAAC,GAAGpB,QAAQoB;QAM1E;IACF;IAEA,IAAIhB,SAAS,CAACD,WAAW,EAAE6B,SAAS;QAClCjC,OAAOkC,YAAY,CACjB,CAAC,IAAI,EAAE9B,WAAW+B,MAAM,CAAC,GAAGC,WAAW,KAAKvC,YAAYO,YAAYiC,KAAK,CAAC,IAAI,EAC9E;YACEC,aAAa,GAAGxC,YAAY6B,UAAU,CAACW,WAAW,CAACC,IAAI,GAAG,IAAI,EAAElC,SAAS,CAACD,WAAW,EAAEkC,eAAe,IAAI;YAC1GE,aAAa1C,YAAY6B,UAAU,CAACc,UAAU,CAACC,KAAK;QACtD,GACA,OAAO,EAAEnC,KAAK,EAAEE,cAAc,EAAED,MAAM,EAAEE,MAAM,EAAE;YAC9C,OAAO,MAAMJ,KAAKC,OAAOC,QAAQC,gBAAgBC;QACnD;IAEJ;AACF,EAAC"}
@@ -1,6 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { JSONSchema4 } from 'json-schema';
3
- import type { PayloadRequest, TypedUser } from 'payload';
4
- import type { MCPPluginConfig } from '../../../types.js';
5
- export declare const updateGlobalTool: (server: McpServer, req: PayloadRequest, user: TypedUser, verboseLogs: boolean, globalSlug: string, globals: MCPPluginConfig["globals"], schema: JSONSchema4) => void;
6
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/global/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAc,SAAS,EAAE,MAAM,SAAS,CAAA;AAIpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAUxD,eAAO,MAAM,gBAAgB,WACnB,SAAS,OACZ,cAAc,QACb,SAAS,eACF,OAAO,cACR,MAAM,WACT,eAAe,CAAC,SAAS,CAAC,UAC3B,WAAW,SAuLpB,CAAA"}
@@ -1,124 +0,0 @@
1
- import { z } from 'zod';
2
- import { toCamelCase } from '../../../utils/camelCase.js';
3
- import { getGlobalVirtualFieldNames, stripVirtualFields } from '../../../utils/getVirtualFieldNames.js';
4
- import { convertCollectionSchemaToZod } from '../../../utils/schemaConversion/convertCollectionSchemaToZod.js';
5
- import { toolSchemas } from '../schemas.js';
6
- export const updateGlobalTool = (server, req, user, verboseLogs, globalSlug, globals, schema)=>{
7
- const tool = async (data, draft = false, depth = 0, locale, fallbackLocale, select)=>{
8
- const payload = req.payload;
9
- if (verboseLogs) {
10
- payload.logger.info(`[payload-mcp] Updating global: ${globalSlug}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`);
11
- }
12
- try {
13
- // Parse the data JSON
14
- let parsedData;
15
- try {
16
- parsedData = JSON.parse(data);
17
- const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, globalSlug);
18
- parsedData = stripVirtualFields(parsedData, virtualFieldNames);
19
- if (verboseLogs) {
20
- payload.logger.info(`[payload-mcp] Parsed data for ${globalSlug}: ${JSON.stringify(parsedData)}`);
21
- }
22
- } catch (_parseError) {
23
- payload.logger.error(`[payload-mcp] Invalid JSON data provided: ${data}`);
24
- const response = {
25
- content: [
26
- {
27
- type: 'text',
28
- text: 'Error: Invalid JSON data provided'
29
- }
30
- ]
31
- };
32
- return globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response;
33
- }
34
- let selectClause;
35
- if (select) {
36
- try {
37
- selectClause = JSON.parse(select);
38
- } catch (_parseError) {
39
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON for global: ${select}`);
40
- const response = {
41
- content: [
42
- {
43
- type: 'text',
44
- text: 'Error: Invalid JSON in select clause'
45
- }
46
- ]
47
- };
48
- return globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response;
49
- }
50
- }
51
- const updateOptions = {
52
- slug: globalSlug,
53
- data: parsedData,
54
- depth,
55
- draft,
56
- user
57
- };
58
- // Add locale parameters if provided
59
- if (locale) {
60
- updateOptions.locale = locale;
61
- }
62
- if (fallbackLocale) {
63
- updateOptions.fallbackLocale = fallbackLocale;
64
- }
65
- if (selectClause) {
66
- updateOptions.select = selectClause;
67
- }
68
- const result = await payload.updateGlobal(updateOptions);
69
- if (verboseLogs) {
70
- payload.logger.info(`[payload-mcp] Successfully updated global: ${globalSlug}`);
71
- }
72
- const response = {
73
- content: [
74
- {
75
- type: 'text',
76
- text: `Global "${globalSlug}" updated successfully!
77
- \`\`\`json
78
- ${JSON.stringify(result)}
79
- \`\`\``
80
- }
81
- ]
82
- };
83
- return globals?.[globalSlug]?.overrideResponse?.(response, result, req) || response;
84
- } catch (error) {
85
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
86
- payload.logger.error(`[payload-mcp] Error updating global ${globalSlug}: ${errorMessage}`);
87
- const response = {
88
- content: [
89
- {
90
- type: 'text',
91
- text: `Error updating global "${globalSlug}": ${errorMessage}`
92
- }
93
- ]
94
- };
95
- return globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response;
96
- }
97
- };
98
- if (globals?.[globalSlug]?.enabled) {
99
- const convertedFields = convertCollectionSchemaToZod(schema);
100
- // Make all fields optional for partial updates (PATCH-style)
101
- const optionalFields = Object.fromEntries(Object.entries(convertedFields.shape).map(([key, value])=>[
102
- key,
103
- value.optional()
104
- ]));
105
- const updateGlobalSchema = z.object({
106
- ...optionalFields,
107
- depth: z.number().optional().describe('Optional: Depth of relationships to populate'),
108
- draft: z.boolean().optional().describe('Optional: Whether to save as draft (default: false)'),
109
- fallbackLocale: z.string().optional().describe('Optional: fallback locale code to use when requested locale is not available'),
110
- locale: z.string().optional().describe('Optional: locale code to update data in (e.g., "en", "es"). Use "all" to update all locales for localized fields'),
111
- select: z.string().optional().describe('Optional: define exactly which fields you\'d like to return in the response (JSON), e.g., \'{"siteName": "My Site"}\'')
112
- });
113
- server.registerTool(`update${globalSlug.charAt(0).toUpperCase() + toCamelCase(globalSlug).slice(1)}`, {
114
- description: `${toolSchemas.updateGlobal.description.trim()}\n\n${globals?.[globalSlug]?.description || ''}`,
115
- inputSchema: updateGlobalSchema.shape
116
- }, async (params)=>{
117
- const { depth, draft, fallbackLocale, locale, select, ...rest } = params;
118
- const data = JSON.stringify(rest);
119
- return await tool(data, draft, depth, locale, fallbackLocale, select);
120
- });
121
- }
122
- };
123
-
124
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/global/update.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { JSONSchema4 } from 'json-schema'\nimport type { PayloadRequest, SelectType, TypedUser } from 'payload'\n\nimport { z } from 'zod'\n\nimport type { MCPPluginConfig } from '../../../types.js'\n\nimport { toCamelCase } from '../../../utils/camelCase.js'\nimport {\n getGlobalVirtualFieldNames,\n stripVirtualFields,\n} from '../../../utils/getVirtualFieldNames.js'\nimport { convertCollectionSchemaToZod } from '../../../utils/schemaConversion/convertCollectionSchemaToZod.js'\nimport { toolSchemas } from '../schemas.js'\n\nexport const updateGlobalTool = (\n server: McpServer,\n req: PayloadRequest,\n user: TypedUser,\n verboseLogs: boolean,\n globalSlug: string,\n globals: MCPPluginConfig['globals'],\n schema: JSONSchema4,\n) => {\n const tool = async (\n data: string,\n draft: boolean = false,\n depth: number = 0,\n locale?: string,\n fallbackLocale?: string,\n select?: string,\n ): Promise<{\n content: Array<{\n text: string\n type: 'text'\n }>\n }> => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Updating global: ${globalSlug}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,\n )\n }\n\n try {\n // Parse the data JSON\n let parsedData: Record<string, unknown>\n try {\n parsedData = JSON.parse(data)\n\n const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, globalSlug)\n parsedData = stripVirtualFields(parsedData, virtualFieldNames)\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Parsed data for ${globalSlug}: ${JSON.stringify(parsedData)}`,\n )\n }\n } catch (_parseError) {\n payload.logger.error(`[payload-mcp] Invalid JSON data provided: ${data}`)\n const response = {\n content: [{ type: 'text' as const, text: 'Error: Invalid JSON data provided' }],\n }\n return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n }\n\n let selectClause: SelectType | undefined\n if (select) {\n try {\n selectClause = JSON.parse(select) as SelectType\n } catch (_parseError) {\n payload.logger.warn(`[payload-mcp] Invalid select clause JSON for global: ${select}`)\n const response = {\n content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],\n }\n return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n }\n }\n\n const updateOptions: Parameters<typeof payload.updateGlobal>[0] = {\n slug: globalSlug,\n data: parsedData,\n depth,\n draft,\n user,\n }\n\n // Add locale parameters if provided\n if (locale) {\n updateOptions.locale = locale\n }\n if (fallbackLocale) {\n updateOptions.fallbackLocale = fallbackLocale\n }\n if (selectClause) {\n updateOptions.select = selectClause\n }\n\n const result = await payload.updateGlobal(updateOptions)\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Successfully updated global: ${globalSlug}`)\n }\n\n const response = {\n content: [\n {\n type: 'text' as const,\n text: `Global \"${globalSlug}\" updated successfully!\n\\`\\`\\`json\n${JSON.stringify(result)}\n\\`\\`\\``,\n },\n ],\n }\n\n return (globals?.[globalSlug]?.overrideResponse?.(response, result, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error updating global ${globalSlug}: ${errorMessage}`)\n\n const response = {\n content: [\n {\n type: 'text' as const,\n text: `Error updating global \"${globalSlug}\": ${errorMessage}`,\n },\n ],\n }\n\n return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {\n content: Array<{\n text: string\n type: 'text'\n }>\n }\n }\n }\n\n if (globals?.[globalSlug]?.enabled) {\n const convertedFields = convertCollectionSchemaToZod(schema)\n\n // Make all fields optional for partial updates (PATCH-style)\n const optionalFields = Object.fromEntries(\n Object.entries(convertedFields.shape).map(([key, value]) => [key, (value as any).optional()]),\n )\n\n const updateGlobalSchema = z.object({\n ...optionalFields,\n depth: z.number().optional().describe('Optional: Depth of relationships to populate'),\n draft: z.boolean().optional().describe('Optional: Whether to save as draft (default: false)'),\n fallbackLocale: z\n .string()\n .optional()\n .describe('Optional: fallback locale code to use when requested locale is not available'),\n locale: z\n .string()\n .optional()\n .describe(\n 'Optional: locale code to update data in (e.g., \"en\", \"es\"). Use \"all\" to update all locales for localized fields',\n ),\n select: z\n .string()\n .optional()\n .describe(\n 'Optional: define exactly which fields you\\'d like to return in the response (JSON), e.g., \\'{\"siteName\": \"My Site\"}\\'',\n ),\n })\n\n server.registerTool(\n `update${globalSlug.charAt(0).toUpperCase() + toCamelCase(globalSlug).slice(1)}`,\n {\n description: `${toolSchemas.updateGlobal.description.trim()}\\n\\n${globals?.[globalSlug]?.description || ''}`,\n inputSchema: updateGlobalSchema.shape,\n },\n async (params: Record<string, unknown>) => {\n const { depth, draft, fallbackLocale, locale, select, ...rest } = params\n const data = JSON.stringify(rest)\n return await tool(\n data,\n draft as boolean,\n depth as number,\n locale as string,\n fallbackLocale as string,\n select as string | undefined,\n )\n },\n )\n }\n}\n"],"names":["z","toCamelCase","getGlobalVirtualFieldNames","stripVirtualFields","convertCollectionSchemaToZod","toolSchemas","updateGlobalTool","server","req","user","verboseLogs","globalSlug","globals","schema","tool","data","draft","depth","locale","fallbackLocale","select","payload","logger","info","parsedData","JSON","parse","virtualFieldNames","config","stringify","_parseError","error","response","content","type","text","overrideResponse","selectClause","warn","updateOptions","slug","result","updateGlobal","errorMessage","Error","message","enabled","convertedFields","optionalFields","Object","fromEntries","entries","shape","map","key","value","optional","updateGlobalSchema","object","number","describe","boolean","string","registerTool","charAt","toUpperCase","slice","description","trim","inputSchema","params","rest"],"mappings":"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"}