@payloadcms/plugin-mcp 4.0.0-internal.d28e9fb → 4.0.0-internal.d3909a9

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 (409) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +39 -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 +116 -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 +235 -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 +312 -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 +63 -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 +60 -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 +137 -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 +111 -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 +90 -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 +88 -0
  62. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  63. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  64. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  65. package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
  66. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  67. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  68. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  69. package/dist/mcp/builtin/collections/findTool.js +146 -0
  70. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  71. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  72. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  73. package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
  74. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  75. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  76. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  77. package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
  78. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  79. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  80. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  81. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +103 -0
  82. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  83. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  84. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
  86. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  87. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  88. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/collections/updateTool.js +172 -0
  90. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  91. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  92. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  93. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  94. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  95. package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
  96. package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
  97. package/dist/mcp/builtin/formatEntityError.js +55 -0
  98. package/dist/mcp/builtin/formatEntityError.js.map +1 -0
  99. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  100. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  101. package/dist/mcp/builtin/getConfigInfoTool.js +69 -0
  102. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  103. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  104. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  105. package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
  106. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  107. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  108. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  109. package/dist/mcp/builtin/globals/findTool.js +67 -0
  110. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  111. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  112. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  113. package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
  114. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  115. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  116. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  117. package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
  118. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  119. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  120. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  121. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +81 -0
  122. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  123. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  124. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  125. package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
  126. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  127. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  128. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  129. package/dist/mcp/builtin/globals/updateTool.js +78 -0
  130. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  131. package/dist/mcp/builtinTools.d.ts +168 -0
  132. package/dist/mcp/builtinTools.d.ts.map +1 -0
  133. package/dist/mcp/builtinTools.js +169 -0
  134. package/dist/mcp/builtinTools.js.map +1 -0
  135. package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
  136. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  137. package/dist/mcp/sanitizeMCPConfig.js +233 -0
  138. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  139. package/dist/stdio.d.ts +8 -0
  140. package/dist/stdio.d.ts.map +1 -0
  141. package/dist/stdio.js +128 -0
  142. package/dist/stdio.js.map +1 -0
  143. package/dist/types.d.ts +263 -447
  144. package/dist/types.d.ts.map +1 -1
  145. package/dist/types.js +4 -1
  146. package/dist/types.js.map +1 -1
  147. package/dist/utils/getLogger.d.ts +10 -0
  148. package/dist/utils/getLogger.d.ts.map +1 -0
  149. package/dist/utils/getLogger.js +22 -0
  150. package/dist/utils/getLogger.js.map +1 -0
  151. package/dist/utils/getPluginConfig.d.ts +12 -0
  152. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  153. package/dist/utils/getPluginConfig.js +15 -0
  154. package/dist/utils/getPluginConfig.js.map +1 -0
  155. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  156. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  157. package/dist/utils/resolveProjectRoot.js +15 -0
  158. package/dist/utils/resolveProjectRoot.js.map +1 -0
  159. package/dist/utils/toStandardSchema.d.ts +5 -0
  160. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  161. package/dist/utils/toStandardSchema.js +4 -0
  162. package/dist/utils/toStandardSchema.js.map +1 -0
  163. package/package.json +41 -26
  164. package/src/defaultAccess.ts +3 -0
  165. package/src/defineTool.ts +44 -0
  166. package/src/endpoint/access.ts +111 -0
  167. package/src/endpoint/index.ts +107 -0
  168. package/src/exports/client.ts +3 -0
  169. package/src/exports/internal.ts +1 -0
  170. package/src/index.ts +31 -89
  171. package/src/mcp/buildMcpServer.ts +294 -0
  172. package/src/mcp/builtin/collections/authTools.ts +280 -0
  173. package/src/mcp/builtin/collections/countTool.ts +61 -0
  174. package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
  175. package/src/mcp/builtin/collections/createTool.ts +143 -0
  176. package/src/mcp/builtin/collections/deleteTool.ts +97 -0
  177. package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
  178. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  179. package/src/mcp/builtin/collections/fileInput.ts +127 -0
  180. package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
  181. package/src/mcp/builtin/collections/findTool.ts +134 -0
  182. package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
  183. package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
  184. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +91 -0
  185. package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
  186. package/src/mcp/builtin/collections/updateTool.ts +173 -0
  187. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  188. package/src/mcp/builtin/formatEntityError.ts +77 -0
  189. package/src/mcp/builtin/getConfigInfoTool.ts +68 -0
  190. package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
  191. package/src/mcp/builtin/globals/findTool.ts +66 -0
  192. package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
  193. package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
  194. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +73 -0
  195. package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
  196. package/src/mcp/builtin/globals/updateTool.ts +92 -0
  197. package/src/mcp/builtinTools.ts +161 -0
  198. package/src/mcp/sanitizeMCPConfig.ts +281 -0
  199. package/src/stdio.ts +131 -0
  200. package/src/types.ts +312 -486
  201. package/src/utils/getLogger.ts +22 -0
  202. package/src/utils/getPluginConfig.ts +24 -0
  203. package/src/utils/resolveProjectRoot.ts +17 -0
  204. package/src/utils/toStandardSchema.ts +9 -0
  205. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  206. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  207. package/dist/collections/createApiKeysCollection.js +0 -317
  208. package/dist/collections/createApiKeysCollection.js.map +0 -1
  209. package/dist/defaults.d.ts +0 -4
  210. package/dist/defaults.d.ts.map +0 -1
  211. package/dist/defaults.js +0 -5
  212. package/dist/defaults.js.map +0 -1
  213. package/dist/endpoints/mcp.d.ts +0 -4
  214. package/dist/endpoints/mcp.d.ts.map +0 -1
  215. package/dist/endpoints/mcp.js +0 -71
  216. package/dist/endpoints/mcp.js.map +0 -1
  217. package/dist/mcp/createRequest.d.ts +0 -3
  218. package/dist/mcp/createRequest.d.ts.map +0 -1
  219. package/dist/mcp/createRequest.js +0 -14
  220. package/dist/mcp/createRequest.js.map +0 -1
  221. package/dist/mcp/getMcpHandler.d.ts +0 -4
  222. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  223. package/dist/mcp/getMcpHandler.js +0 -231
  224. package/dist/mcp/getMcpHandler.js.map +0 -1
  225. package/dist/mcp/helpers/config.d.ts +0 -22
  226. package/dist/mcp/helpers/config.d.ts.map +0 -1
  227. package/dist/mcp/helpers/config.js +0 -153
  228. package/dist/mcp/helpers/config.js.map +0 -1
  229. package/dist/mcp/helpers/fields.d.ts +0 -19
  230. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  231. package/dist/mcp/helpers/fields.js +0 -102
  232. package/dist/mcp/helpers/fields.js.map +0 -1
  233. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  234. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  235. package/dist/mcp/helpers/fileValidation.js +0 -267
  236. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  237. package/dist/mcp/registerTool.d.ts +0 -6
  238. package/dist/mcp/registerTool.d.ts.map +0 -1
  239. package/dist/mcp/registerTool.js +0 -18
  240. package/dist/mcp/registerTool.js.map +0 -1
  241. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  242. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  243. package/dist/mcp/tools/auth/auth.js +0 -57
  244. package/dist/mcp/tools/auth/auth.js.map +0 -1
  245. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  246. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  247. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  248. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  249. package/dist/mcp/tools/auth/login.d.ts +0 -4
  250. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  251. package/dist/mcp/tools/auth/login.js +0 -51
  252. package/dist/mcp/tools/auth/login.js.map +0 -1
  253. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  254. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  255. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  256. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  257. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  258. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  259. package/dist/mcp/tools/auth/unlock.js +0 -48
  260. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  261. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  262. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  263. package/dist/mcp/tools/auth/verify.js +0 -45
  264. package/dist/mcp/tools/auth/verify.js.map +0 -1
  265. package/dist/mcp/tools/collection/create.d.ts +0 -10
  266. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  267. package/dist/mcp/tools/collection/create.js +0 -139
  268. package/dist/mcp/tools/collection/create.js.map +0 -1
  269. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  270. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  271. package/dist/mcp/tools/collection/delete.js +0 -154
  272. package/dist/mcp/tools/collection/delete.js.map +0 -1
  273. package/dist/mcp/tools/collection/find.d.ts +0 -10
  274. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  275. package/dist/mcp/tools/collection/find.js +0 -165
  276. package/dist/mcp/tools/collection/find.js.map +0 -1
  277. package/dist/mcp/tools/collection/update.d.ts +0 -10
  278. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  279. package/dist/mcp/tools/collection/update.js +0 -209
  280. package/dist/mcp/tools/collection/update.js.map +0 -1
  281. package/dist/mcp/tools/config/find.d.ts +0 -10
  282. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  283. package/dist/mcp/tools/config/find.js +0 -97
  284. package/dist/mcp/tools/config/find.js.map +0 -1
  285. package/dist/mcp/tools/config/update.d.ts +0 -10
  286. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  287. package/dist/mcp/tools/config/update.js +0 -215
  288. package/dist/mcp/tools/config/update.js.map +0 -1
  289. package/dist/mcp/tools/global/find.d.ts +0 -5
  290. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  291. package/dist/mcp/tools/global/find.js +0 -82
  292. package/dist/mcp/tools/global/find.js.map +0 -1
  293. package/dist/mcp/tools/global/update.d.ts +0 -6
  294. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  295. package/dist/mcp/tools/global/update.js +0 -124
  296. package/dist/mcp/tools/global/update.js.map +0 -1
  297. package/dist/mcp/tools/job/create.d.ts +0 -10
  298. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  299. package/dist/mcp/tools/job/create.js +0 -293
  300. package/dist/mcp/tools/job/create.js.map +0 -1
  301. package/dist/mcp/tools/job/run.d.ts +0 -10
  302. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  303. package/dist/mcp/tools/job/run.js +0 -129
  304. package/dist/mcp/tools/job/run.js.map +0 -1
  305. package/dist/mcp/tools/job/update.d.ts +0 -11
  306. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  307. package/dist/mcp/tools/job/update.js +0 -186
  308. package/dist/mcp/tools/job/update.js.map +0 -1
  309. package/dist/mcp/tools/resource/create.d.ts +0 -6
  310. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  311. package/dist/mcp/tools/resource/create.js +0 -124
  312. package/dist/mcp/tools/resource/create.js.map +0 -1
  313. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  314. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  315. package/dist/mcp/tools/resource/delete.js +0 -151
  316. package/dist/mcp/tools/resource/delete.js.map +0 -1
  317. package/dist/mcp/tools/resource/find.d.ts +0 -5
  318. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  319. package/dist/mcp/tools/resource/find.js +0 -170
  320. package/dist/mcp/tools/resource/find.js.map +0 -1
  321. package/dist/mcp/tools/resource/update.d.ts +0 -6
  322. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  323. package/dist/mcp/tools/resource/update.js +0 -256
  324. package/dist/mcp/tools/resource/update.js.map +0 -1
  325. package/dist/mcp/tools/schemas.d.ts +0 -457
  326. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  327. package/dist/mcp/tools/schemas.js +0 -243
  328. package/dist/mcp/tools/schemas.js.map +0 -1
  329. package/dist/utils/adminEntitySettings.d.ts +0 -17
  330. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  331. package/dist/utils/adminEntitySettings.js +0 -41
  332. package/dist/utils/adminEntitySettings.js.map +0 -1
  333. package/dist/utils/createApiKeyFields.d.ts +0 -15
  334. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  335. package/dist/utils/createApiKeyFields.js +0 -57
  336. package/dist/utils/createApiKeyFields.js.map +0 -1
  337. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  338. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  339. package/dist/utils/getEnabledSlugs.js +0 -32
  340. package/dist/utils/getEnabledSlugs.js.map +0 -1
  341. package/dist/utils/getVirtualFieldNames.d.ts +0 -14
  342. package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
  343. package/dist/utils/getVirtualFieldNames.js +0 -35
  344. package/dist/utils/getVirtualFieldNames.js.map +0 -1
  345. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  346. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  347. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  348. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  349. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  350. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  351. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  352. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  353. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  354. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  355. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  356. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  357. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  358. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  359. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  360. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  361. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  362. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  363. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  364. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  365. package/dist/utils/transformPointDataToPayload.d.ts +0 -7
  366. package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
  367. package/dist/utils/transformPointDataToPayload.js +0 -28
  368. package/dist/utils/transformPointDataToPayload.js.map +0 -1
  369. package/src/collections/createApiKeysCollection.ts +0 -373
  370. package/src/defaults.ts +0 -3
  371. package/src/endpoints/mcp.ts +0 -91
  372. package/src/mcp/createRequest.ts +0 -13
  373. package/src/mcp/getMcpHandler.ts +0 -545
  374. package/src/mcp/helpers/config.ts +0 -213
  375. package/src/mcp/helpers/fields.ts +0 -154
  376. package/src/mcp/helpers/fileValidation.ts +0 -362
  377. package/src/mcp/registerTool.ts +0 -22
  378. package/src/mcp/tools/auth/auth.ts +0 -71
  379. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  380. package/src/mcp/tools/auth/login.ts +0 -72
  381. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  382. package/src/mcp/tools/auth/unlock.ts +0 -64
  383. package/src/mcp/tools/auth/verify.ts +0 -57
  384. package/src/mcp/tools/collection/create.ts +0 -210
  385. package/src/mcp/tools/collection/delete.ts +0 -211
  386. package/src/mcp/tools/collection/find.ts +0 -224
  387. package/src/mcp/tools/collection/update.ts +0 -290
  388. package/src/mcp/tools/config/find.ts +0 -128
  389. package/src/mcp/tools/config/update.ts +0 -280
  390. package/src/mcp/tools/global/find.ts +0 -128
  391. package/src/mcp/tools/global/update.ts +0 -207
  392. package/src/mcp/tools/job/create.ts +0 -416
  393. package/src/mcp/tools/job/run.ts +0 -167
  394. package/src/mcp/tools/job/update.ts +0 -274
  395. package/src/mcp/tools/resource/create.ts +0 -211
  396. package/src/mcp/tools/resource/delete.ts +0 -218
  397. package/src/mcp/tools/resource/find.ts +0 -246
  398. package/src/mcp/tools/resource/update.ts +0 -383
  399. package/src/mcp/tools/schemas.ts +0 -520
  400. package/src/utils/adminEntitySettings.ts +0 -40
  401. package/src/utils/createApiKeyFields.ts +0 -72
  402. package/src/utils/getEnabledSlugs.ts +0 -42
  403. package/src/utils/getVirtualFieldNames.ts +0 -53
  404. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  405. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  406. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  407. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  408. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
  409. package/src/utils/transformPointDataToPayload.ts +0 -40
@@ -0,0 +1,233 @@
1
+ import { defaultAccess } from '../defaultAccess.js';
2
+ import { COLLECTION_AUTH_BUILTIN_ENTRIES, COLLECTION_AUTH_BUILTINS, COLLECTION_BUILTIN_ENTRIES, COLLECTION_BUILTINS, GLOBAL_BUILTIN_ENTRIES, GLOBAL_BUILTINS, TOOL_BUILTIN_ENTRIES, TOOL_BUILTINS } from './builtinTools.js';
3
+ /**
4
+ * Converts the user-configured `MCPPluginConfig` into a `SanitizedMCPPluginConfig`:
5
+ * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global
6
+ * tool maps into a single `items` array.
7
+ * - Applies built-in tools for collections and globals, respecting opt-out user overrides.
8
+ *
9
+ * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']
10
+ * ?.options` holds the sanitized result
11
+ */ export const sanitizeMCPConfig = ({ config, pluginConfig })=>{
12
+ const items = [];
13
+ for (const collection of config.collections ?? []){
14
+ items.push(...sanitizeCollectionConfig({
15
+ collection,
16
+ pluginConfig
17
+ }));
18
+ }
19
+ for (const global of config.globals ?? []){
20
+ items.push(...sanitizeGlobalConfig({
21
+ global,
22
+ pluginConfig
23
+ }));
24
+ }
25
+ for (const [configKey, { mcpName, tool }] of TOOL_BUILTIN_ENTRIES){
26
+ items.push({
27
+ type: 'tool',
28
+ configKey,
29
+ label: tool.annotations?.title ?? configKey,
30
+ mcpName,
31
+ tool: {
32
+ ...tool,
33
+ access: tool.access ?? defaultAccess
34
+ }
35
+ });
36
+ }
37
+ for (const [configKey, tool] of Object.entries(pluginConfig.tools ?? {})){
38
+ if (configKey in TOOL_BUILTINS) {
39
+ continue;
40
+ }
41
+ items.push({
42
+ type: 'tool',
43
+ configKey,
44
+ label: tool.annotations?.title ?? configKey,
45
+ mcpName: configKey,
46
+ tool: {
47
+ ...tool,
48
+ access: tool.access ?? defaultAccess
49
+ }
50
+ });
51
+ }
52
+ for (const [configKey, prompt] of Object.entries(pluginConfig.prompts ?? {})){
53
+ items.push({
54
+ type: 'prompt',
55
+ configKey,
56
+ label: prompt.title ?? configKey,
57
+ mcpName: configKey,
58
+ prompt: {
59
+ ...prompt,
60
+ access: prompt.access ?? defaultAccess
61
+ }
62
+ });
63
+ }
64
+ for (const [configKey, resource] of Object.entries(pluginConfig.resources ?? {})){
65
+ items.push({
66
+ type: 'resource',
67
+ configKey,
68
+ label: resource.title ?? configKey,
69
+ mcpName: configKey,
70
+ resource: {
71
+ ...resource,
72
+ access: resource.access ?? defaultAccess
73
+ }
74
+ });
75
+ }
76
+ return {
77
+ disabled: pluginConfig.disabled,
78
+ hooks: pluginConfig.hooks,
79
+ items,
80
+ mcp: pluginConfig.mcp,
81
+ overrideGetAuthorizedMCP: pluginConfig.overrideGetAuthorizedMCP
82
+ };
83
+ };
84
+ const sanitizeCollectionConfig = ({ collection, pluginConfig })=>{
85
+ const slug = collection.slug;
86
+ const collectionPluginConfig = pluginConfig.collections?.[slug];
87
+ const items = [];
88
+ /**
89
+ * Payload disables duplicate for auth collections by default unless the
90
+ * collection explicitly opts back in with `disableDuplicate: false`.
91
+ */ const isDuplicateDisabled = collection.disableDuplicate === true || Boolean(collection.auth) && collection.disableDuplicate !== false;
92
+ for (const [toolKey, { mcpName, requiresDuplicateEnabled, requiresUpload, requiresVersions, tool }] of COLLECTION_BUILTIN_ENTRIES){
93
+ if (requiresVersions && !collection.versions) {
94
+ continue;
95
+ }
96
+ if (requiresDuplicateEnabled && isDuplicateDisabled) {
97
+ continue;
98
+ }
99
+ if (requiresUpload && !collection.upload) {
100
+ continue;
101
+ }
102
+ const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey];
103
+ if (matchedConfigEntry === false) {
104
+ continue;
105
+ }
106
+ const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined;
107
+ const annotations = {
108
+ ...tool.annotations,
109
+ ...override?.annotations
110
+ };
111
+ items.push({
112
+ type: 'collectionTool',
113
+ collectionSlug: slug,
114
+ configKey: toolKey,
115
+ label: annotations.title ?? toolKey,
116
+ mcpName,
117
+ tool: {
118
+ ...tool,
119
+ access: override?.access ?? tool.access ?? defaultAccess,
120
+ annotations,
121
+ description: override?.description ?? tool.description,
122
+ overrideResponse: override?.overrideResponse ?? collectionPluginConfig?.overrideResponse ?? tool.overrideResponse
123
+ }
124
+ });
125
+ }
126
+ if (collection.auth) {
127
+ for (const [authToolKey, { mcpName, tool }] of COLLECTION_AUTH_BUILTIN_ENTRIES){
128
+ const matchedConfigEntry = collectionPluginConfig?.tools?.[authToolKey];
129
+ if (!matchedConfigEntry) {
130
+ continue;
131
+ }
132
+ // `true` means "enable, no override"; only the object form carries fields.
133
+ const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined;
134
+ const annotations = {
135
+ ...tool.annotations,
136
+ ...override?.annotations
137
+ };
138
+ items.push({
139
+ type: 'collectionTool',
140
+ collectionSlug: slug,
141
+ configKey: authToolKey,
142
+ label: annotations.title ?? authToolKey,
143
+ mcpName,
144
+ tool: {
145
+ ...tool,
146
+ access: override?.access ?? tool.access ?? defaultAccess,
147
+ annotations,
148
+ description: override?.description ?? tool.description,
149
+ overrideResponse: override?.overrideResponse ?? collectionPluginConfig?.overrideResponse ?? tool.overrideResponse
150
+ }
151
+ });
152
+ }
153
+ }
154
+ // Cast: builtin keys are filtered out below, so the remaining values are
155
+ // always custom tools (`CollectionTool`) or undefined
156
+ const customEntries = Object.entries(collectionPluginConfig?.tools ?? {});
157
+ for (const [configKey, customTool] of customEntries){
158
+ if (configKey in COLLECTION_BUILTINS || configKey in COLLECTION_AUTH_BUILTINS) {
159
+ continue;
160
+ }
161
+ if (!customTool) {
162
+ continue;
163
+ }
164
+ items.push({
165
+ type: 'collectionTool',
166
+ collectionSlug: slug,
167
+ configKey,
168
+ label: customTool.annotations?.title ?? configKey,
169
+ mcpName: configKey,
170
+ tool: {
171
+ ...customTool,
172
+ access: customTool.access ?? defaultAccess
173
+ }
174
+ });
175
+ }
176
+ return items;
177
+ };
178
+ const sanitizeGlobalConfig = ({ global, pluginConfig })=>{
179
+ const slug = global.slug;
180
+ const globalPluginConfig = pluginConfig.globals?.[slug];
181
+ const items = [];
182
+ for (const [toolKey, { mcpName, requiresVersions, tool }] of GLOBAL_BUILTIN_ENTRIES){
183
+ if (requiresVersions && !global.versions) {
184
+ continue;
185
+ }
186
+ const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey];
187
+ if (matchedConfigEntry === false) {
188
+ continue;
189
+ }
190
+ const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined;
191
+ const annotations = {
192
+ ...tool.annotations,
193
+ ...override?.annotations
194
+ };
195
+ items.push({
196
+ type: 'globalTool',
197
+ configKey: toolKey,
198
+ globalSlug: slug,
199
+ label: annotations.title ?? toolKey,
200
+ mcpName,
201
+ tool: {
202
+ ...tool,
203
+ access: override?.access ?? tool.access ?? defaultAccess,
204
+ annotations,
205
+ description: override?.description ?? tool.description,
206
+ overrideResponse: override?.overrideResponse ?? globalPluginConfig?.overrideResponse ?? tool.overrideResponse
207
+ }
208
+ });
209
+ }
210
+ const customEntries = Object.entries(globalPluginConfig?.tools ?? {});
211
+ for (const [configKey, customTool] of customEntries){
212
+ if (configKey in GLOBAL_BUILTINS) {
213
+ continue;
214
+ }
215
+ if (!customTool) {
216
+ continue;
217
+ }
218
+ items.push({
219
+ type: 'globalTool',
220
+ configKey,
221
+ globalSlug: slug,
222
+ label: customTool.annotations?.title ?? configKey,
223
+ mcpName: configKey,
224
+ tool: {
225
+ ...customTool,
226
+ access: customTool.access ?? defaultAccess
227
+ }
228
+ });
229
+ }
230
+ return items;
231
+ };
232
+
233
+ //# sourceMappingURL=sanitizeMCPConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mcp/sanitizeMCPConfig.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Config,\n GlobalConfig,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport type {\n CollectionMCPItem,\n CollectionTool,\n GlobalMCPItem,\n GlobalTool,\n MCPItem,\n MCPPluginConfig,\n SanitizedMCPPluginConfig,\n} from '../types.js'\n\nimport { defaultAccess } from '../defaultAccess.js'\nimport {\n COLLECTION_AUTH_BUILTIN_ENTRIES,\n COLLECTION_AUTH_BUILTINS,\n COLLECTION_BUILTIN_ENTRIES,\n COLLECTION_BUILTINS,\n GLOBAL_BUILTIN_ENTRIES,\n GLOBAL_BUILTINS,\n TOOL_BUILTIN_ENTRIES,\n TOOL_BUILTINS,\n} from './builtinTools.js'\n\n/**\n * Converts the user-configured `MCPPluginConfig` into a `SanitizedMCPPluginConfig`:\n * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global\n * tool maps into a single `items` array.\n * - Applies built-in tools for collections and globals, respecting opt-out user overrides.\n *\n * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']\n * ?.options` holds the sanitized result\n */\nexport const sanitizeMCPConfig = ({\n config,\n pluginConfig,\n}: {\n config: Config | SanitizedConfig\n pluginConfig: MCPPluginConfig\n}): SanitizedMCPPluginConfig => {\n const items: MCPItem[] = []\n\n for (const collection of config.collections ?? []) {\n items.push(...sanitizeCollectionConfig({ collection, pluginConfig }))\n }\n\n for (const global of config.globals ?? []) {\n items.push(...sanitizeGlobalConfig({ global, pluginConfig }))\n }\n\n for (const [configKey, { mcpName, tool }] of TOOL_BUILTIN_ENTRIES) {\n items.push({\n type: 'tool',\n configKey,\n label: tool.annotations?.title ?? configKey,\n mcpName,\n tool: { ...tool, access: tool.access ?? defaultAccess },\n })\n }\n\n for (const [configKey, tool] of Object.entries(pluginConfig.tools ?? {})) {\n if (configKey in TOOL_BUILTINS) {\n continue\n }\n items.push({\n type: 'tool',\n configKey,\n label: tool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: { ...tool, access: tool.access ?? defaultAccess },\n })\n }\n\n for (const [configKey, prompt] of Object.entries(pluginConfig.prompts ?? {})) {\n items.push({\n type: 'prompt',\n configKey,\n label: prompt.title ?? configKey,\n mcpName: configKey,\n prompt: { ...prompt, access: prompt.access ?? defaultAccess },\n })\n }\n\n for (const [configKey, resource] of Object.entries(pluginConfig.resources ?? {})) {\n items.push({\n type: 'resource',\n configKey,\n label: resource.title ?? configKey,\n mcpName: configKey,\n resource: { ...resource, access: resource.access ?? defaultAccess },\n })\n }\n\n return {\n disabled: pluginConfig.disabled,\n hooks: pluginConfig.hooks,\n items,\n mcp: pluginConfig.mcp,\n overrideGetAuthorizedMCP: pluginConfig.overrideGetAuthorizedMCP,\n }\n}\n\nconst sanitizeCollectionConfig = ({\n collection,\n pluginConfig,\n}: {\n collection: CollectionConfig | SanitizedCollectionConfig\n pluginConfig: MCPPluginConfig\n}): CollectionMCPItem[] => {\n const slug = collection.slug\n const collectionPluginConfig = pluginConfig.collections?.[slug]\n const items: CollectionMCPItem[] = []\n /**\n * Payload disables duplicate for auth collections by default unless the\n * collection explicitly opts back in with `disableDuplicate: false`.\n */\n const isDuplicateDisabled =\n collection.disableDuplicate === true ||\n (Boolean(collection.auth) && collection.disableDuplicate !== false)\n\n for (const [\n toolKey,\n { mcpName, requiresDuplicateEnabled, requiresUpload, requiresVersions, tool },\n ] of COLLECTION_BUILTIN_ENTRIES) {\n if (requiresVersions && !collection.versions) {\n continue\n }\n if (requiresDuplicateEnabled && isDuplicateDisabled) {\n continue\n }\n if (requiresUpload && !collection.upload) {\n continue\n }\n const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey]\n if (matchedConfigEntry === false) {\n continue\n }\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey: toolKey,\n label: annotations.title ?? toolKey,\n mcpName,\n tool: {\n ...tool,\n access: override?.access ?? tool.access ?? defaultAccess,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n collectionPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n\n if (collection.auth) {\n for (const [authToolKey, { mcpName, tool }] of COLLECTION_AUTH_BUILTIN_ENTRIES) {\n const matchedConfigEntry = collectionPluginConfig?.tools?.[authToolKey]\n if (!matchedConfigEntry) {\n continue\n }\n // `true` means \"enable, no override\"; only the object form carries fields.\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey: authToolKey,\n label: annotations.title ?? authToolKey,\n mcpName,\n tool: {\n ...tool,\n access: override?.access ?? tool.access ?? defaultAccess,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n collectionPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n }\n\n // Cast: builtin keys are filtered out below, so the remaining values are\n // always custom tools (`CollectionTool`) or undefined\n const customEntries = Object.entries(collectionPluginConfig?.tools ?? {}) as Array<\n [string, CollectionTool | undefined]\n >\n for (const [configKey, customTool] of customEntries) {\n if (configKey in COLLECTION_BUILTINS || configKey in COLLECTION_AUTH_BUILTINS) {\n continue\n }\n if (!customTool) {\n continue\n }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey,\n label: customTool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: { ...customTool, access: customTool.access ?? defaultAccess },\n })\n }\n\n return items\n}\n\nconst sanitizeGlobalConfig = ({\n global,\n pluginConfig,\n}: {\n global: GlobalConfig | SanitizedGlobalConfig\n pluginConfig: MCPPluginConfig\n}): GlobalMCPItem[] => {\n const slug = global.slug\n const globalPluginConfig = pluginConfig.globals?.[slug]\n const items: GlobalMCPItem[] = []\n\n for (const [toolKey, { mcpName, requiresVersions, tool }] of GLOBAL_BUILTIN_ENTRIES) {\n if (requiresVersions && !global.versions) {\n continue\n }\n const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey]\n if (matchedConfigEntry === false) {\n continue\n }\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'globalTool',\n configKey: toolKey,\n globalSlug: slug,\n label: annotations.title ?? toolKey,\n mcpName,\n tool: {\n ...tool,\n access: override?.access ?? tool.access ?? defaultAccess,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n globalPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n\n const customEntries = Object.entries(globalPluginConfig?.tools ?? {}) as Array<\n [string, GlobalTool | undefined]\n >\n for (const [configKey, customTool] of customEntries) {\n if (configKey in GLOBAL_BUILTINS) {\n continue\n }\n if (!customTool) {\n continue\n }\n items.push({\n type: 'globalTool',\n configKey,\n globalSlug: slug,\n label: customTool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: { ...customTool, access: customTool.access ?? defaultAccess },\n })\n }\n\n return items\n}\n"],"names":["defaultAccess","COLLECTION_AUTH_BUILTIN_ENTRIES","COLLECTION_AUTH_BUILTINS","COLLECTION_BUILTIN_ENTRIES","COLLECTION_BUILTINS","GLOBAL_BUILTIN_ENTRIES","GLOBAL_BUILTINS","TOOL_BUILTIN_ENTRIES","TOOL_BUILTINS","sanitizeMCPConfig","config","pluginConfig","items","collection","collections","push","sanitizeCollectionConfig","global","globals","sanitizeGlobalConfig","configKey","mcpName","tool","type","label","annotations","title","access","Object","entries","tools","prompt","prompts","resource","resources","disabled","hooks","mcp","overrideGetAuthorizedMCP","slug","collectionPluginConfig","isDuplicateDisabled","disableDuplicate","Boolean","auth","toolKey","requiresDuplicateEnabled","requiresUpload","requiresVersions","versions","upload","matchedConfigEntry","override","undefined","collectionSlug","description","overrideResponse","authToolKey","customEntries","customTool","globalPluginConfig","globalSlug"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Starts Payload's MCP server over stdin and stdout.
3
+ *
4
+ * Set `PAYLOAD_MCP_AUTHORIZATION` to authenticate. In development,
5
+ * `PAYLOAD_MCP_OVERRIDE_ACCESS=true` skips access checks.
6
+ */
7
+ export declare const runMcpStdio: () => Promise<void>;
8
+ //# sourceMappingURL=stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CA4GhD,CAAA"}
package/dist/stdio.js ADDED
@@ -0,0 +1,128 @@
1
+ /* eslint-disable no-console */ import { serveStdio } from '@modelcontextprotocol/server/stdio';
2
+ import { fileURLToPath, pathToFileURL } from 'node:url';
3
+ import { createPayloadRequest, getPayload } from 'payload';
4
+ import { findConfig, loadEnv } from 'payload/node';
5
+ import { getAuthorizedMCP } from './endpoint/access.js';
6
+ import { buildMcpServer } from './mcp/buildMcpServer.js';
7
+ import { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js';
8
+ import { getPluginConfig } from './utils/getPluginConfig.js';
9
+ import { resolveProjectRoot } from './utils/resolveProjectRoot.js';
10
+ /**
11
+ * Starts Payload's MCP server over stdin and stdout.
12
+ *
13
+ * Set `PAYLOAD_MCP_AUTHORIZATION` to authenticate. In development,
14
+ * `PAYLOAD_MCP_OVERRIDE_ACCESS=true` skips access checks.
15
+ */ export const runMcpStdio = async ()=>{
16
+ // MCP clients may start this command from another folder. Move to the Payload
17
+ // project so findConfig() can find the config.
18
+ const projectRoot = resolveProjectRoot(fileURLToPath(import.meta.url));
19
+ if (projectRoot) {
20
+ process.chdir(projectRoot);
21
+ }
22
+ loadEnv();
23
+ const configPath = findConfig();
24
+ const configModule = await import(pathToFileURL(configPath).toString());
25
+ const config = await (configModule.default ?? configModule);
26
+ /**
27
+ * stdout is only for MCP messages. The spec says the server must not write
28
+ * logs there and may write them to stderr instead.
29
+ *
30
+ * The 2.0 client library recovers from stray stdout logs, but that behavior is not
31
+ * guaranteed. Move Payload logs to stderr so Payload does not add invalid data
32
+ * to stdout. Keep options from configurable loggers. Replace pre-built loggers
33
+ * because their output cannot be redirected.
34
+ *
35
+ * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#stdio
36
+ */ const loggerConfig = config;
37
+ if (loggerConfig.logger && typeof loggerConfig.logger === 'object' && 'options' in loggerConfig.logger) {
38
+ loggerConfig.logger.destination = process.stderr;
39
+ } else {
40
+ loggerConfig.logger = {
41
+ destination: process.stderr,
42
+ options: {}
43
+ };
44
+ }
45
+ const payload = await getPayload({
46
+ config,
47
+ cron: false,
48
+ disableOnInit: true
49
+ });
50
+ let pluginConfig;
51
+ try {
52
+ pluginConfig = getPluginConfig({
53
+ config: payload.config
54
+ });
55
+ } catch {
56
+ // The command also works when mcpPlugin() is not in the Payload config.
57
+ pluginConfig = sanitizeMCPConfig({
58
+ config: payload.config,
59
+ pluginConfig: {}
60
+ });
61
+ const fallbackPlugin = (config)=>config;
62
+ Object.assign(fallbackPlugin, {
63
+ slug: '@payloadcms/plugin-mcp',
64
+ sanitizedOptions: pluginConfig
65
+ });
66
+ payload.config.plugins ??= [];
67
+ payload.config.plugins.push(fallbackPlugin);
68
+ }
69
+ const overrideAccessEnv = process.env.PAYLOAD_MCP_OVERRIDE_ACCESS;
70
+ let overrideAccess = false;
71
+ if (overrideAccessEnv === 'true') {
72
+ overrideAccess = true;
73
+ } else if (overrideAccessEnv && overrideAccessEnv !== 'false') {
74
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS must be "true" or "false".');
75
+ }
76
+ if (overrideAccess && process.env.NODE_ENV !== 'development') {
77
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS is only available in development.');
78
+ }
79
+ const headers = new Headers();
80
+ if (process.env.PAYLOAD_MCP_AUTHORIZATION) {
81
+ headers.set('Authorization', process.env.PAYLOAD_MCP_AUTHORIZATION);
82
+ }
83
+ const req = await createPayloadRequest({
84
+ payload,
85
+ req: {
86
+ headers
87
+ }
88
+ });
89
+ req.payloadAPI = 'MCP';
90
+ const authorizedMCP = await getAuthorizedMCP({
91
+ overrideAccess,
92
+ req
93
+ });
94
+ const stdioServer = serveStdio(()=>buildMcpServer({
95
+ authorizedMCP,
96
+ pluginConfig,
97
+ req
98
+ }), {
99
+ onerror: (err)=>{
100
+ // MCP messages use stdout, so write SDK errors to stderr.
101
+ console.error('[payload-mcp] error serving MCP over stdio:', err);
102
+ }
103
+ });
104
+ // Close the MCP server and Payload when the client disconnects or the process stops.
105
+ let isShuttingDown = false;
106
+ const shutdown = async ()=>{
107
+ if (isShuttingDown) {
108
+ return;
109
+ }
110
+ isShuttingDown = true;
111
+ try {
112
+ await stdioServer.close();
113
+ } catch (err) {
114
+ console.error('[payload-mcp] error closing server:', err);
115
+ }
116
+ try {
117
+ await payload.destroy();
118
+ } catch (err) {
119
+ console.error('[payload-mcp] error destroying payload:', err);
120
+ }
121
+ process.exit(0);
122
+ };
123
+ process.once('SIGINT', ()=>void shutdown());
124
+ process.once('SIGTERM', ()=>void shutdown());
125
+ process.stdin.once('close', ()=>void shutdown());
126
+ };
127
+
128
+ //# sourceMappingURL=stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/stdio.ts"],"sourcesContent":["import type { Config, Plugin, SanitizedConfig } from 'payload'\n\n/* eslint-disable no-console */\nimport { serveStdio } from '@modelcontextprotocol/server/stdio'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { createPayloadRequest, getPayload } from 'payload'\nimport { findConfig, loadEnv } from 'payload/node'\n\nimport type { SanitizedMCPPluginConfig } from './types.js'\n\nimport { getAuthorizedMCP } from './endpoint/access.js'\nimport { buildMcpServer } from './mcp/buildMcpServer.js'\nimport { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js'\nimport { getPluginConfig } from './utils/getPluginConfig.js'\nimport { resolveProjectRoot } from './utils/resolveProjectRoot.js'\n\n/**\n * Starts Payload's MCP server over stdin and stdout.\n *\n * Set `PAYLOAD_MCP_AUTHORIZATION` to authenticate. In development,\n * `PAYLOAD_MCP_OVERRIDE_ACCESS=true` skips access checks.\n */\nexport const runMcpStdio = async (): Promise<void> => {\n // MCP clients may start this command from another folder. Move to the Payload\n // project so findConfig() can find the config.\n const projectRoot = resolveProjectRoot(fileURLToPath(import.meta.url))\n if (projectRoot) {\n process.chdir(projectRoot)\n }\n\n loadEnv()\n const configPath = findConfig()\n const configModule = await import(pathToFileURL(configPath).toString())\n const config = (await (configModule.default ?? configModule)) as SanitizedConfig\n\n /**\n * stdout is only for MCP messages. The spec says the server must not write\n * logs there and may write them to stderr instead.\n *\n * The 2.0 client library recovers from stray stdout logs, but that behavior is not\n * guaranteed. Move Payload logs to stderr so Payload does not add invalid data\n * to stdout. Keep options from configurable loggers. Replace pre-built loggers\n * because their output cannot be redirected.\n *\n * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#stdio\n */\n const loggerConfig: { logger?: Config['logger'] } = config\n if (\n loggerConfig.logger &&\n typeof loggerConfig.logger === 'object' &&\n 'options' in loggerConfig.logger\n ) {\n loggerConfig.logger.destination = process.stderr\n } else {\n loggerConfig.logger = { destination: process.stderr, options: {} }\n }\n\n const payload = await getPayload({ config, cron: false, disableOnInit: true })\n\n let pluginConfig: SanitizedMCPPluginConfig\n try {\n pluginConfig = getPluginConfig({ config: payload.config })\n } catch {\n // The command also works when mcpPlugin() is not in the Payload config.\n pluginConfig = sanitizeMCPConfig({ config: payload.config, pluginConfig: {} })\n\n const fallbackPlugin: Plugin = (config) => config\n Object.assign(fallbackPlugin, {\n slug: '@payloadcms/plugin-mcp',\n sanitizedOptions: pluginConfig,\n })\n payload.config.plugins ??= []\n payload.config.plugins.push(fallbackPlugin)\n }\n\n const overrideAccessEnv = process.env.PAYLOAD_MCP_OVERRIDE_ACCESS\n let overrideAccess = false\n\n if (overrideAccessEnv === 'true') {\n overrideAccess = true\n } else if (overrideAccessEnv && overrideAccessEnv !== 'false') {\n throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS must be \"true\" or \"false\".')\n }\n\n if (overrideAccess && process.env.NODE_ENV !== 'development') {\n throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS is only available in development.')\n }\n\n const headers = new Headers()\n if (process.env.PAYLOAD_MCP_AUTHORIZATION) {\n headers.set('Authorization', process.env.PAYLOAD_MCP_AUTHORIZATION)\n }\n\n const req = await createPayloadRequest({ payload, req: { headers } })\n req.payloadAPI = 'MCP' as const\n const authorizedMCP = await getAuthorizedMCP({ overrideAccess, req })\n\n const stdioServer = serveStdio(() => buildMcpServer({ authorizedMCP, pluginConfig, req }), {\n onerror: (err) => {\n // MCP messages use stdout, so write SDK errors to stderr.\n console.error('[payload-mcp] error serving MCP over stdio:', err)\n },\n })\n\n // Close the MCP server and Payload when the client disconnects or the process stops.\n let isShuttingDown = false\n const shutdown = async () => {\n if (isShuttingDown) {\n return\n }\n isShuttingDown = true\n\n try {\n await stdioServer.close()\n } catch (err) {\n console.error('[payload-mcp] error closing server:', err)\n }\n\n try {\n await payload.destroy()\n } catch (err) {\n console.error('[payload-mcp] error destroying payload:', err)\n }\n\n process.exit(0)\n }\n\n process.once('SIGINT', () => void shutdown())\n process.once('SIGTERM', () => void shutdown())\n process.stdin.once('close', () => void shutdown())\n}\n"],"names":["serveStdio","fileURLToPath","pathToFileURL","createPayloadRequest","getPayload","findConfig","loadEnv","getAuthorizedMCP","buildMcpServer","sanitizeMCPConfig","getPluginConfig","resolveProjectRoot","runMcpStdio","projectRoot","url","process","chdir","configPath","configModule","toString","config","default","loggerConfig","logger","destination","stderr","options","payload","cron","disableOnInit","pluginConfig","fallbackPlugin","Object","assign","slug","sanitizedOptions","plugins","push","overrideAccessEnv","env","PAYLOAD_MCP_OVERRIDE_ACCESS","overrideAccess","Error","NODE_ENV","headers","Headers","PAYLOAD_MCP_AUTHORIZATION","set","req","payloadAPI","authorizedMCP","stdioServer","onerror","err","console","error","isShuttingDown","shutdown","close","destroy","exit","once","stdin"],"mappings":"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"}