@payloadcms/plugin-mcp 4.0.0-internal.e16cf59 → 4.0.0-internal.e38d3ac

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 (429) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +46 -0
  3. package/dist/defaultAccess.d.ts +3 -0
  4. package/dist/defaultAccess.d.ts.map +1 -0
  5. package/dist/defaultAccess.js +3 -0
  6. package/dist/defaultAccess.js.map +1 -0
  7. package/dist/defineTool.d.ts +26 -0
  8. package/dist/defineTool.d.ts.map +1 -0
  9. package/dist/defineTool.js +37 -0
  10. package/dist/defineTool.js.map +1 -0
  11. package/dist/endpoint/access.d.ts +17 -0
  12. package/dist/endpoint/access.d.ts.map +1 -0
  13. package/dist/endpoint/access.js +93 -0
  14. package/dist/endpoint/access.js.map +1 -0
  15. package/dist/endpoint/index.d.ts +3 -0
  16. package/dist/endpoint/index.d.ts.map +1 -0
  17. package/dist/endpoint/index.js +87 -0
  18. package/dist/endpoint/index.js.map +1 -0
  19. package/dist/exports/client.d.ts +2 -0
  20. package/dist/exports/client.d.ts.map +1 -0
  21. package/dist/exports/client.js +4 -0
  22. package/dist/exports/client.js.map +1 -0
  23. package/dist/exports/internal.d.ts +2 -0
  24. package/dist/exports/internal.d.ts.map +1 -0
  25. package/dist/exports/internal.js +3 -0
  26. package/dist/exports/internal.js.map +1 -0
  27. package/dist/index.d.ts +6 -9
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +39 -67
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp/buildMcpServer.d.ts +19 -0
  32. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  33. package/dist/mcp/buildMcpServer.js +223 -0
  34. package/dist/mcp/buildMcpServer.js.map +1 -0
  35. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  36. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  37. package/dist/mcp/builtin/collections/authTools.js +288 -0
  38. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  39. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  40. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  41. package/dist/mcp/builtin/collections/countTool.js +68 -0
  42. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  43. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  44. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  45. package/dist/mcp/builtin/collections/countVersionsTool.js +64 -0
  46. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  47. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/createTool.js +138 -0
  50. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/deleteTool.js +110 -0
  54. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  56. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  57. package/dist/mcp/builtin/collections/duplicateTool.js +96 -0
  58. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  59. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  60. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  61. package/dist/mcp/builtin/collections/fileInput.js +124 -0
  62. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  63. package/dist/mcp/builtin/collections/fileInput.spec.js +86 -0
  64. package/dist/mcp/builtin/collections/fileInput.spec.js.map +1 -0
  65. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  66. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  67. package/dist/mcp/builtin/collections/findDistinctTool.js +92 -0
  68. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  69. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  70. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  71. package/dist/mcp/builtin/collections/findTool.js +164 -0
  72. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  73. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  74. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  75. package/dist/mcp/builtin/collections/findVersionByIDTool.js +83 -0
  76. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  77. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  78. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  79. package/dist/mcp/builtin/collections/findVersionsTool.js +98 -0
  80. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  81. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  82. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  83. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  84. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  85. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  86. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  87. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +87 -0
  88. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  89. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  90. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  91. package/dist/mcp/builtin/collections/restoreVersionTool.js +81 -0
  92. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  93. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  94. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  95. package/dist/mcp/builtin/collections/updateTool.js +204 -0
  96. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  97. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  98. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  99. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  100. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  101. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  102. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  103. package/dist/mcp/builtin/getConfigInfoTool.js +68 -0
  104. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  105. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  106. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  107. package/dist/mcp/builtin/globals/countVersionsTool.js +64 -0
  108. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  109. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  110. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  111. package/dist/mcp/builtin/globals/findTool.js +73 -0
  112. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  113. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  114. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  115. package/dist/mcp/builtin/globals/findVersionByIDTool.js +79 -0
  116. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  117. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  118. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  119. package/dist/mcp/builtin/globals/findVersionsTool.js +94 -0
  120. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  121. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  122. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  123. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +65 -0
  124. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  125. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  126. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  127. package/dist/mcp/builtin/globals/restoreVersionTool.js +77 -0
  128. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  129. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  130. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  131. package/dist/mcp/builtin/globals/updateTool.js +87 -0
  132. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  133. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  134. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  135. package/dist/mcp/builtin/validateEntityData.js +82 -0
  136. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  137. package/dist/mcp/builtinTools.d.ts +168 -0
  138. package/dist/mcp/builtinTools.d.ts.map +1 -0
  139. package/dist/mcp/builtinTools.js +169 -0
  140. package/dist/mcp/builtinTools.js.map +1 -0
  141. package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
  142. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  143. package/dist/mcp/sanitizeMCPConfig.js +233 -0
  144. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  145. package/dist/stdio.d.ts +8 -0
  146. package/dist/stdio.d.ts.map +1 -0
  147. package/dist/stdio.js +127 -0
  148. package/dist/stdio.js.map +1 -0
  149. package/dist/types.d.ts +256 -447
  150. package/dist/types.d.ts.map +1 -1
  151. package/dist/types.js +4 -1
  152. package/dist/types.js.map +1 -1
  153. package/dist/utils/getLogger.d.ts +10 -0
  154. package/dist/utils/getLogger.d.ts.map +1 -0
  155. package/dist/utils/getLogger.js +22 -0
  156. package/dist/utils/getLogger.js.map +1 -0
  157. package/dist/utils/getPluginConfig.d.ts +12 -0
  158. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  159. package/dist/utils/getPluginConfig.js +15 -0
  160. package/dist/utils/getPluginConfig.js.map +1 -0
  161. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  162. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  163. package/dist/utils/resolveProjectRoot.js +15 -0
  164. package/dist/utils/resolveProjectRoot.js.map +1 -0
  165. package/dist/utils/schemaConversion/filterFieldsByAccess.d.ts +28 -0
  166. package/dist/utils/schemaConversion/filterFieldsByAccess.d.ts.map +1 -0
  167. package/dist/utils/schemaConversion/filterFieldsByAccess.js +71 -0
  168. package/dist/utils/schemaConversion/filterFieldsByAccess.js.map +1 -0
  169. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +13 -0
  170. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  171. package/dist/utils/schemaConversion/getEntityInputSchema.js +66 -0
  172. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  173. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +10 -0
  174. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  175. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +384 -0
  176. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  177. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +133 -0
  178. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  179. package/dist/utils/toStandardSchema.d.ts +5 -0
  180. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  181. package/dist/utils/toStandardSchema.js +4 -0
  182. package/dist/utils/toStandardSchema.js.map +1 -0
  183. package/dist/utils/whereSchema.d.ts +9 -0
  184. package/dist/utils/whereSchema.d.ts.map +1 -0
  185. package/dist/utils/whereSchema.js +13 -0
  186. package/dist/utils/whereSchema.js.map +1 -0
  187. package/package.json +30 -10
  188. package/src/defaultAccess.ts +3 -0
  189. package/src/defineTool.ts +44 -0
  190. package/src/endpoint/access.ts +112 -0
  191. package/src/endpoint/index.ts +77 -0
  192. package/src/exports/client.ts +3 -0
  193. package/src/exports/internal.ts +1 -0
  194. package/src/index.ts +31 -89
  195. package/src/mcp/buildMcpServer.ts +284 -0
  196. package/src/mcp/builtin/collections/authTools.ts +269 -0
  197. package/src/mcp/builtin/collections/countTool.ts +73 -0
  198. package/src/mcp/builtin/collections/countVersionsTool.ts +69 -0
  199. package/src/mcp/builtin/collections/createTool.ts +168 -0
  200. package/src/mcp/builtin/collections/deleteTool.ts +125 -0
  201. package/src/mcp/builtin/collections/duplicateTool.ts +134 -0
  202. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  203. package/src/mcp/builtin/collections/fileInput.ts +164 -0
  204. package/src/mcp/builtin/collections/findDistinctTool.ts +119 -0
  205. package/src/mcp/builtin/collections/findTool.ts +216 -0
  206. package/src/mcp/builtin/collections/findVersionByIDTool.ts +109 -0
  207. package/src/mcp/builtin/collections/findVersionsTool.ts +154 -0
  208. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  209. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +80 -0
  210. package/src/mcp/builtin/collections/restoreVersionTool.ts +107 -0
  211. package/src/mcp/builtin/collections/updateTool.ts +227 -0
  212. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  213. package/src/mcp/builtin/getConfigInfoTool.ts +67 -0
  214. package/src/mcp/builtin/globals/countVersionsTool.ts +68 -0
  215. package/src/mcp/builtin/globals/findTool.ts +105 -0
  216. package/src/mcp/builtin/globals/findVersionByIDTool.ts +103 -0
  217. package/src/mcp/builtin/globals/findVersionsTool.ts +147 -0
  218. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +63 -0
  219. package/src/mcp/builtin/globals/restoreVersionTool.ts +99 -0
  220. package/src/mcp/builtin/globals/updateTool.ts +115 -0
  221. package/src/mcp/builtin/validateEntityData.ts +132 -0
  222. package/src/mcp/builtinTools.ts +161 -0
  223. package/src/mcp/sanitizeMCPConfig.ts +281 -0
  224. package/src/stdio.ts +131 -0
  225. package/src/types.ts +304 -486
  226. package/src/utils/getLogger.ts +22 -0
  227. package/src/utils/getPluginConfig.ts +24 -0
  228. package/src/utils/resolveProjectRoot.ts +17 -0
  229. package/src/utils/schemaConversion/filterFieldsByAccess.ts +123 -0
  230. package/src/utils/schemaConversion/getEntityInputSchema.ts +96 -0
  231. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +96 -0
  232. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +432 -0
  233. package/src/utils/toStandardSchema.ts +9 -0
  234. package/src/utils/whereSchema.ts +24 -0
  235. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  236. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  237. package/dist/collections/createApiKeysCollection.js +0 -317
  238. package/dist/collections/createApiKeysCollection.js.map +0 -1
  239. package/dist/defaults.d.ts +0 -4
  240. package/dist/defaults.d.ts.map +0 -1
  241. package/dist/defaults.js +0 -5
  242. package/dist/defaults.js.map +0 -1
  243. package/dist/endpoints/mcp.d.ts +0 -4
  244. package/dist/endpoints/mcp.d.ts.map +0 -1
  245. package/dist/endpoints/mcp.js +0 -71
  246. package/dist/endpoints/mcp.js.map +0 -1
  247. package/dist/mcp/createRequest.d.ts +0 -3
  248. package/dist/mcp/createRequest.d.ts.map +0 -1
  249. package/dist/mcp/createRequest.js +0 -14
  250. package/dist/mcp/createRequest.js.map +0 -1
  251. package/dist/mcp/getMcpHandler.d.ts +0 -4
  252. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  253. package/dist/mcp/getMcpHandler.js +0 -231
  254. package/dist/mcp/getMcpHandler.js.map +0 -1
  255. package/dist/mcp/helpers/config.d.ts +0 -22
  256. package/dist/mcp/helpers/config.d.ts.map +0 -1
  257. package/dist/mcp/helpers/config.js +0 -153
  258. package/dist/mcp/helpers/config.js.map +0 -1
  259. package/dist/mcp/helpers/fields.d.ts +0 -19
  260. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  261. package/dist/mcp/helpers/fields.js +0 -102
  262. package/dist/mcp/helpers/fields.js.map +0 -1
  263. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  264. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  265. package/dist/mcp/helpers/fileValidation.js +0 -267
  266. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  267. package/dist/mcp/registerTool.d.ts +0 -6
  268. package/dist/mcp/registerTool.d.ts.map +0 -1
  269. package/dist/mcp/registerTool.js +0 -18
  270. package/dist/mcp/registerTool.js.map +0 -1
  271. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  272. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  273. package/dist/mcp/tools/auth/auth.js +0 -57
  274. package/dist/mcp/tools/auth/auth.js.map +0 -1
  275. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  276. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  277. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  278. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  279. package/dist/mcp/tools/auth/login.d.ts +0 -4
  280. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  281. package/dist/mcp/tools/auth/login.js +0 -51
  282. package/dist/mcp/tools/auth/login.js.map +0 -1
  283. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  284. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  285. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  286. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  287. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  288. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  289. package/dist/mcp/tools/auth/unlock.js +0 -48
  290. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  291. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  292. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  293. package/dist/mcp/tools/auth/verify.js +0 -45
  294. package/dist/mcp/tools/auth/verify.js.map +0 -1
  295. package/dist/mcp/tools/collection/create.d.ts +0 -10
  296. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  297. package/dist/mcp/tools/collection/create.js +0 -139
  298. package/dist/mcp/tools/collection/create.js.map +0 -1
  299. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  300. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  301. package/dist/mcp/tools/collection/delete.js +0 -154
  302. package/dist/mcp/tools/collection/delete.js.map +0 -1
  303. package/dist/mcp/tools/collection/find.d.ts +0 -10
  304. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  305. package/dist/mcp/tools/collection/find.js +0 -165
  306. package/dist/mcp/tools/collection/find.js.map +0 -1
  307. package/dist/mcp/tools/collection/update.d.ts +0 -10
  308. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  309. package/dist/mcp/tools/collection/update.js +0 -209
  310. package/dist/mcp/tools/collection/update.js.map +0 -1
  311. package/dist/mcp/tools/config/find.d.ts +0 -10
  312. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  313. package/dist/mcp/tools/config/find.js +0 -97
  314. package/dist/mcp/tools/config/find.js.map +0 -1
  315. package/dist/mcp/tools/config/update.d.ts +0 -10
  316. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  317. package/dist/mcp/tools/config/update.js +0 -215
  318. package/dist/mcp/tools/config/update.js.map +0 -1
  319. package/dist/mcp/tools/global/find.d.ts +0 -5
  320. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  321. package/dist/mcp/tools/global/find.js +0 -82
  322. package/dist/mcp/tools/global/find.js.map +0 -1
  323. package/dist/mcp/tools/global/update.d.ts +0 -6
  324. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  325. package/dist/mcp/tools/global/update.js +0 -124
  326. package/dist/mcp/tools/global/update.js.map +0 -1
  327. package/dist/mcp/tools/job/create.d.ts +0 -10
  328. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  329. package/dist/mcp/tools/job/create.js +0 -293
  330. package/dist/mcp/tools/job/create.js.map +0 -1
  331. package/dist/mcp/tools/job/run.d.ts +0 -10
  332. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  333. package/dist/mcp/tools/job/run.js +0 -129
  334. package/dist/mcp/tools/job/run.js.map +0 -1
  335. package/dist/mcp/tools/job/update.d.ts +0 -11
  336. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  337. package/dist/mcp/tools/job/update.js +0 -186
  338. package/dist/mcp/tools/job/update.js.map +0 -1
  339. package/dist/mcp/tools/resource/create.d.ts +0 -6
  340. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  341. package/dist/mcp/tools/resource/create.js +0 -124
  342. package/dist/mcp/tools/resource/create.js.map +0 -1
  343. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  344. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  345. package/dist/mcp/tools/resource/delete.js +0 -151
  346. package/dist/mcp/tools/resource/delete.js.map +0 -1
  347. package/dist/mcp/tools/resource/find.d.ts +0 -5
  348. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  349. package/dist/mcp/tools/resource/find.js +0 -170
  350. package/dist/mcp/tools/resource/find.js.map +0 -1
  351. package/dist/mcp/tools/resource/update.d.ts +0 -6
  352. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  353. package/dist/mcp/tools/resource/update.js +0 -256
  354. package/dist/mcp/tools/resource/update.js.map +0 -1
  355. package/dist/mcp/tools/schemas.d.ts +0 -457
  356. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  357. package/dist/mcp/tools/schemas.js +0 -243
  358. package/dist/mcp/tools/schemas.js.map +0 -1
  359. package/dist/utils/adminEntitySettings.d.ts +0 -17
  360. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  361. package/dist/utils/adminEntitySettings.js +0 -41
  362. package/dist/utils/adminEntitySettings.js.map +0 -1
  363. package/dist/utils/createApiKeyFields.d.ts +0 -15
  364. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  365. package/dist/utils/createApiKeyFields.js +0 -57
  366. package/dist/utils/createApiKeyFields.js.map +0 -1
  367. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  368. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  369. package/dist/utils/getEnabledSlugs.js +0 -32
  370. package/dist/utils/getEnabledSlugs.js.map +0 -1
  371. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  372. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  373. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  374. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  375. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  376. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  377. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  378. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  379. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  380. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  381. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  382. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  383. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  384. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  385. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  386. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  387. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  388. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  389. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  390. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  391. package/src/collections/createApiKeysCollection.ts +0 -373
  392. package/src/defaults.ts +0 -3
  393. package/src/endpoints/mcp.ts +0 -91
  394. package/src/mcp/createRequest.ts +0 -13
  395. package/src/mcp/getMcpHandler.ts +0 -545
  396. package/src/mcp/helpers/config.ts +0 -213
  397. package/src/mcp/helpers/fields.ts +0 -154
  398. package/src/mcp/helpers/fileValidation.ts +0 -362
  399. package/src/mcp/registerTool.ts +0 -22
  400. package/src/mcp/tools/auth/auth.ts +0 -71
  401. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  402. package/src/mcp/tools/auth/login.ts +0 -72
  403. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  404. package/src/mcp/tools/auth/unlock.ts +0 -64
  405. package/src/mcp/tools/auth/verify.ts +0 -57
  406. package/src/mcp/tools/collection/create.ts +0 -210
  407. package/src/mcp/tools/collection/delete.ts +0 -211
  408. package/src/mcp/tools/collection/find.ts +0 -224
  409. package/src/mcp/tools/collection/update.ts +0 -290
  410. package/src/mcp/tools/config/find.ts +0 -128
  411. package/src/mcp/tools/config/update.ts +0 -280
  412. package/src/mcp/tools/global/find.ts +0 -128
  413. package/src/mcp/tools/global/update.ts +0 -207
  414. package/src/mcp/tools/job/create.ts +0 -416
  415. package/src/mcp/tools/job/run.ts +0 -167
  416. package/src/mcp/tools/job/update.ts +0 -274
  417. package/src/mcp/tools/resource/create.ts +0 -211
  418. package/src/mcp/tools/resource/delete.ts +0 -218
  419. package/src/mcp/tools/resource/find.ts +0 -246
  420. package/src/mcp/tools/resource/update.ts +0 -383
  421. package/src/mcp/tools/schemas.ts +0 -520
  422. package/src/utils/adminEntitySettings.ts +0 -40
  423. package/src/utils/createApiKeyFields.ts +0 -72
  424. package/src/utils/getEnabledSlugs.ts +0 -42
  425. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  426. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  427. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  428. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  429. 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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"}