@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,231 +0,0 @@
1
- import { createMcpHandler } from 'mcp-handler';
2
- import { join } from 'path';
3
- import { APIError, configToJSONSchema } from 'payload';
4
- import { toCamelCase } from '../utils/camelCase.js';
5
- import { getEnabledSlugs } from '../utils/getEnabledSlugs.js';
6
- import { getCollectionVirtualFieldNames, getGlobalVirtualFieldNames } from '../utils/getVirtualFieldNames.js';
7
- import { removeVirtualFieldsFromSchema } from '../utils/schemaConversion/removeVirtualFieldsFromSchema.js';
8
- import { registerTool } from './registerTool.js';
9
- // Tools
10
- import { findGlobalTool } from './tools/global/find.js';
11
- import { updateGlobalTool } from './tools/global/update.js';
12
- import { createResourceTool } from './tools/resource/create.js';
13
- import { deleteResourceTool } from './tools/resource/delete.js';
14
- import { findResourceTool } from './tools/resource/find.js';
15
- import { updateResourceTool } from './tools/resource/update.js';
16
- // Experimental Tools
17
- /**
18
- * @experimental This tools are experimental and may change or be removed in the future.
19
- */ import { authTool } from './tools/auth/auth.js';
20
- import { forgotPasswordTool } from './tools/auth/forgotPassword.js';
21
- import { loginTool } from './tools/auth/login.js';
22
- import { resetPasswordTool } from './tools/auth/resetPassword.js';
23
- import { unlockTool } from './tools/auth/unlock.js';
24
- import { verifyTool } from './tools/auth/verify.js';
25
- import { createCollectionTool } from './tools/collection/create.js';
26
- import { deleteCollectionTool } from './tools/collection/delete.js';
27
- import { findCollectionTool } from './tools/collection/find.js';
28
- import { updateCollectionTool } from './tools/collection/update.js';
29
- import { findConfigTool } from './tools/config/find.js';
30
- import { updateConfigTool } from './tools/config/update.js';
31
- import { createJobTool } from './tools/job/create.js';
32
- import { runJobTool } from './tools/job/run.js';
33
- import { updateJobTool } from './tools/job/update.js';
34
- export const getMCPHandler = (pluginOptions, mcpAccessSettings, req)=>{
35
- const { payload } = req;
36
- const configSchema = configToJSONSchema(payload.config, payload.db.defaultIDType, req.i18n, {
37
- forceInlineBlocks: true
38
- });
39
- // Handler wrapper that injects req before the _extra argument
40
- const wrapHandler = (handler)=>{
41
- return async (...args)=>{
42
- const _extra = args[args.length - 1];
43
- const handlerArgs = args.slice(0, -1);
44
- return await handler(...handlerArgs, req, _extra);
45
- };
46
- };
47
- const payloadToolHandler = (handler)=>wrapHandler(handler);
48
- const payloadPromptHandler = (handler)=>wrapHandler(handler);
49
- const payloadResourceHandler = (handler)=>wrapHandler(handler);
50
- // User
51
- const user = mcpAccessSettings.user;
52
- // MCP Server and Handler Options
53
- const MCPOptions = pluginOptions.mcp || {};
54
- const customMCPTools = MCPOptions.tools || [];
55
- const customMCPPrompts = MCPOptions.prompts || [];
56
- const customMCPResources = MCPOptions.resources || [];
57
- const MCPHandlerOptions = MCPOptions.handlerOptions || {};
58
- const serverOptions = MCPOptions.serverOptions || {};
59
- const useVerboseLogs = MCPHandlerOptions.verboseLogs ?? false;
60
- // Experimental MCP Tool Requirements
61
- const isDevelopment = process.env.NODE_ENV === 'development';
62
- const experimentalTools = pluginOptions?.experimental?.tools || {};
63
- const collectionsPluginConfig = pluginOptions.collections || {};
64
- const globalsPluginConfig = pluginOptions.globals || {};
65
- const collectionsDirPath = experimentalTools && experimentalTools.collections?.collectionsDirPath ? experimentalTools.collections.collectionsDirPath : join(process.cwd(), 'src/collections');
66
- const configFilePath = experimentalTools && experimentalTools.config?.configFilePath ? experimentalTools.config.configFilePath : join(process.cwd(), 'src/payload.config.ts');
67
- const jobsDirPath = experimentalTools && experimentalTools.jobs?.jobsDirPath ? experimentalTools.jobs.jobsDirPath : join(process.cwd(), 'src/jobs');
68
- try {
69
- return createMcpHandler((server)=>{
70
- // Get enabled collections
71
- const enabledCollectionSlugs = getEnabledSlugs(collectionsPluginConfig, 'collection');
72
- // Collection Operation Tools
73
- enabledCollectionSlugs.forEach((enabledCollectionSlug)=>{
74
- try {
75
- const rawSchema = configSchema.definitions?.[enabledCollectionSlug];
76
- const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, enabledCollectionSlug);
77
- const schema = removeVirtualFieldsFromSchema(JSON.parse(JSON.stringify(rawSchema)), virtualFieldNames);
78
- const toolCapabilities = mcpAccessSettings?.[`${toCamelCase(enabledCollectionSlug)}`];
79
- const allowCreate = toolCapabilities?.create;
80
- const allowUpdate = toolCapabilities?.update;
81
- const allowFind = toolCapabilities?.find;
82
- const allowDelete = toolCapabilities?.delete;
83
- if (allowCreate) {
84
- registerTool(allowCreate, `Create ${enabledCollectionSlug}`, ()=>createResourceTool(server, req, user, useVerboseLogs, enabledCollectionSlug, collectionsPluginConfig, schema), payload, useVerboseLogs);
85
- }
86
- if (allowUpdate) {
87
- registerTool(allowUpdate, `Update ${enabledCollectionSlug}`, ()=>updateResourceTool(server, req, user, useVerboseLogs, enabledCollectionSlug, collectionsPluginConfig, schema), payload, useVerboseLogs);
88
- }
89
- if (allowFind) {
90
- registerTool(allowFind, `Find ${enabledCollectionSlug}`, ()=>findResourceTool(server, req, user, useVerboseLogs, enabledCollectionSlug, collectionsPluginConfig), payload, useVerboseLogs);
91
- }
92
- if (allowDelete) {
93
- registerTool(allowDelete, `Delete ${enabledCollectionSlug}`, ()=>deleteResourceTool(server, req, user, useVerboseLogs, enabledCollectionSlug, collectionsPluginConfig), payload, useVerboseLogs);
94
- }
95
- } catch (error) {
96
- throw new APIError(`Error registering tools for collection ${enabledCollectionSlug}: ${String(error)}`, 500);
97
- }
98
- });
99
- // Global Operation Tools
100
- const enabledGlobalSlugs = getEnabledSlugs(globalsPluginConfig, 'global');
101
- enabledGlobalSlugs.forEach((enabledGlobalSlug)=>{
102
- try {
103
- const rawSchema = configSchema.definitions?.[enabledGlobalSlug];
104
- const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, enabledGlobalSlug);
105
- const schema = removeVirtualFieldsFromSchema(JSON.parse(JSON.stringify(rawSchema)), virtualFieldNames);
106
- const toolCapabilities = mcpAccessSettings?.[`${toCamelCase(enabledGlobalSlug)}`];
107
- const allowFind = toolCapabilities?.['find'];
108
- const allowUpdate = toolCapabilities?.['update'];
109
- if (allowFind) {
110
- registerTool(allowFind, `Find ${enabledGlobalSlug}`, ()=>findGlobalTool(server, req, user, useVerboseLogs, enabledGlobalSlug, globalsPluginConfig), payload, useVerboseLogs);
111
- }
112
- if (allowUpdate) {
113
- registerTool(allowUpdate, `Update ${enabledGlobalSlug}`, ()=>updateGlobalTool(server, req, user, useVerboseLogs, enabledGlobalSlug, globalsPluginConfig, schema), payload, useVerboseLogs);
114
- }
115
- } catch (error) {
116
- throw new APIError(`Error registering tools for global ${enabledGlobalSlug}: ${String(error)}`, 500);
117
- }
118
- });
119
- // Custom tools
120
- customMCPTools.forEach((tool)=>{
121
- const camelCasedToolName = toCamelCase(tool.name);
122
- const isToolEnabled = mcpAccessSettings['payload-mcp-tool']?.[camelCasedToolName] ?? false;
123
- registerTool(isToolEnabled, tool.name, ()=>server.registerTool(tool.name, {
124
- description: tool.description,
125
- inputSchema: tool.parameters
126
- }, payloadToolHandler(tool.handler)), payload, useVerboseLogs);
127
- });
128
- // Custom prompts
129
- customMCPPrompts.forEach((prompt)=>{
130
- const camelCasedPromptName = toCamelCase(prompt.name);
131
- const isPromptEnabled = mcpAccessSettings['payload-mcp-prompt']?.[camelCasedPromptName] ?? false;
132
- if (isPromptEnabled) {
133
- server.registerPrompt(prompt.name, {
134
- argsSchema: prompt.argsSchema,
135
- description: prompt.description,
136
- title: prompt.title
137
- }, payloadPromptHandler(prompt.handler));
138
- if (useVerboseLogs) {
139
- payload.logger.info(`[payload-mcp] ✅ Prompt: ${prompt.title} Registered.`);
140
- }
141
- } else if (useVerboseLogs) {
142
- payload.logger.info(`[payload-mcp] ⏭️ Prompt: ${prompt.title} Skipped.`);
143
- }
144
- });
145
- // Custom resources
146
- customMCPResources.forEach((resource)=>{
147
- const camelCasedResourceName = toCamelCase(resource.name);
148
- const isResourceEnabled = mcpAccessSettings['payload-mcp-resource']?.[camelCasedResourceName] ?? false;
149
- if (isResourceEnabled) {
150
- server.registerResource(resource.name, // @ts-expect-error - Overload type is not working however -- ResourceTemplate OR String is a valid type
151
- resource.uri, {
152
- description: resource.description,
153
- mimeType: resource.mimeType,
154
- title: resource.title
155
- }, payloadResourceHandler(resource.handler));
156
- if (useVerboseLogs) {
157
- payload.logger.info(`[payload-mcp] ✅ Resource: ${resource.title} Registered.`);
158
- }
159
- } else if (useVerboseLogs) {
160
- payload.logger.info(`[payload-mcp] ⏭️ Resource: ${resource.title} Skipped.`);
161
- }
162
- });
163
- // Experimental - Collection Schema Modfication Tools
164
- if (mcpAccessSettings.collections?.create && experimentalTools.collections?.enabled && isDevelopment) {
165
- registerTool(mcpAccessSettings.collections.create, 'Create Collection', ()=>createCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath), payload, useVerboseLogs);
166
- }
167
- if (mcpAccessSettings.collections?.delete && experimentalTools.collections?.enabled && isDevelopment) {
168
- registerTool(mcpAccessSettings.collections.delete, 'Delete Collection', ()=>deleteCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath), payload, useVerboseLogs);
169
- }
170
- if (mcpAccessSettings.collections?.find && experimentalTools.collections?.enabled && isDevelopment) {
171
- registerTool(mcpAccessSettings.collections.find, 'Find Collection', ()=>findCollectionTool(server, req, useVerboseLogs, collectionsDirPath), payload, useVerboseLogs);
172
- }
173
- if (mcpAccessSettings.collections?.update && experimentalTools.collections?.enabled && isDevelopment) {
174
- registerTool(mcpAccessSettings.collections.update, 'Update Collection', ()=>updateCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath), payload, useVerboseLogs);
175
- }
176
- // Experimental - Payload Config Modification Tools
177
- if (mcpAccessSettings.config?.find && experimentalTools.config?.enabled && isDevelopment) {
178
- registerTool(mcpAccessSettings.config.find, 'Find Config', ()=>findConfigTool(server, req, useVerboseLogs, configFilePath), payload, useVerboseLogs);
179
- }
180
- if (mcpAccessSettings.config?.update && experimentalTools.config?.enabled && isDevelopment) {
181
- registerTool(mcpAccessSettings.config.update, 'Update Config', ()=>updateConfigTool(server, req, useVerboseLogs, configFilePath), payload, useVerboseLogs);
182
- }
183
- // Experimental - Job Modification Tools
184
- if (mcpAccessSettings.jobs?.create && experimentalTools.jobs?.enabled && isDevelopment) {
185
- registerTool(mcpAccessSettings.jobs.create, 'Create Job', ()=>createJobTool(server, req, useVerboseLogs, jobsDirPath), payload, useVerboseLogs);
186
- }
187
- if (mcpAccessSettings.jobs?.update && experimentalTools.jobs?.enabled && isDevelopment) {
188
- registerTool(mcpAccessSettings.jobs.update, 'Update Job', ()=>updateJobTool(server, req, useVerboseLogs, jobsDirPath), payload, useVerboseLogs);
189
- }
190
- if (mcpAccessSettings.jobs?.run && experimentalTools.jobs?.enabled && isDevelopment) {
191
- registerTool(mcpAccessSettings.jobs.run, 'Run Job', ()=>runJobTool(server, req, useVerboseLogs), payload, useVerboseLogs);
192
- }
193
- // Experimental - Auth Modification Tools
194
- if (mcpAccessSettings.auth?.auth && experimentalTools.auth?.enabled && isDevelopment) {
195
- registerTool(mcpAccessSettings.auth.auth, 'Auth', ()=>authTool(server, req, useVerboseLogs), payload, useVerboseLogs);
196
- }
197
- if (mcpAccessSettings.auth?.login && experimentalTools.auth?.enabled && isDevelopment) {
198
- registerTool(mcpAccessSettings.auth.login, 'Login', ()=>loginTool(server, req, useVerboseLogs), payload, useVerboseLogs);
199
- }
200
- if (mcpAccessSettings.auth?.verify && experimentalTools.auth?.enabled && isDevelopment) {
201
- registerTool(mcpAccessSettings.auth.verify, 'Verify', ()=>verifyTool(server, req, useVerboseLogs), payload, useVerboseLogs);
202
- }
203
- if (mcpAccessSettings.auth?.resetPassword && experimentalTools.auth?.enabled) {
204
- registerTool(mcpAccessSettings.auth.resetPassword, 'Reset Password', ()=>resetPasswordTool(server, req, useVerboseLogs), payload, useVerboseLogs);
205
- }
206
- if (mcpAccessSettings.auth?.forgotPassword && experimentalTools.auth?.enabled) {
207
- registerTool(mcpAccessSettings.auth.forgotPassword, 'Forgot Password', ()=>forgotPasswordTool(server, req, useVerboseLogs), payload, useVerboseLogs);
208
- }
209
- if (mcpAccessSettings.auth?.unlock && experimentalTools.auth?.enabled) {
210
- registerTool(mcpAccessSettings.auth.unlock, 'Unlock', ()=>unlockTool(server, req, useVerboseLogs), payload, useVerboseLogs);
211
- }
212
- if (useVerboseLogs) {
213
- payload.logger.info('[payload-mcp] 🚀 MCP Server Ready.');
214
- }
215
- }, {
216
- instructions: serverOptions.instructions,
217
- serverInfo: serverOptions.serverInfo
218
- }, {
219
- basePath: MCPHandlerOptions.basePath || payload.config.routes?.api || '/api',
220
- disableSse: MCPHandlerOptions.disableSse ?? true,
221
- maxDuration: MCPHandlerOptions.maxDuration || 60,
222
- onEvent: MCPHandlerOptions.onEvent,
223
- redisUrl: MCPHandlerOptions.redisUrl,
224
- verboseLogs: useVerboseLogs
225
- });
226
- } catch (error) {
227
- throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500);
228
- }
229
- };
230
-
231
- //# sourceMappingURL=getMcpHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/mcp/getMcpHandler.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\n\nimport { createMcpHandler } from 'mcp-handler'\nimport { join } from 'path'\nimport { APIError, configToJSONSchema, type PayloadRequest, type TypedUser } from 'payload'\n\nimport type { MCPAccessSettings, MCPPluginConfig } from '../types.js'\n\nimport { toCamelCase } from '../utils/camelCase.js'\nimport { getEnabledSlugs } from '../utils/getEnabledSlugs.js'\nimport {\n getCollectionVirtualFieldNames,\n getGlobalVirtualFieldNames,\n} from '../utils/getVirtualFieldNames.js'\nimport { removeVirtualFieldsFromSchema } from '../utils/schemaConversion/removeVirtualFieldsFromSchema.js'\nimport { registerTool } from './registerTool.js'\n\n// Tools\nimport { findGlobalTool } from './tools/global/find.js'\nimport { updateGlobalTool } from './tools/global/update.js'\nimport { createResourceTool } from './tools/resource/create.js'\nimport { deleteResourceTool } from './tools/resource/delete.js'\nimport { findResourceTool } from './tools/resource/find.js'\nimport { updateResourceTool } from './tools/resource/update.js'\n\n// Experimental Tools\n/**\n * @experimental This tools are experimental and may change or be removed in the future.\n */\nimport { authTool } from './tools/auth/auth.js'\nimport { forgotPasswordTool } from './tools/auth/forgotPassword.js'\nimport { loginTool } from './tools/auth/login.js'\nimport { resetPasswordTool } from './tools/auth/resetPassword.js'\nimport { unlockTool } from './tools/auth/unlock.js'\nimport { verifyTool } from './tools/auth/verify.js'\nimport { createCollectionTool } from './tools/collection/create.js'\nimport { deleteCollectionTool } from './tools/collection/delete.js'\nimport { findCollectionTool } from './tools/collection/find.js'\nimport { updateCollectionTool } from './tools/collection/update.js'\nimport { findConfigTool } from './tools/config/find.js'\nimport { updateConfigTool } from './tools/config/update.js'\nimport { createJobTool } from './tools/job/create.js'\nimport { runJobTool } from './tools/job/run.js'\nimport { updateJobTool } from './tools/job/update.js'\n\nexport const getMCPHandler = (\n pluginOptions: MCPPluginConfig,\n mcpAccessSettings: MCPAccessSettings,\n req: PayloadRequest,\n) => {\n const { payload } = req\n const configSchema = configToJSONSchema(payload.config, payload.db.defaultIDType, req.i18n, {\n forceInlineBlocks: true,\n })\n\n // Handler wrapper that injects req before the _extra argument\n const wrapHandler = (handler: (...args: any[]) => any) => {\n return async (...args: any[]) => {\n const _extra = args[args.length - 1]\n const handlerArgs = args.slice(0, -1)\n return await handler(...handlerArgs, req, _extra)\n }\n }\n\n const payloadToolHandler = (\n handler: NonNullable<NonNullable<MCPPluginConfig['mcp']>['tools']>[number]['handler'],\n ) => wrapHandler(handler)\n\n const payloadPromptHandler = (\n handler: NonNullable<NonNullable<MCPPluginConfig['mcp']>['prompts']>[number]['handler'],\n ) => wrapHandler(handler)\n\n const payloadResourceHandler = (\n handler: NonNullable<NonNullable<MCPPluginConfig['mcp']>['resources']>[number]['handler'],\n ) => wrapHandler(handler)\n\n // User\n const user = mcpAccessSettings.user\n\n // MCP Server and Handler Options\n const MCPOptions = pluginOptions.mcp || {}\n const customMCPTools = MCPOptions.tools || []\n const customMCPPrompts = MCPOptions.prompts || []\n const customMCPResources = MCPOptions.resources || []\n const MCPHandlerOptions = MCPOptions.handlerOptions || {}\n const serverOptions = MCPOptions.serverOptions || {}\n const useVerboseLogs = MCPHandlerOptions.verboseLogs ?? false\n\n // Experimental MCP Tool Requirements\n const isDevelopment = process.env.NODE_ENV === 'development'\n const experimentalTools: NonNullable<MCPPluginConfig['experimental']>['tools'] =\n pluginOptions?.experimental?.tools || {}\n const collectionsPluginConfig = pluginOptions.collections || {}\n const globalsPluginConfig = pluginOptions.globals || {}\n const collectionsDirPath =\n experimentalTools && experimentalTools.collections?.collectionsDirPath\n ? experimentalTools.collections.collectionsDirPath\n : join(process.cwd(), 'src/collections')\n const configFilePath =\n experimentalTools && experimentalTools.config?.configFilePath\n ? experimentalTools.config.configFilePath\n : join(process.cwd(), 'src/payload.config.ts')\n const jobsDirPath =\n experimentalTools && experimentalTools.jobs?.jobsDirPath\n ? experimentalTools.jobs.jobsDirPath\n : join(process.cwd(), 'src/jobs')\n\n try {\n return createMcpHandler(\n (server) => {\n // Get enabled collections\n const enabledCollectionSlugs = getEnabledSlugs(collectionsPluginConfig, 'collection')\n\n // Collection Operation Tools\n enabledCollectionSlugs.forEach((enabledCollectionSlug) => {\n try {\n const rawSchema = configSchema.definitions?.[enabledCollectionSlug] as JSONSchema4\n\n const virtualFieldNames = getCollectionVirtualFieldNames(\n payload.config,\n enabledCollectionSlug,\n )\n const schema = removeVirtualFieldsFromSchema(\n JSON.parse(JSON.stringify(rawSchema)) as JSONSchema4,\n virtualFieldNames,\n )\n\n const toolCapabilities = mcpAccessSettings?.[\n `${toCamelCase(enabledCollectionSlug)}`\n ] as Record<string, unknown>\n const allowCreate: boolean | undefined = toolCapabilities?.create as boolean\n const allowUpdate: boolean | undefined = toolCapabilities?.update as boolean\n const allowFind: boolean | undefined = toolCapabilities?.find as boolean\n const allowDelete: boolean | undefined = toolCapabilities?.delete as boolean\n\n if (allowCreate) {\n registerTool(\n allowCreate,\n `Create ${enabledCollectionSlug}`,\n () =>\n createResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowUpdate) {\n registerTool(\n allowUpdate,\n `Update ${enabledCollectionSlug}`,\n () =>\n updateResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowFind) {\n registerTool(\n allowFind,\n `Find ${enabledCollectionSlug}`,\n () =>\n findResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowDelete) {\n registerTool(\n allowDelete,\n `Delete ${enabledCollectionSlug}`,\n () =>\n deleteResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n } catch (error) {\n throw new APIError(\n `Error registering tools for collection ${enabledCollectionSlug}: ${String(error)}`,\n 500,\n )\n }\n })\n\n // Global Operation Tools\n const enabledGlobalSlugs = getEnabledSlugs(globalsPluginConfig, 'global')\n\n enabledGlobalSlugs.forEach((enabledGlobalSlug) => {\n try {\n const rawSchema = configSchema.definitions?.[enabledGlobalSlug] as JSONSchema4\n\n const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, enabledGlobalSlug)\n const schema = removeVirtualFieldsFromSchema(\n JSON.parse(JSON.stringify(rawSchema)) as JSONSchema4,\n virtualFieldNames,\n )\n\n const toolCapabilities = mcpAccessSettings?.[\n `${toCamelCase(enabledGlobalSlug)}`\n ] as Record<string, unknown>\n const allowFind: boolean | undefined = toolCapabilities?.['find'] as boolean\n const allowUpdate: boolean | undefined = toolCapabilities?.['update'] as boolean\n\n if (allowFind) {\n registerTool(\n allowFind,\n `Find ${enabledGlobalSlug}`,\n () =>\n findGlobalTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledGlobalSlug,\n globalsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowUpdate) {\n registerTool(\n allowUpdate,\n `Update ${enabledGlobalSlug}`,\n () =>\n updateGlobalTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledGlobalSlug,\n globalsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n } catch (error) {\n throw new APIError(\n `Error registering tools for global ${enabledGlobalSlug}: ${String(error)}`,\n 500,\n )\n }\n })\n\n // Custom tools\n customMCPTools.forEach((tool) => {\n const camelCasedToolName = toCamelCase(tool.name)\n const isToolEnabled = mcpAccessSettings['payload-mcp-tool']?.[camelCasedToolName] ?? false\n\n registerTool(\n isToolEnabled,\n tool.name,\n () =>\n server.registerTool(\n tool.name,\n {\n description: tool.description,\n inputSchema: tool.parameters,\n },\n payloadToolHandler(tool.handler),\n ),\n payload,\n useVerboseLogs,\n )\n })\n\n // Custom prompts\n customMCPPrompts.forEach((prompt) => {\n const camelCasedPromptName = toCamelCase(prompt.name)\n const isPromptEnabled =\n mcpAccessSettings['payload-mcp-prompt']?.[camelCasedPromptName] ?? false\n\n if (isPromptEnabled) {\n server.registerPrompt(\n prompt.name,\n {\n argsSchema: prompt.argsSchema,\n description: prompt.description,\n title: prompt.title,\n },\n payloadPromptHandler(prompt.handler),\n )\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Prompt: ${prompt.title} Registered.`)\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Prompt: ${prompt.title} Skipped.`)\n }\n })\n\n // Custom resources\n customMCPResources.forEach((resource) => {\n const camelCasedResourceName = toCamelCase(resource.name)\n const isResourceEnabled =\n mcpAccessSettings['payload-mcp-resource']?.[camelCasedResourceName] ?? false\n\n if (isResourceEnabled) {\n server.registerResource(\n resource.name,\n // @ts-expect-error - Overload type is not working however -- ResourceTemplate OR String is a valid type\n resource.uri,\n {\n description: resource.description,\n mimeType: resource.mimeType,\n title: resource.title,\n },\n payloadResourceHandler(resource.handler),\n )\n\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Resource: ${resource.title} Registered.`)\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Resource: ${resource.title} Skipped.`)\n }\n })\n\n // Experimental - Collection Schema Modfication Tools\n if (\n mcpAccessSettings.collections?.create &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.create,\n 'Create Collection',\n () =>\n createCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n if (\n mcpAccessSettings.collections?.delete &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.delete,\n 'Delete Collection',\n () =>\n deleteCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.collections?.find &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.find,\n 'Find Collection',\n () => findCollectionTool(server, req, useVerboseLogs, collectionsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.collections?.update &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.update,\n 'Update Collection',\n () =>\n updateCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Payload Config Modification Tools\n if (mcpAccessSettings.config?.find && experimentalTools.config?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.config.find,\n 'Find Config',\n () => findConfigTool(server, req, useVerboseLogs, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.config?.update &&\n experimentalTools.config?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.config.update,\n 'Update Config',\n () => updateConfigTool(server, req, useVerboseLogs, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Job Modification Tools\n if (mcpAccessSettings.jobs?.create && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.create,\n 'Create Job',\n () => createJobTool(server, req, useVerboseLogs, jobsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.jobs?.update && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.update,\n 'Update Job',\n () => updateJobTool(server, req, useVerboseLogs, jobsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.jobs?.run && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.run,\n 'Run Job',\n () => runJobTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Auth Modification Tools\n if (mcpAccessSettings.auth?.auth && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.auth,\n 'Auth',\n () => authTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.login && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.login,\n 'Login',\n () => loginTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.verify && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.verify,\n 'Verify',\n () => verifyTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.resetPassword && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.resetPassword,\n 'Reset Password',\n () => resetPasswordTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.forgotPassword && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.forgotPassword,\n 'Forgot Password',\n () => forgotPasswordTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.unlock && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.unlock,\n 'Unlock',\n () => unlockTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (useVerboseLogs) {\n payload.logger.info('[payload-mcp] 🚀 MCP Server Ready.')\n }\n },\n {\n instructions: serverOptions.instructions,\n serverInfo: serverOptions.serverInfo,\n },\n {\n basePath: MCPHandlerOptions.basePath || payload.config.routes?.api || '/api',\n disableSse: MCPHandlerOptions.disableSse ?? true,\n maxDuration: MCPHandlerOptions.maxDuration || 60,\n onEvent: MCPHandlerOptions.onEvent,\n redisUrl: MCPHandlerOptions.redisUrl,\n verboseLogs: useVerboseLogs,\n },\n )\n } catch (error) {\n throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500)\n }\n}\n"],"names":["createMcpHandler","join","APIError","configToJSONSchema","toCamelCase","getEnabledSlugs","getCollectionVirtualFieldNames","getGlobalVirtualFieldNames","removeVirtualFieldsFromSchema","registerTool","findGlobalTool","updateGlobalTool","createResourceTool","deleteResourceTool","findResourceTool","updateResourceTool","authTool","forgotPasswordTool","loginTool","resetPasswordTool","unlockTool","verifyTool","createCollectionTool","deleteCollectionTool","findCollectionTool","updateCollectionTool","findConfigTool","updateConfigTool","createJobTool","runJobTool","updateJobTool","getMCPHandler","pluginOptions","mcpAccessSettings","req","payload","configSchema","config","db","defaultIDType","i18n","forceInlineBlocks","wrapHandler","handler","args","_extra","length","handlerArgs","slice","payloadToolHandler","payloadPromptHandler","payloadResourceHandler","user","MCPOptions","mcp","customMCPTools","tools","customMCPPrompts","prompts","customMCPResources","resources","MCPHandlerOptions","handlerOptions","serverOptions","useVerboseLogs","verboseLogs","isDevelopment","process","env","NODE_ENV","experimentalTools","experimental","collectionsPluginConfig","collections","globalsPluginConfig","globals","collectionsDirPath","cwd","configFilePath","jobsDirPath","jobs","server","enabledCollectionSlugs","forEach","enabledCollectionSlug","rawSchema","definitions","virtualFieldNames","schema","JSON","parse","stringify","toolCapabilities","allowCreate","create","allowUpdate","update","allowFind","find","allowDelete","delete","error","String","enabledGlobalSlugs","enabledGlobalSlug","tool","camelCasedToolName","name","isToolEnabled","description","inputSchema","parameters","prompt","camelCasedPromptName","isPromptEnabled","registerPrompt","argsSchema","title","logger","info","resource","camelCasedResourceName","isResourceEnabled","registerResource","uri","mimeType","enabled","run","auth","login","verify","resetPassword","forgotPassword","unlock","instructions","serverInfo","basePath","routes","api","disableSse","maxDuration","onEvent","redisUrl"],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type { AdminConfig, DatabaseConfig, PluginUpdates } from '../../types.js';
2
- /**
3
- * Adds a collection to the payload.config.ts file
4
- */
5
- export declare function addCollectionToConfig(content: string, collectionName: string): string;
6
- /**
7
- * Removes a collection from the payload.config.ts file
8
- */
9
- export declare function removeCollectionFromConfig(content: string, collectionName: string): string;
10
- /**
11
- * Updates admin configuration in payload.config.ts
12
- */
13
- export declare function updateAdminConfig(content: string, adminConfig: AdminConfig): string;
14
- /**
15
- * Updates database configuration in payload.config.ts
16
- */
17
- export declare function updateDatabaseConfig(content: string, databaseConfig: DatabaseConfig): string;
18
- /**
19
- * Updates plugins configuration in payload.config.ts
20
- */
21
- export declare function updatePluginsConfig(content: string, pluginUpdates: PluginUpdates): string;
22
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/mcp/helpers/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEhF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAwCrF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAgC1F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAoDnF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAkB5F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CA6CzF"}
@@ -1,153 +0,0 @@
1
- /**
2
- * Adds a collection to the payload.config.ts file
3
- */ export function addCollectionToConfig(content, collectionName) {
4
- const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1);
5
- // Add import statement
6
- const importRegex = /import.*from\s*['"]\.\/collections\/.*['"]/g;
7
- const importMatches = content.match(importRegex);
8
- if (importMatches && importMatches.length > 0) {
9
- const lastImport = importMatches[importMatches.length - 1];
10
- const newImport = `import { ${capitalizedName} } from './collections/${capitalizedName}'`;
11
- // Check if import already exists
12
- if (lastImport && !content.includes(newImport)) {
13
- content = content.replace(lastImport, `${lastImport}\n${newImport}`);
14
- }
15
- } else {
16
- // Add import after existing imports
17
- const importInsertPoint = content.indexOf("import sharp from 'sharp'");
18
- if (importInsertPoint !== -1) {
19
- const lineEnd = content.indexOf('\n', importInsertPoint);
20
- const newImport = `import { ${capitalizedName} } from './collections/${capitalizedName}'`;
21
- content = content.slice(0, lineEnd + 1) + newImport + '\n' + content.slice(lineEnd + 1);
22
- }
23
- }
24
- // Add to collections array
25
- const collectionsRegex = /collections:\s*\[([\s\S]*?)\]/;
26
- const collectionsMatch = content.match(collectionsRegex);
27
- if (collectionsMatch && collectionsMatch[1]) {
28
- const collectionsContent = collectionsMatch[1].trim();
29
- if (!collectionsContent.includes(capitalizedName)) {
30
- const newCollections = collectionsContent ? `${collectionsContent}, ${capitalizedName}` : capitalizedName;
31
- content = content.replace(collectionsRegex, `collections: [${newCollections}]`);
32
- }
33
- }
34
- return content;
35
- }
36
- /**
37
- * Removes a collection from the payload.config.ts file
38
- */ export function removeCollectionFromConfig(content, collectionName) {
39
- const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1);
40
- // Remove import statement
41
- const importRegex = new RegExp(`import\\s*{\\s*${capitalizedName}\\s*}\\s*from\\s*['"]\\./collections/${capitalizedName}['"]\\s*\\n?`, 'g');
42
- content = content.replace(importRegex, '');
43
- // Remove from collections array
44
- const collectionsRegex = /collections:\s*\[([\s\S]*?)\]/;
45
- const collectionsMatch = content.match(collectionsRegex);
46
- if (collectionsMatch && collectionsMatch[1]) {
47
- let collectionsContent = collectionsMatch[1];
48
- // Remove the collection name and clean up commas
49
- collectionsContent = collectionsContent.replace(new RegExp(`\\s*,?\\s*${capitalizedName}\\s*,?`, 'g'), '');
50
- collectionsContent = collectionsContent.replace(/,\s*,/g, ','); // Remove double commas
51
- collectionsContent = collectionsContent.replace(/^\s*,|,\s*$/g, ''); // Remove leading/trailing commas
52
- content = content.replace(collectionsRegex, `collections: [${collectionsContent}]`);
53
- }
54
- // Clean up any double newlines from removed imports
55
- content = content.replace(/\n{3,}/g, '\n\n');
56
- return content;
57
- }
58
- /**
59
- * Updates admin configuration in payload.config.ts
60
- */ export function updateAdminConfig(content, adminConfig) {
61
- const adminRegex = /admin:\s*\{([^}]*)\}/;
62
- const adminMatch = content.match(adminRegex);
63
- if (adminMatch && adminMatch[1]) {
64
- let adminContent = adminMatch[1];
65
- // Update specific admin properties
66
- if (adminConfig.user) {
67
- if (adminContent.includes('user:')) {
68
- adminContent = adminContent.replace(/user:[^,}]*/, `user: ${adminConfig.user}.slug`);
69
- } else {
70
- adminContent = `\n user: ${adminConfig.user}.slug,${adminContent}`;
71
- }
72
- }
73
- if (adminConfig.meta) {
74
- const metaConfig = Object.entries(adminConfig.meta).map(([key, value])=>` ${key}: '${value}'`).join(',\n');
75
- if (adminContent.includes('meta:')) {
76
- adminContent = adminContent.replace(/meta:\s*\{[^}]*\}/, `meta: {\n${metaConfig}\n }`);
77
- } else {
78
- adminContent = `${adminContent}\n meta: {\n${metaConfig}\n },`;
79
- }
80
- }
81
- content = content.replace(adminRegex, `admin: {${adminContent}\n }`);
82
- } else {
83
- // Add admin config if it doesn't exist
84
- const adminConfigEntries = [];
85
- if (adminConfig.user) {
86
- adminConfigEntries.push(` user: ${adminConfig.user}.slug`);
87
- }
88
- if (adminConfig.meta) {
89
- const metaConfig = Object.entries(adminConfig.meta).map(([key, value])=>` ${key}: '${value}'`).join(',\n');
90
- adminConfigEntries.push(` meta: {\n${metaConfig}\n }`);
91
- }
92
- const adminConfigString = `admin: {\n${adminConfigEntries.join(',\n')}\n },`;
93
- content = content.replace(/export default buildConfig\(\{/, `export default buildConfig({\n ${adminConfigString}`);
94
- }
95
- return content;
96
- }
97
- /**
98
- * Updates database configuration in payload.config.ts
99
- */ export function updateDatabaseConfig(content, databaseConfig) {
100
- if (databaseConfig.type === 'mongodb') {
101
- // Update to MongoDB adapter
102
- const dbRegex = /db:[^,}]*(?:,|\})/;
103
- const mongoImportRegex = /import.*mongooseAdapter.*from.*@payloadcms\/db-mongodb.*/;
104
- if (!content.match(mongoImportRegex)) {
105
- content = content.replace(/(import.*from.*payload.*\n)/, `$1import { mongooseAdapter } from '@payloadcms/db-mongodb'\n`);
106
- }
107
- const dbConfig = `db: mongooseAdapter({\n url: process.env.DATABASE_URL || '${databaseConfig.url || ''}',\n })`;
108
- content = content.replace(dbRegex, `${dbConfig},`);
109
- }
110
- return content;
111
- }
112
- /**
113
- * Updates plugins configuration in payload.config.ts
114
- */ export function updatePluginsConfig(content, pluginUpdates) {
115
- // Add plugin imports
116
- if (pluginUpdates.add) {
117
- pluginUpdates.add.forEach((pluginImport)=>{
118
- if (!content.includes(pluginImport)) {
119
- content = content.replace(/(import.*from.*payload.*\n)/, `$1${pluginImport}\n`);
120
- }
121
- });
122
- }
123
- // Handle plugins array
124
- const pluginsRegex = /plugins:\s*\[([\s\S]*?)\]/;
125
- const pluginsMatch = content.match(pluginsRegex);
126
- if (pluginsMatch && pluginsMatch[1]) {
127
- let pluginsContent = pluginsMatch[1];
128
- // Remove plugins
129
- if (pluginUpdates.remove) {
130
- pluginUpdates.remove.forEach((pluginName)=>{
131
- const pluginRegex = new RegExp(`\\s*${pluginName}\\(\\)\\s*,?`, 'g');
132
- pluginsContent = pluginsContent.replace(pluginRegex, '');
133
- });
134
- }
135
- // Add plugins
136
- if (pluginUpdates.add) {
137
- pluginUpdates.add.forEach((pluginImport)=>{
138
- // This will match: import { PluginName } from '...';
139
- const match = pluginImport.match(/import\s*\{\s*(\w+)\s*\}/);
140
- if (match && match[1]) {
141
- const pluginName = match[1];
142
- if (!pluginsContent.includes(`${pluginName}(`)) {
143
- pluginsContent = pluginsContent.trim() ? `${pluginsContent}\n ${pluginName}(),` : `\n ${pluginName}(),`;
144
- }
145
- }
146
- });
147
- }
148
- content = content.replace(pluginsRegex, `plugins: [${pluginsContent}\n ]`);
149
- }
150
- return content;
151
- }
152
-
153
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mcp/helpers/config.ts"],"sourcesContent":["import type { AdminConfig, DatabaseConfig, PluginUpdates } from '../../types.js'\n\n/**\n * Adds a collection to the payload.config.ts file\n */\nexport function addCollectionToConfig(content: string, collectionName: string): string {\n const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1)\n\n // Add import statement\n const importRegex = /import.*from\\s*['\"]\\.\\/collections\\/.*['\"]/g\n const importMatches = content.match(importRegex)\n\n if (importMatches && importMatches.length > 0) {\n const lastImport = importMatches[importMatches.length - 1]\n const newImport = `import { ${capitalizedName} } from './collections/${capitalizedName}'`\n\n // Check if import already exists\n if (lastImport && !content.includes(newImport)) {\n content = content.replace(lastImport, `${lastImport}\\n${newImport}`)\n }\n } else {\n // Add import after existing imports\n const importInsertPoint = content.indexOf(\"import sharp from 'sharp'\")\n if (importInsertPoint !== -1) {\n const lineEnd = content.indexOf('\\n', importInsertPoint)\n const newImport = `import { ${capitalizedName} } from './collections/${capitalizedName}'`\n content = content.slice(0, lineEnd + 1) + newImport + '\\n' + content.slice(lineEnd + 1)\n }\n }\n\n // Add to collections array\n const collectionsRegex = /collections:\\s*\\[([\\s\\S]*?)\\]/\n const collectionsMatch = content.match(collectionsRegex)\n\n if (collectionsMatch && collectionsMatch[1]) {\n const collectionsContent = collectionsMatch[1].trim()\n if (!collectionsContent.includes(capitalizedName)) {\n const newCollections = collectionsContent\n ? `${collectionsContent}, ${capitalizedName}`\n : capitalizedName\n content = content.replace(collectionsRegex, `collections: [${newCollections}]`)\n }\n }\n\n return content\n}\n\n/**\n * Removes a collection from the payload.config.ts file\n */\nexport function removeCollectionFromConfig(content: string, collectionName: string): string {\n const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1)\n\n // Remove import statement\n const importRegex = new RegExp(\n `import\\\\s*{\\\\s*${capitalizedName}\\\\s*}\\\\s*from\\\\s*['\"]\\\\./collections/${capitalizedName}['\"]\\\\s*\\\\n?`,\n 'g',\n )\n content = content.replace(importRegex, '')\n\n // Remove from collections array\n const collectionsRegex = /collections:\\s*\\[([\\s\\S]*?)\\]/\n const collectionsMatch = content.match(collectionsRegex)\n\n if (collectionsMatch && collectionsMatch[1]) {\n let collectionsContent = collectionsMatch[1]\n\n // Remove the collection name and clean up commas\n collectionsContent = collectionsContent.replace(\n new RegExp(`\\\\s*,?\\\\s*${capitalizedName}\\\\s*,?`, 'g'),\n '',\n )\n collectionsContent = collectionsContent.replace(/,\\s*,/g, ',') // Remove double commas\n collectionsContent = collectionsContent.replace(/^\\s*,|,\\s*$/g, '') // Remove leading/trailing commas\n\n content = content.replace(collectionsRegex, `collections: [${collectionsContent}]`)\n }\n\n // Clean up any double newlines from removed imports\n content = content.replace(/\\n{3,}/g, '\\n\\n')\n\n return content\n}\n\n/**\n * Updates admin configuration in payload.config.ts\n */\nexport function updateAdminConfig(content: string, adminConfig: AdminConfig): string {\n const adminRegex = /admin:\\s*\\{([^}]*)\\}/\n const adminMatch = content.match(adminRegex)\n\n if (adminMatch && adminMatch[1]) {\n let adminContent = adminMatch[1]\n\n // Update specific admin properties\n if (adminConfig.user) {\n if (adminContent.includes('user:')) {\n adminContent = adminContent.replace(/user:[^,}]*/, `user: ${adminConfig.user}.slug`)\n } else {\n adminContent = `\\n user: ${adminConfig.user}.slug,${adminContent}`\n }\n }\n\n if (adminConfig.meta) {\n const metaConfig = Object.entries(adminConfig.meta)\n .map(([key, value]) => ` ${key}: '${value}'`)\n .join(',\\n')\n\n if (adminContent.includes('meta:')) {\n adminContent = adminContent.replace(/meta:\\s*\\{[^}]*\\}/, `meta: {\\n${metaConfig}\\n }`)\n } else {\n adminContent = `${adminContent}\\n meta: {\\n${metaConfig}\\n },`\n }\n }\n\n content = content.replace(adminRegex, `admin: {${adminContent}\\n }`)\n } else {\n // Add admin config if it doesn't exist\n const adminConfigEntries = []\n\n if (adminConfig.user) {\n adminConfigEntries.push(` user: ${adminConfig.user}.slug`)\n }\n\n if (adminConfig.meta) {\n const metaConfig = Object.entries(adminConfig.meta)\n .map(([key, value]) => ` ${key}: '${value}'`)\n .join(',\\n')\n adminConfigEntries.push(` meta: {\\n${metaConfig}\\n }`)\n }\n\n const adminConfigString = `admin: {\\n${adminConfigEntries.join(',\\n')}\\n },`\n content = content.replace(\n /export default buildConfig\\(\\{/,\n `export default buildConfig({\\n ${adminConfigString}`,\n )\n }\n\n return content\n}\n\n/**\n * Updates database configuration in payload.config.ts\n */\nexport function updateDatabaseConfig(content: string, databaseConfig: DatabaseConfig): string {\n if (databaseConfig.type === 'mongodb') {\n // Update to MongoDB adapter\n const dbRegex = /db:[^,}]*(?:,|\\})/\n const mongoImportRegex = /import.*mongooseAdapter.*from.*@payloadcms\\/db-mongodb.*/\n\n if (!content.match(mongoImportRegex)) {\n content = content.replace(\n /(import.*from.*payload.*\\n)/,\n `$1import { mongooseAdapter } from '@payloadcms/db-mongodb'\\n`,\n )\n }\n\n const dbConfig = `db: mongooseAdapter({\\n url: process.env.DATABASE_URL || '${databaseConfig.url || ''}',\\n })`\n content = content.replace(dbRegex, `${dbConfig},`)\n }\n\n return content\n}\n\n/**\n * Updates plugins configuration in payload.config.ts\n */\nexport function updatePluginsConfig(content: string, pluginUpdates: PluginUpdates): string {\n // Add plugin imports\n if (pluginUpdates.add) {\n pluginUpdates.add.forEach((pluginImport: string) => {\n if (!content.includes(pluginImport)) {\n content = content.replace(/(import.*from.*payload.*\\n)/, `$1${pluginImport}\\n`)\n }\n })\n }\n\n // Handle plugins array\n const pluginsRegex = /plugins:\\s*\\[([\\s\\S]*?)\\]/\n const pluginsMatch = content.match(pluginsRegex)\n\n if (pluginsMatch && pluginsMatch[1]) {\n let pluginsContent = pluginsMatch[1]\n\n // Remove plugins\n if (pluginUpdates.remove) {\n pluginUpdates.remove.forEach((pluginName: string) => {\n const pluginRegex = new RegExp(`\\\\s*${pluginName}\\\\(\\\\)\\\\s*,?`, 'g')\n pluginsContent = pluginsContent.replace(pluginRegex, '')\n })\n }\n\n // Add plugins\n if (pluginUpdates.add) {\n pluginUpdates.add.forEach((pluginImport: string) => {\n // This will match: import { PluginName } from '...';\n const match = pluginImport.match(/import\\s*\\{\\s*(\\w+)\\s*\\}/)\n if (match && match[1]) {\n const pluginName = match[1]\n if (!pluginsContent.includes(`${pluginName}(`)) {\n pluginsContent = pluginsContent.trim()\n ? `${pluginsContent}\\n ${pluginName}(),`\n : `\\n ${pluginName}(),`\n }\n }\n })\n }\n\n content = content.replace(pluginsRegex, `plugins: [${pluginsContent}\\n ]`)\n }\n\n return content\n}\n"],"names":["addCollectionToConfig","content","collectionName","capitalizedName","charAt","toUpperCase","slice","importRegex","importMatches","match","length","lastImport","newImport","includes","replace","importInsertPoint","indexOf","lineEnd","collectionsRegex","collectionsMatch","collectionsContent","trim","newCollections","removeCollectionFromConfig","RegExp","updateAdminConfig","adminConfig","adminRegex","adminMatch","adminContent","user","meta","metaConfig","Object","entries","map","key","value","join","adminConfigEntries","push","adminConfigString","updateDatabaseConfig","databaseConfig","type","dbRegex","mongoImportRegex","dbConfig","url","updatePluginsConfig","pluginUpdates","add","forEach","pluginImport","pluginsRegex","pluginsMatch","pluginsContent","remove","pluginName","pluginRegex"],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { FieldDefinition, FieldModification } from '../../types.js';
2
- /**
3
- * Generates the TypeScript source string for a single field definition block.
4
- * Used when writing collection files to disk.
5
- */
6
- export declare function generateFieldDefinitionString(field: FieldDefinition): string;
7
- /**
8
- * Adds new fields to a collection file content
9
- */
10
- export declare function addFieldsToCollection(content: string, newFields: FieldDefinition[]): string;
11
- /**
12
- * Removes fields from a collection file content
13
- */
14
- export declare function removeFieldsFromCollection(content: string, fieldNames: string[]): string;
15
- /**
16
- * Modifies existing fields in a collection file content
17
- */
18
- export declare function modifyFieldsInCollection(content: string, modifications: FieldModification[]): string;
19
- //# sourceMappingURL=fields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/mcp/helpers/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAWxE;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiC5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,CAqB3F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAiBxF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,iBAAiB,EAAE,GACjC,MAAM,CAiDR"}