@payloadcms/plugin-mcp 4.0.0-internal.5b1e7cd → 4.0.0-internal.a0ef1b8

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 (340) hide show
  1. package/bin.js +39 -0
  2. package/dist/@types/assets.d.js +2 -0
  3. package/dist/@types/assets.d.js.map +1 -0
  4. package/dist/collection/getAccessField.d.ts +12 -0
  5. package/dist/collection/getAccessField.d.ts.map +1 -0
  6. package/dist/collection/getAccessField.js +57 -0
  7. package/dist/collection/getAccessField.js.map +1 -0
  8. package/dist/collection/index.d.ts +6 -0
  9. package/dist/collection/index.d.ts.map +1 -0
  10. package/dist/collection/index.js +60 -0
  11. package/dist/collection/index.js.map +1 -0
  12. package/dist/components/AccessField/index.client.d.ts +10 -0
  13. package/dist/components/AccessField/index.client.d.ts.map +1 -0
  14. package/dist/components/AccessField/index.client.js +305 -0
  15. package/dist/components/AccessField/index.client.js.map +1 -0
  16. package/dist/components/AccessField/index.css +93 -0
  17. package/dist/defineTool.d.ts +26 -0
  18. package/dist/defineTool.d.ts.map +1 -0
  19. package/dist/defineTool.js +37 -0
  20. package/dist/defineTool.js.map +1 -0
  21. package/dist/endpoint/access.d.ts +10 -0
  22. package/dist/endpoint/access.d.ts.map +1 -0
  23. package/dist/endpoint/access.js +106 -0
  24. package/dist/endpoint/access.js.map +1 -0
  25. package/dist/endpoint/index.d.ts +3 -0
  26. package/dist/endpoint/index.d.ts.map +1 -0
  27. package/dist/endpoint/index.js +36 -0
  28. package/dist/endpoint/index.js.map +1 -0
  29. package/dist/exports/client.d.ts +2 -0
  30. package/dist/exports/client.d.ts.map +1 -0
  31. package/dist/exports/client.js +4 -0
  32. package/dist/exports/client.js.map +1 -0
  33. package/dist/index.d.ts +4 -7
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +44 -67
  36. package/dist/index.js.map +1 -1
  37. package/dist/mcp/buildMcpServer.d.ts +19 -0
  38. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  39. package/dist/mcp/buildMcpServer.js +170 -0
  40. package/dist/mcp/buildMcpServer.js.map +1 -0
  41. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  42. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  43. package/dist/mcp/builtin/collections/authTools.js +250 -0
  44. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  45. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  46. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  47. package/dist/mcp/builtin/collections/createTool.js +91 -0
  48. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  49. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  50. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  51. package/dist/mcp/builtin/collections/deleteTool.js +117 -0
  52. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  53. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  54. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  55. package/dist/mcp/builtin/collections/findTool.js +159 -0
  56. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  57. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  58. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  59. package/dist/mcp/builtin/collections/updateTool.js +191 -0
  60. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  61. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  62. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  63. package/dist/mcp/builtin/globals/findTool.js +76 -0
  64. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  65. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  66. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  67. package/dist/mcp/builtin/globals/updateTool.js +96 -0
  68. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  69. package/dist/mcp/builtinTools.d.ts +37 -0
  70. package/dist/mcp/builtinTools.d.ts.map +1 -0
  71. package/dist/mcp/builtinTools.js +64 -0
  72. package/dist/mcp/builtinTools.js.map +1 -0
  73. package/dist/mcp/sanitizeMCPConfig.d.ts +17 -0
  74. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  75. package/dist/mcp/sanitizeMCPConfig.js +167 -0
  76. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  77. package/dist/stdio.d.ts +8 -0
  78. package/dist/stdio.d.ts.map +1 -0
  79. package/dist/stdio.js +89 -0
  80. package/dist/stdio.js.map +1 -0
  81. package/dist/types.d.ts +262 -455
  82. package/dist/types.d.ts.map +1 -1
  83. package/dist/types.js +6 -1
  84. package/dist/types.js.map +1 -1
  85. package/dist/utils/camelCase.d.ts.map +1 -1
  86. package/dist/utils/getLogger.d.ts +10 -0
  87. package/dist/utils/getLogger.d.ts.map +1 -0
  88. package/dist/utils/getLogger.js +22 -0
  89. package/dist/utils/getLogger.js.map +1 -0
  90. package/dist/utils/getPluginConfig.d.ts +12 -0
  91. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  92. package/dist/utils/getPluginConfig.js +15 -0
  93. package/dist/utils/getPluginConfig.js.map +1 -0
  94. package/dist/utils/localAPIDefaults.d.ts +20 -0
  95. package/dist/utils/localAPIDefaults.d.ts.map +1 -0
  96. package/dist/utils/localAPIDefaults.js +19 -0
  97. package/dist/utils/localAPIDefaults.js.map +1 -0
  98. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  99. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  100. package/dist/utils/resolveProjectRoot.js +15 -0
  101. package/dist/utils/resolveProjectRoot.js.map +1 -0
  102. package/dist/utils/schemaConversion/buildToolInput.d.ts +29 -0
  103. package/dist/utils/schemaConversion/buildToolInput.d.ts.map +1 -0
  104. package/dist/utils/schemaConversion/buildToolInput.js +51 -0
  105. package/dist/utils/schemaConversion/buildToolInput.js.map +1 -0
  106. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +2 -2
  107. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +1 -1
  108. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +1 -1
  109. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
  110. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  111. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
  112. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  113. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
  114. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  115. package/dist/utils/toStandardSchema.d.ts +5 -0
  116. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  117. package/dist/utils/toStandardSchema.js +4 -0
  118. package/dist/utils/toStandardSchema.js.map +1 -0
  119. package/package.json +35 -10
  120. package/src/@types/assets.d.ts +3 -0
  121. package/src/collection/getAccessField.ts +64 -0
  122. package/src/collection/index.ts +64 -0
  123. package/src/components/AccessField/index.client.tsx +344 -0
  124. package/src/components/AccessField/index.css +93 -0
  125. package/src/defineTool.ts +44 -0
  126. package/src/endpoint/access.ts +132 -0
  127. package/src/endpoint/index.ts +35 -0
  128. package/src/exports/client.ts +2 -0
  129. package/src/index.ts +35 -85
  130. package/src/mcp/buildMcpServer.ts +229 -0
  131. package/src/mcp/builtin/collections/authTools.ts +233 -0
  132. package/src/mcp/builtin/collections/createTool.ts +116 -0
  133. package/src/mcp/builtin/collections/deleteTool.ts +123 -0
  134. package/src/mcp/builtin/collections/findTool.ts +187 -0
  135. package/src/mcp/builtin/collections/updateTool.ts +210 -0
  136. package/src/mcp/builtin/globals/findTool.ts +96 -0
  137. package/src/mcp/builtin/globals/updateTool.ts +120 -0
  138. package/src/mcp/builtinTools.ts +84 -0
  139. package/src/mcp/sanitizeMCPConfig.ts +239 -0
  140. package/src/stdio.ts +98 -0
  141. package/src/types.ts +295 -490
  142. package/src/utils/getLogger.ts +22 -0
  143. package/src/utils/getPluginConfig.ts +24 -0
  144. package/src/utils/localAPIDefaults.ts +22 -0
  145. package/src/utils/resolveProjectRoot.ts +17 -0
  146. package/src/utils/schemaConversion/buildToolInput.ts +68 -0
  147. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +3 -3
  148. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
  149. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
  150. package/src/utils/toStandardSchema.ts +9 -0
  151. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  152. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  153. package/dist/collections/createApiKeysCollection.js +0 -317
  154. package/dist/collections/createApiKeysCollection.js.map +0 -1
  155. package/dist/defaults.d.ts +0 -4
  156. package/dist/defaults.d.ts.map +0 -1
  157. package/dist/defaults.js +0 -5
  158. package/dist/defaults.js.map +0 -1
  159. package/dist/endpoints/mcp.d.ts +0 -4
  160. package/dist/endpoints/mcp.d.ts.map +0 -1
  161. package/dist/endpoints/mcp.js +0 -71
  162. package/dist/endpoints/mcp.js.map +0 -1
  163. package/dist/mcp/createRequest.d.ts +0 -3
  164. package/dist/mcp/createRequest.d.ts.map +0 -1
  165. package/dist/mcp/createRequest.js +0 -14
  166. package/dist/mcp/createRequest.js.map +0 -1
  167. package/dist/mcp/getMcpHandler.d.ts +0 -4
  168. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  169. package/dist/mcp/getMcpHandler.js +0 -231
  170. package/dist/mcp/getMcpHandler.js.map +0 -1
  171. package/dist/mcp/helpers/config.d.ts +0 -22
  172. package/dist/mcp/helpers/config.d.ts.map +0 -1
  173. package/dist/mcp/helpers/config.js +0 -153
  174. package/dist/mcp/helpers/config.js.map +0 -1
  175. package/dist/mcp/helpers/fields.d.ts +0 -19
  176. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  177. package/dist/mcp/helpers/fields.js +0 -102
  178. package/dist/mcp/helpers/fields.js.map +0 -1
  179. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  180. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  181. package/dist/mcp/helpers/fileValidation.js +0 -267
  182. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  183. package/dist/mcp/registerTool.d.ts +0 -6
  184. package/dist/mcp/registerTool.d.ts.map +0 -1
  185. package/dist/mcp/registerTool.js +0 -18
  186. package/dist/mcp/registerTool.js.map +0 -1
  187. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  188. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  189. package/dist/mcp/tools/auth/auth.js +0 -57
  190. package/dist/mcp/tools/auth/auth.js.map +0 -1
  191. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  192. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  193. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  194. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  195. package/dist/mcp/tools/auth/login.d.ts +0 -4
  196. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  197. package/dist/mcp/tools/auth/login.js +0 -51
  198. package/dist/mcp/tools/auth/login.js.map +0 -1
  199. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  200. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  201. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  202. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  203. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  204. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  205. package/dist/mcp/tools/auth/unlock.js +0 -48
  206. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  207. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  208. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  209. package/dist/mcp/tools/auth/verify.js +0 -45
  210. package/dist/mcp/tools/auth/verify.js.map +0 -1
  211. package/dist/mcp/tools/collection/create.d.ts +0 -10
  212. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  213. package/dist/mcp/tools/collection/create.js +0 -139
  214. package/dist/mcp/tools/collection/create.js.map +0 -1
  215. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  216. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  217. package/dist/mcp/tools/collection/delete.js +0 -154
  218. package/dist/mcp/tools/collection/delete.js.map +0 -1
  219. package/dist/mcp/tools/collection/find.d.ts +0 -10
  220. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  221. package/dist/mcp/tools/collection/find.js +0 -165
  222. package/dist/mcp/tools/collection/find.js.map +0 -1
  223. package/dist/mcp/tools/collection/update.d.ts +0 -10
  224. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  225. package/dist/mcp/tools/collection/update.js +0 -209
  226. package/dist/mcp/tools/collection/update.js.map +0 -1
  227. package/dist/mcp/tools/config/find.d.ts +0 -10
  228. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  229. package/dist/mcp/tools/config/find.js +0 -97
  230. package/dist/mcp/tools/config/find.js.map +0 -1
  231. package/dist/mcp/tools/config/update.d.ts +0 -10
  232. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  233. package/dist/mcp/tools/config/update.js +0 -215
  234. package/dist/mcp/tools/config/update.js.map +0 -1
  235. package/dist/mcp/tools/global/find.d.ts +0 -5
  236. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  237. package/dist/mcp/tools/global/find.js +0 -82
  238. package/dist/mcp/tools/global/find.js.map +0 -1
  239. package/dist/mcp/tools/global/update.d.ts +0 -6
  240. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  241. package/dist/mcp/tools/global/update.js +0 -124
  242. package/dist/mcp/tools/global/update.js.map +0 -1
  243. package/dist/mcp/tools/job/create.d.ts +0 -10
  244. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  245. package/dist/mcp/tools/job/create.js +0 -293
  246. package/dist/mcp/tools/job/create.js.map +0 -1
  247. package/dist/mcp/tools/job/run.d.ts +0 -10
  248. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  249. package/dist/mcp/tools/job/run.js +0 -129
  250. package/dist/mcp/tools/job/run.js.map +0 -1
  251. package/dist/mcp/tools/job/update.d.ts +0 -11
  252. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  253. package/dist/mcp/tools/job/update.js +0 -186
  254. package/dist/mcp/tools/job/update.js.map +0 -1
  255. package/dist/mcp/tools/resource/create.d.ts +0 -6
  256. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  257. package/dist/mcp/tools/resource/create.js +0 -124
  258. package/dist/mcp/tools/resource/create.js.map +0 -1
  259. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  260. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  261. package/dist/mcp/tools/resource/delete.js +0 -151
  262. package/dist/mcp/tools/resource/delete.js.map +0 -1
  263. package/dist/mcp/tools/resource/find.d.ts +0 -5
  264. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  265. package/dist/mcp/tools/resource/find.js +0 -170
  266. package/dist/mcp/tools/resource/find.js.map +0 -1
  267. package/dist/mcp/tools/resource/update.d.ts +0 -6
  268. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  269. package/dist/mcp/tools/resource/update.js +0 -256
  270. package/dist/mcp/tools/resource/update.js.map +0 -1
  271. package/dist/mcp/tools/schemas.d.ts +0 -457
  272. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  273. package/dist/mcp/tools/schemas.js +0 -243
  274. package/dist/mcp/tools/schemas.js.map +0 -1
  275. package/dist/utils/adminEntitySettings.d.ts +0 -17
  276. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  277. package/dist/utils/adminEntitySettings.js +0 -41
  278. package/dist/utils/adminEntitySettings.js.map +0 -1
  279. package/dist/utils/createApiKeyFields.d.ts +0 -15
  280. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  281. package/dist/utils/createApiKeyFields.js +0 -57
  282. package/dist/utils/createApiKeyFields.js.map +0 -1
  283. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  284. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  285. package/dist/utils/getEnabledSlugs.js +0 -32
  286. package/dist/utils/getEnabledSlugs.js.map +0 -1
  287. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  288. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  289. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  290. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  291. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  292. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  293. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  294. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  295. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  296. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  297. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  298. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  299. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  300. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  301. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  302. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  303. package/src/collections/createApiKeysCollection.ts +0 -373
  304. package/src/defaults.ts +0 -3
  305. package/src/endpoints/mcp.ts +0 -91
  306. package/src/mcp/createRequest.ts +0 -13
  307. package/src/mcp/getMcpHandler.ts +0 -545
  308. package/src/mcp/helpers/config.ts +0 -213
  309. package/src/mcp/helpers/fields.ts +0 -154
  310. package/src/mcp/helpers/fileValidation.ts +0 -362
  311. package/src/mcp/registerTool.ts +0 -22
  312. package/src/mcp/tools/auth/auth.ts +0 -71
  313. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  314. package/src/mcp/tools/auth/login.ts +0 -72
  315. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  316. package/src/mcp/tools/auth/unlock.ts +0 -64
  317. package/src/mcp/tools/auth/verify.ts +0 -57
  318. package/src/mcp/tools/collection/create.ts +0 -210
  319. package/src/mcp/tools/collection/delete.ts +0 -211
  320. package/src/mcp/tools/collection/find.ts +0 -224
  321. package/src/mcp/tools/collection/update.ts +0 -290
  322. package/src/mcp/tools/config/find.ts +0 -128
  323. package/src/mcp/tools/config/update.ts +0 -280
  324. package/src/mcp/tools/global/find.ts +0 -128
  325. package/src/mcp/tools/global/update.ts +0 -207
  326. package/src/mcp/tools/job/create.ts +0 -416
  327. package/src/mcp/tools/job/run.ts +0 -167
  328. package/src/mcp/tools/job/update.ts +0 -274
  329. package/src/mcp/tools/resource/create.ts +0 -211
  330. package/src/mcp/tools/resource/delete.ts +0 -218
  331. package/src/mcp/tools/resource/find.ts +0 -246
  332. package/src/mcp/tools/resource/update.ts +0 -383
  333. package/src/mcp/tools/schemas.ts +0 -520
  334. package/src/utils/adminEntitySettings.ts +0 -40
  335. package/src/utils/createApiKeyFields.ts +0 -72
  336. package/src/utils/getEnabledSlugs.ts +0 -42
  337. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  338. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  339. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  340. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
@@ -1,280 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest } from 'payload'
3
-
4
- import { readFileSync, writeFileSync } from 'fs'
5
-
6
- import {
7
- addCollectionToConfig,
8
- removeCollectionFromConfig,
9
- updateAdminConfig,
10
- updateDatabaseConfig,
11
- updatePluginsConfig,
12
- } from '../../helpers/config.js'
13
- import { toolSchemas } from '../schemas.js'
14
-
15
- export const updateConfig = (
16
- req: PayloadRequest,
17
- verboseLogs: boolean,
18
- configFilePath: string,
19
- updateType: string,
20
- collectionName?: string,
21
- adminConfig?: any,
22
- databaseConfig?: any,
23
- pluginUpdates?: any,
24
- newContent?: string,
25
- ) => {
26
- const payload = req.payload
27
- if (verboseLogs) {
28
- payload.logger.info(`[payload-mcp] Updating config with update type: ${updateType}`)
29
- }
30
-
31
- // Security check: ensure we're working with the specified config file
32
- if (!configFilePath.startsWith(process.cwd()) && !configFilePath.startsWith('/')) {
33
- payload.logger.error(`[payload-mcp] Invalid config path attempted: ${configFilePath}`)
34
- return {
35
- content: [
36
- {
37
- type: 'text' as const,
38
- text: '❌ **Error**: Invalid config path',
39
- },
40
- ],
41
- }
42
- }
43
-
44
- try {
45
- // Read current config
46
- let currentContent: string
47
- try {
48
- currentContent = readFileSync(configFilePath, 'utf8')
49
- } catch (_ignore) {
50
- return {
51
- content: [
52
- {
53
- type: 'text' as const,
54
- text: `❌ **Error**: Config file not found: ${configFilePath}`,
55
- },
56
- ],
57
- }
58
- }
59
-
60
- let updatedContent: string
61
- let updateSummary: string[] = []
62
-
63
- switch (updateType) {
64
- case 'add_collection':
65
- if (!collectionName) {
66
- return {
67
- content: [
68
- {
69
- type: 'text' as const,
70
- text: '❌ **Error**: No collection name provided for add_collection update type',
71
- },
72
- ],
73
- }
74
- }
75
- updatedContent = addCollectionToConfig(currentContent, collectionName)
76
- updateSummary = [`Added collection: ${collectionName}`]
77
- break
78
-
79
- case 'remove_collection':
80
- if (!collectionName) {
81
- return {
82
- content: [
83
- {
84
- type: 'text' as const,
85
- text: '❌ **Error**: No collection name provided for remove_collection update type',
86
- },
87
- ],
88
- }
89
- }
90
- updatedContent = removeCollectionFromConfig(currentContent, collectionName)
91
- updateSummary = [`Removed collection: ${collectionName}`]
92
- break
93
-
94
- case 'replace_content':
95
- if (!newContent) {
96
- return {
97
- content: [
98
- {
99
- type: 'text' as const,
100
- text: '❌ **Error**: No new content provided for replace_content update type',
101
- },
102
- ],
103
- }
104
- }
105
- updatedContent = newContent
106
- updateSummary = ['Replaced entire config content']
107
- break
108
-
109
- case 'update_admin':
110
- if (!adminConfig) {
111
- return {
112
- content: [
113
- {
114
- type: 'text' as const,
115
- text: '❌ **Error**: No admin config provided for update_admin update type',
116
- },
117
- ],
118
- }
119
- }
120
- updatedContent = updateAdminConfig(currentContent, adminConfig)
121
- updateSummary = Object.keys(adminConfig).map((key) => `Updated admin config: ${key}`)
122
- break
123
-
124
- case 'update_database':
125
- if (!databaseConfig) {
126
- return {
127
- content: [
128
- {
129
- type: 'text' as const,
130
- text: '❌ **Error**: No database config provided for update_database update type',
131
- },
132
- ],
133
- }
134
- }
135
- updatedContent = updateDatabaseConfig(currentContent, databaseConfig)
136
- updateSummary = Object.keys(databaseConfig).map((key) => `Updated database config: ${key}`)
137
- break
138
-
139
- case 'update_plugins':
140
- if (!pluginUpdates) {
141
- return {
142
- content: [
143
- {
144
- type: 'text' as const,
145
- text: '❌ **Error**: No plugin updates provided for update_plugins update type',
146
- },
147
- ],
148
- }
149
- }
150
- updatedContent = updatePluginsConfig(currentContent, pluginUpdates)
151
- updateSummary = []
152
- if (pluginUpdates.add) {
153
- updateSummary.push(`Added plugins: ${pluginUpdates.add.join(', ')}`)
154
- }
155
- if (pluginUpdates.remove) {
156
- updateSummary.push(`Removed plugins: ${pluginUpdates.remove.join(', ')}`)
157
- }
158
- break
159
-
160
- default:
161
- return {
162
- content: [
163
- {
164
- type: 'text' as const,
165
- text: `❌ **Error**: Unknown update type: ${updateType}`,
166
- },
167
- ],
168
- }
169
- }
170
-
171
- // Write the updated content back to the file
172
- writeFileSync(configFilePath, updatedContent, 'utf8')
173
- if (verboseLogs) {
174
- payload.logger.info(`[payload-mcp] Successfully updated config file: ${configFilePath}`)
175
- }
176
-
177
- return {
178
- content: [
179
- {
180
- type: 'text' as const,
181
- text: `✅ **Config updated successfully!**
182
-
183
- **File**: \`${configFilePath}\`
184
- **Update Type**: ${updateType}
185
-
186
- **Changes Made**:
187
- ${updateSummary.map((summary) => `- ${summary}`).join('\n')}
188
-
189
- **Updated Config Content:**
190
- \`\`\`typescript
191
- ${updatedContent}
192
- \`\`\``,
193
- },
194
- ],
195
- }
196
- } catch (error) {
197
- const errorMessage = (error as Error).message
198
- payload.logger.error(`[payload-mcp] Error updating config: ${errorMessage}`)
199
- return {
200
- content: [
201
- {
202
- type: 'text' as const,
203
- text: `❌ **Error updating config**: ${errorMessage}`,
204
- },
205
- ],
206
- }
207
- }
208
- }
209
-
210
- export const updateConfigTool = (
211
- server: McpServer,
212
- req: PayloadRequest,
213
- verboseLogs: boolean,
214
- configFilePath: string,
215
- ) => {
216
- const tool = ({
217
- adminConfig,
218
- collectionName,
219
- databaseConfig,
220
- newContent,
221
- pluginUpdates,
222
- updateType,
223
- }: {
224
- adminConfig?: any
225
- collectionName?: string
226
- databaseConfig?: any
227
- newContent?: string
228
- pluginUpdates?: any
229
- updateType: string
230
- }) => {
231
- const payload = req.payload
232
-
233
- if (verboseLogs) {
234
- payload.logger.info(`[payload-mcp] Updating config: ${updateType}`)
235
- }
236
-
237
- try {
238
- const result = updateConfig(
239
- req,
240
- verboseLogs,
241
- configFilePath,
242
- updateType,
243
- collectionName,
244
- adminConfig,
245
- databaseConfig,
246
- pluginUpdates,
247
- newContent,
248
- )
249
-
250
- if (verboseLogs) {
251
- payload.logger.info(`[payload-mcp] Config update completed for: ${updateType}`)
252
- }
253
-
254
- return result
255
- } catch (error) {
256
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
257
- payload.logger.error(`[payload-mcp] Error updating config: ${errorMessage}`)
258
-
259
- return {
260
- content: [
261
- {
262
- type: 'text' as const,
263
- text: `Error updating config: ${errorMessage}`,
264
- },
265
- ],
266
- }
267
- }
268
- }
269
-
270
- server.registerTool(
271
- 'updateConfig',
272
- {
273
- description: toolSchemas.updateConfig.description,
274
- inputSchema: toolSchemas.updateConfig.parameters.shape,
275
- },
276
- (args) => {
277
- return tool(args)
278
- },
279
- )
280
- }
@@ -1,128 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest, SelectType, TypedUser } from 'payload'
3
-
4
- import type { MCPPluginConfig } from '../../../types.js'
5
-
6
- import { toCamelCase } from '../../../utils/camelCase.js'
7
- import { toolSchemas } from '../schemas.js'
8
-
9
- export const findGlobalTool = (
10
- server: McpServer,
11
- req: PayloadRequest,
12
- user: TypedUser,
13
- verboseLogs: boolean,
14
- globalSlug: string,
15
- globals: MCPPluginConfig['globals'],
16
- ) => {
17
- const tool = async (
18
- depth: number = 0,
19
- locale?: string,
20
- fallbackLocale?: string,
21
- select?: string,
22
- ): Promise<{
23
- content: Array<{
24
- text: string
25
- type: 'text'
26
- }>
27
- }> => {
28
- const payload = req.payload
29
-
30
- if (verboseLogs) {
31
- payload.logger.info(
32
- `[payload-mcp] Reading global: ${globalSlug}, depth: ${depth}${locale ? `, locale: ${locale}` : ''}`,
33
- )
34
- }
35
-
36
- try {
37
- const findOptions: Parameters<typeof payload.findGlobal>[0] = {
38
- slug: globalSlug,
39
- depth,
40
- user,
41
- }
42
-
43
- let selectClause: SelectType | undefined
44
- if (select) {
45
- try {
46
- selectClause = JSON.parse(select) as SelectType
47
- } catch (_parseError) {
48
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON for global: ${select}`)
49
- const response = {
50
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],
51
- }
52
- return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {
53
- content: Array<{
54
- text: string
55
- type: 'text'
56
- }>
57
- }
58
- }
59
- }
60
-
61
- // Add locale parameters if provided
62
- if (locale) {
63
- findOptions.locale = locale
64
- }
65
- if (fallbackLocale) {
66
- findOptions.fallbackLocale = fallbackLocale
67
- }
68
- if (selectClause) {
69
- findOptions.select = selectClause
70
- }
71
-
72
- const result = await payload.findGlobal(findOptions)
73
-
74
- if (verboseLogs) {
75
- payload.logger.info(`[payload-mcp] Found global: ${globalSlug}`)
76
- }
77
-
78
- const response = {
79
- content: [
80
- {
81
- type: 'text' as const,
82
- text: `Global "${globalSlug}":
83
- \`\`\`json
84
- ${JSON.stringify(result)}
85
- \`\`\``,
86
- },
87
- ],
88
- }
89
-
90
- return (globals?.[globalSlug]?.overrideResponse?.(response, result, req) || response) as {
91
- content: Array<{
92
- text: string
93
- type: 'text'
94
- }>
95
- }
96
- } catch (error) {
97
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
98
- payload.logger.error(`[payload-mcp] Error reading global ${globalSlug}: ${errorMessage}`)
99
- const response = {
100
- content: [
101
- {
102
- type: 'text' as const,
103
- text: `❌ **Error reading global "${globalSlug}":** ${errorMessage}`,
104
- },
105
- ],
106
- }
107
- return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {
108
- content: Array<{
109
- text: string
110
- type: 'text'
111
- }>
112
- }
113
- }
114
- }
115
-
116
- if (globals?.[globalSlug]?.enabled) {
117
- server.registerTool(
118
- `find${globalSlug.charAt(0).toUpperCase() + toCamelCase(globalSlug).slice(1)}`,
119
- {
120
- description: `${toolSchemas.findGlobal.description.trim()}\n\n${globals?.[globalSlug]?.description || ''}`,
121
- inputSchema: toolSchemas.findGlobal.parameters.shape,
122
- },
123
- async ({ depth, fallbackLocale, locale, select }) => {
124
- return await tool(depth, locale, fallbackLocale, select)
125
- },
126
- )
127
- }
128
- }
@@ -1,207 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { JSONSchema4 } from 'json-schema'
3
- import type { PayloadRequest, SelectType, TypedUser } from 'payload'
4
-
5
- import { z } from 'zod'
6
-
7
- import type { MCPPluginConfig } from '../../../types.js'
8
-
9
- import { toCamelCase } from '../../../utils/camelCase.js'
10
- import {
11
- getGlobalVirtualFieldNames,
12
- stripVirtualFields,
13
- } from '../../../utils/getVirtualFieldNames.js'
14
- import { convertCollectionSchemaToZod } from '../../../utils/schemaConversion/convertCollectionSchemaToZod.js'
15
- import { toolSchemas } from '../schemas.js'
16
-
17
- export const updateGlobalTool = (
18
- server: McpServer,
19
- req: PayloadRequest,
20
- user: TypedUser,
21
- verboseLogs: boolean,
22
- globalSlug: string,
23
- globals: MCPPluginConfig['globals'],
24
- schema: JSONSchema4,
25
- ) => {
26
- const tool = async (
27
- data: string,
28
- draft: boolean = false,
29
- depth: number = 0,
30
- locale?: string,
31
- fallbackLocale?: string,
32
- select?: string,
33
- ): Promise<{
34
- content: Array<{
35
- text: string
36
- type: 'text'
37
- }>
38
- }> => {
39
- const payload = req.payload
40
-
41
- if (verboseLogs) {
42
- payload.logger.info(
43
- `[payload-mcp] Updating global: ${globalSlug}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,
44
- )
45
- }
46
-
47
- try {
48
- // Parse the data JSON
49
- let parsedData: Record<string, unknown>
50
- try {
51
- parsedData = JSON.parse(data)
52
-
53
- const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, globalSlug)
54
- parsedData = stripVirtualFields(parsedData, virtualFieldNames)
55
-
56
- if (verboseLogs) {
57
- payload.logger.info(
58
- `[payload-mcp] Parsed data for ${globalSlug}: ${JSON.stringify(parsedData)}`,
59
- )
60
- }
61
- } catch (_parseError) {
62
- payload.logger.error(`[payload-mcp] Invalid JSON data provided: ${data}`)
63
- const response = {
64
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON data provided' }],
65
- }
66
- return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {
67
- content: Array<{
68
- text: string
69
- type: 'text'
70
- }>
71
- }
72
- }
73
-
74
- let selectClause: SelectType | undefined
75
- if (select) {
76
- try {
77
- selectClause = JSON.parse(select) as SelectType
78
- } catch (_parseError) {
79
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON for global: ${select}`)
80
- const response = {
81
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],
82
- }
83
- return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {
84
- content: Array<{
85
- text: string
86
- type: 'text'
87
- }>
88
- }
89
- }
90
- }
91
-
92
- const updateOptions: Parameters<typeof payload.updateGlobal>[0] = {
93
- slug: globalSlug,
94
- data: parsedData,
95
- depth,
96
- draft,
97
- user,
98
- }
99
-
100
- // Add locale parameters if provided
101
- if (locale) {
102
- updateOptions.locale = locale
103
- }
104
- if (fallbackLocale) {
105
- updateOptions.fallbackLocale = fallbackLocale
106
- }
107
- if (selectClause) {
108
- updateOptions.select = selectClause
109
- }
110
-
111
- const result = await payload.updateGlobal(updateOptions)
112
-
113
- if (verboseLogs) {
114
- payload.logger.info(`[payload-mcp] Successfully updated global: ${globalSlug}`)
115
- }
116
-
117
- const response = {
118
- content: [
119
- {
120
- type: 'text' as const,
121
- text: `Global "${globalSlug}" updated successfully!
122
- \`\`\`json
123
- ${JSON.stringify(result)}
124
- \`\`\``,
125
- },
126
- ],
127
- }
128
-
129
- return (globals?.[globalSlug]?.overrideResponse?.(response, result, req) || response) as {
130
- content: Array<{
131
- text: string
132
- type: 'text'
133
- }>
134
- }
135
- } catch (error) {
136
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
137
- payload.logger.error(`[payload-mcp] Error updating global ${globalSlug}: ${errorMessage}`)
138
-
139
- const response = {
140
- content: [
141
- {
142
- type: 'text' as const,
143
- text: `Error updating global "${globalSlug}": ${errorMessage}`,
144
- },
145
- ],
146
- }
147
-
148
- return (globals?.[globalSlug]?.overrideResponse?.(response, {}, req) || response) as {
149
- content: Array<{
150
- text: string
151
- type: 'text'
152
- }>
153
- }
154
- }
155
- }
156
-
157
- if (globals?.[globalSlug]?.enabled) {
158
- const convertedFields = convertCollectionSchemaToZod(schema)
159
-
160
- // Make all fields optional for partial updates (PATCH-style)
161
- const optionalFields = Object.fromEntries(
162
- Object.entries(convertedFields.shape).map(([key, value]) => [key, (value as any).optional()]),
163
- )
164
-
165
- const updateGlobalSchema = z.object({
166
- ...optionalFields,
167
- depth: z.number().optional().describe('Optional: Depth of relationships to populate'),
168
- draft: z.boolean().optional().describe('Optional: Whether to save as draft (default: false)'),
169
- fallbackLocale: z
170
- .string()
171
- .optional()
172
- .describe('Optional: fallback locale code to use when requested locale is not available'),
173
- locale: z
174
- .string()
175
- .optional()
176
- .describe(
177
- 'Optional: locale code to update data in (e.g., "en", "es"). Use "all" to update all locales for localized fields',
178
- ),
179
- select: z
180
- .string()
181
- .optional()
182
- .describe(
183
- 'Optional: define exactly which fields you\'d like to return in the response (JSON), e.g., \'{"siteName": "My Site"}\'',
184
- ),
185
- })
186
-
187
- server.registerTool(
188
- `update${globalSlug.charAt(0).toUpperCase() + toCamelCase(globalSlug).slice(1)}`,
189
- {
190
- description: `${toolSchemas.updateGlobal.description.trim()}\n\n${globals?.[globalSlug]?.description || ''}`,
191
- inputSchema: updateGlobalSchema.shape,
192
- },
193
- async (params: Record<string, unknown>) => {
194
- const { depth, draft, fallbackLocale, locale, select, ...rest } = params
195
- const data = JSON.stringify(rest)
196
- return await tool(
197
- data,
198
- draft as boolean,
199
- depth as number,
200
- locale as string,
201
- fallbackLocale as string,
202
- select as string | undefined,
203
- )
204
- },
205
- )
206
- }
207
- }