@payloadcms/plugin-mcp 4.0.0-internal.38b7f1d → 4.0.0-internal.4c792ad

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 (418) 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/defaultAccess.d.ts +3 -0
  5. package/dist/defaultAccess.d.ts.map +1 -0
  6. package/dist/defaultAccess.js +3 -0
  7. package/dist/defaultAccess.js.map +1 -0
  8. package/dist/defineTool.d.ts +26 -0
  9. package/dist/defineTool.d.ts.map +1 -0
  10. package/dist/defineTool.js +37 -0
  11. package/dist/defineTool.js.map +1 -0
  12. package/dist/endpoint/access.d.ts +22 -0
  13. package/dist/endpoint/access.d.ts.map +1 -0
  14. package/dist/endpoint/access.js +100 -0
  15. package/dist/endpoint/access.js.map +1 -0
  16. package/dist/endpoint/index.d.ts +3 -0
  17. package/dist/endpoint/index.d.ts.map +1 -0
  18. package/dist/endpoint/index.js +47 -0
  19. package/dist/endpoint/index.js.map +1 -0
  20. package/dist/exports/client.d.ts +2 -0
  21. package/dist/exports/client.d.ts.map +1 -0
  22. package/dist/exports/client.js +4 -0
  23. package/dist/exports/client.js.map +1 -0
  24. package/dist/exports/internal.d.ts +2 -0
  25. package/dist/exports/internal.d.ts.map +1 -0
  26. package/dist/exports/internal.js +3 -0
  27. package/dist/exports/internal.js.map +1 -0
  28. package/dist/index.d.ts +4 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +39 -67
  31. package/dist/index.js.map +1 -1
  32. package/dist/mcp/buildMcpServer.d.ts +19 -0
  33. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  34. package/dist/mcp/buildMcpServer.js +201 -0
  35. package/dist/mcp/buildMcpServer.js.map +1 -0
  36. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  37. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  38. package/dist/mcp/builtin/collections/authTools.js +288 -0
  39. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  40. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  41. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  42. package/dist/mcp/builtin/collections/countTool.js +69 -0
  43. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  44. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  45. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  46. package/dist/mcp/builtin/collections/countVersionsTool.js +65 -0
  47. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  48. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  49. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  50. package/dist/mcp/builtin/collections/createTool.js +87 -0
  51. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  52. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  53. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  54. package/dist/mcp/builtin/collections/deleteTool.js +111 -0
  55. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  56. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  57. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  58. package/dist/mcp/builtin/collections/duplicateTool.js +97 -0
  59. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  60. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  61. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  62. package/dist/mcp/builtin/collections/findDistinctTool.js +93 -0
  63. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  64. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  65. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  66. package/dist/mcp/builtin/collections/findTool.js +165 -0
  67. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  68. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  69. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  70. package/dist/mcp/builtin/collections/findVersionByIDTool.js +84 -0
  71. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  72. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  73. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  74. package/dist/mcp/builtin/collections/findVersionsTool.js +99 -0
  75. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  76. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  77. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  78. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  79. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  80. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  81. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  82. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +47 -0
  83. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  84. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  85. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  86. package/dist/mcp/builtin/collections/restoreVersionTool.js +82 -0
  87. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  88. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  89. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  90. package/dist/mcp/builtin/collections/updateTool.js +192 -0
  91. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  92. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  93. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  94. package/dist/mcp/builtin/getConfigInfoTool.js +71 -0
  95. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  96. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  97. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  98. package/dist/mcp/builtin/globals/countVersionsTool.js +65 -0
  99. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  100. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  101. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  102. package/dist/mcp/builtin/globals/findTool.js +73 -0
  103. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  104. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  105. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  106. package/dist/mcp/builtin/globals/findVersionByIDTool.js +80 -0
  107. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  108. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  109. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  110. package/dist/mcp/builtin/globals/findVersionsTool.js +95 -0
  111. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  112. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  113. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  114. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +47 -0
  115. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  116. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  117. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  118. package/dist/mcp/builtin/globals/restoreVersionTool.js +78 -0
  119. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  120. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  121. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  122. package/dist/mcp/builtin/globals/updateTool.js +87 -0
  123. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  124. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  125. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  126. package/dist/mcp/builtin/validateEntityData.js +82 -0
  127. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  128. package/dist/mcp/builtinTools.d.ts +162 -0
  129. package/dist/mcp/builtinTools.d.ts.map +1 -0
  130. package/dist/mcp/builtinTools.js +163 -0
  131. package/dist/mcp/builtinTools.js.map +1 -0
  132. package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
  133. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  134. package/dist/mcp/sanitizeMCPConfig.js +229 -0
  135. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  136. package/dist/stdio.d.ts +9 -0
  137. package/dist/stdio.d.ts.map +1 -0
  138. package/dist/stdio.js +108 -0
  139. package/dist/stdio.js.map +1 -0
  140. package/dist/types.d.ts +222 -461
  141. package/dist/types.d.ts.map +1 -1
  142. package/dist/types.js +6 -1
  143. package/dist/types.js.map +1 -1
  144. package/dist/utils/camelCase.d.ts.map +1 -1
  145. package/dist/utils/getLogger.d.ts +10 -0
  146. package/dist/utils/getLogger.d.ts.map +1 -0
  147. package/dist/utils/getLogger.js +22 -0
  148. package/dist/utils/getLogger.js.map +1 -0
  149. package/dist/utils/getPluginConfig.d.ts +12 -0
  150. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  151. package/dist/utils/getPluginConfig.js +15 -0
  152. package/dist/utils/getPluginConfig.js.map +1 -0
  153. package/dist/utils/localAPIDefaults.d.ts +20 -0
  154. package/dist/utils/localAPIDefaults.d.ts.map +1 -0
  155. package/dist/utils/localAPIDefaults.js +19 -0
  156. package/dist/utils/localAPIDefaults.js.map +1 -0
  157. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  158. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  159. package/dist/utils/resolveProjectRoot.js +15 -0
  160. package/dist/utils/resolveProjectRoot.js.map +1 -0
  161. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +11 -0
  162. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  163. package/dist/utils/schemaConversion/getEntityInputSchema.js +34 -0
  164. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  165. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +2 -2
  166. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +1 -1
  167. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +1 -1
  168. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
  169. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  170. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
  171. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  172. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
  173. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  174. package/dist/utils/toStandardSchema.d.ts +5 -0
  175. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  176. package/dist/utils/toStandardSchema.js +4 -0
  177. package/dist/utils/toStandardSchema.js.map +1 -0
  178. package/dist/utils/whereSchema.d.ts +9 -0
  179. package/dist/utils/whereSchema.d.ts.map +1 -0
  180. package/dist/utils/whereSchema.js +13 -0
  181. package/dist/utils/whereSchema.js.map +1 -0
  182. package/package.json +32 -10
  183. package/src/@types/assets.d.ts +3 -0
  184. package/src/defaultAccess.ts +3 -0
  185. package/src/defineTool.ts +44 -0
  186. package/src/endpoint/access.ts +119 -0
  187. package/src/endpoint/index.ts +48 -0
  188. package/src/exports/client.ts +3 -0
  189. package/src/exports/internal.ts +1 -0
  190. package/src/index.ts +29 -87
  191. package/src/mcp/buildMcpServer.ts +264 -0
  192. package/src/mcp/builtin/collections/authTools.ts +269 -0
  193. package/src/mcp/builtin/collections/countTool.ts +74 -0
  194. package/src/mcp/builtin/collections/countVersionsTool.ts +70 -0
  195. package/src/mcp/builtin/collections/createTool.ts +112 -0
  196. package/src/mcp/builtin/collections/deleteTool.ts +126 -0
  197. package/src/mcp/builtin/collections/duplicateTool.ts +135 -0
  198. package/src/mcp/builtin/collections/findDistinctTool.ts +120 -0
  199. package/src/mcp/builtin/collections/findTool.ts +217 -0
  200. package/src/mcp/builtin/collections/findVersionByIDTool.ts +110 -0
  201. package/src/mcp/builtin/collections/findVersionsTool.ts +155 -0
  202. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  203. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +46 -0
  204. package/src/mcp/builtin/collections/restoreVersionTool.ts +108 -0
  205. package/src/mcp/builtin/collections/updateTool.ts +211 -0
  206. package/src/mcp/builtin/getConfigInfoTool.ts +69 -0
  207. package/src/mcp/builtin/globals/countVersionsTool.ts +69 -0
  208. package/src/mcp/builtin/globals/findTool.ts +105 -0
  209. package/src/mcp/builtin/globals/findVersionByIDTool.ts +104 -0
  210. package/src/mcp/builtin/globals/findVersionsTool.ts +148 -0
  211. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +41 -0
  212. package/src/mcp/builtin/globals/restoreVersionTool.ts +100 -0
  213. package/src/mcp/builtin/globals/updateTool.ts +115 -0
  214. package/src/mcp/builtin/validateEntityData.ts +132 -0
  215. package/src/mcp/builtinTools.ts +154 -0
  216. package/src/mcp/sanitizeMCPConfig.ts +277 -0
  217. package/src/stdio.ts +113 -0
  218. package/src/types.ts +263 -493
  219. package/src/utils/getLogger.ts +22 -0
  220. package/src/utils/getPluginConfig.ts +24 -0
  221. package/src/utils/localAPIDefaults.ts +22 -0
  222. package/src/utils/resolveProjectRoot.ts +17 -0
  223. package/src/utils/schemaConversion/getEntityInputSchema.ts +78 -0
  224. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +3 -3
  225. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
  226. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
  227. package/src/utils/toStandardSchema.ts +9 -0
  228. package/src/utils/whereSchema.ts +24 -0
  229. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  230. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  231. package/dist/collections/createApiKeysCollection.js +0 -317
  232. package/dist/collections/createApiKeysCollection.js.map +0 -1
  233. package/dist/defaults.d.ts +0 -4
  234. package/dist/defaults.d.ts.map +0 -1
  235. package/dist/defaults.js +0 -5
  236. package/dist/defaults.js.map +0 -1
  237. package/dist/endpoints/mcp.d.ts +0 -4
  238. package/dist/endpoints/mcp.d.ts.map +0 -1
  239. package/dist/endpoints/mcp.js +0 -71
  240. package/dist/endpoints/mcp.js.map +0 -1
  241. package/dist/mcp/createRequest.d.ts +0 -3
  242. package/dist/mcp/createRequest.d.ts.map +0 -1
  243. package/dist/mcp/createRequest.js +0 -14
  244. package/dist/mcp/createRequest.js.map +0 -1
  245. package/dist/mcp/getMcpHandler.d.ts +0 -4
  246. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  247. package/dist/mcp/getMcpHandler.js +0 -231
  248. package/dist/mcp/getMcpHandler.js.map +0 -1
  249. package/dist/mcp/helpers/config.d.ts +0 -22
  250. package/dist/mcp/helpers/config.d.ts.map +0 -1
  251. package/dist/mcp/helpers/config.js +0 -153
  252. package/dist/mcp/helpers/config.js.map +0 -1
  253. package/dist/mcp/helpers/fields.d.ts +0 -19
  254. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  255. package/dist/mcp/helpers/fields.js +0 -102
  256. package/dist/mcp/helpers/fields.js.map +0 -1
  257. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  258. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  259. package/dist/mcp/helpers/fileValidation.js +0 -267
  260. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  261. package/dist/mcp/registerTool.d.ts +0 -6
  262. package/dist/mcp/registerTool.d.ts.map +0 -1
  263. package/dist/mcp/registerTool.js +0 -18
  264. package/dist/mcp/registerTool.js.map +0 -1
  265. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  266. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  267. package/dist/mcp/tools/auth/auth.js +0 -57
  268. package/dist/mcp/tools/auth/auth.js.map +0 -1
  269. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  270. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  271. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  272. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  273. package/dist/mcp/tools/auth/login.d.ts +0 -4
  274. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  275. package/dist/mcp/tools/auth/login.js +0 -51
  276. package/dist/mcp/tools/auth/login.js.map +0 -1
  277. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  278. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  279. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  280. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  281. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  282. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  283. package/dist/mcp/tools/auth/unlock.js +0 -48
  284. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  285. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  286. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  287. package/dist/mcp/tools/auth/verify.js +0 -45
  288. package/dist/mcp/tools/auth/verify.js.map +0 -1
  289. package/dist/mcp/tools/collection/create.d.ts +0 -10
  290. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  291. package/dist/mcp/tools/collection/create.js +0 -139
  292. package/dist/mcp/tools/collection/create.js.map +0 -1
  293. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  294. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  295. package/dist/mcp/tools/collection/delete.js +0 -154
  296. package/dist/mcp/tools/collection/delete.js.map +0 -1
  297. package/dist/mcp/tools/collection/find.d.ts +0 -10
  298. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  299. package/dist/mcp/tools/collection/find.js +0 -165
  300. package/dist/mcp/tools/collection/find.js.map +0 -1
  301. package/dist/mcp/tools/collection/update.d.ts +0 -10
  302. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  303. package/dist/mcp/tools/collection/update.js +0 -209
  304. package/dist/mcp/tools/collection/update.js.map +0 -1
  305. package/dist/mcp/tools/config/find.d.ts +0 -10
  306. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  307. package/dist/mcp/tools/config/find.js +0 -97
  308. package/dist/mcp/tools/config/find.js.map +0 -1
  309. package/dist/mcp/tools/config/update.d.ts +0 -10
  310. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  311. package/dist/mcp/tools/config/update.js +0 -215
  312. package/dist/mcp/tools/config/update.js.map +0 -1
  313. package/dist/mcp/tools/global/find.d.ts +0 -5
  314. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  315. package/dist/mcp/tools/global/find.js +0 -82
  316. package/dist/mcp/tools/global/find.js.map +0 -1
  317. package/dist/mcp/tools/global/update.d.ts +0 -6
  318. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  319. package/dist/mcp/tools/global/update.js +0 -124
  320. package/dist/mcp/tools/global/update.js.map +0 -1
  321. package/dist/mcp/tools/job/create.d.ts +0 -10
  322. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  323. package/dist/mcp/tools/job/create.js +0 -293
  324. package/dist/mcp/tools/job/create.js.map +0 -1
  325. package/dist/mcp/tools/job/run.d.ts +0 -10
  326. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  327. package/dist/mcp/tools/job/run.js +0 -129
  328. package/dist/mcp/tools/job/run.js.map +0 -1
  329. package/dist/mcp/tools/job/update.d.ts +0 -11
  330. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  331. package/dist/mcp/tools/job/update.js +0 -186
  332. package/dist/mcp/tools/job/update.js.map +0 -1
  333. package/dist/mcp/tools/resource/create.d.ts +0 -6
  334. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  335. package/dist/mcp/tools/resource/create.js +0 -124
  336. package/dist/mcp/tools/resource/create.js.map +0 -1
  337. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  338. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  339. package/dist/mcp/tools/resource/delete.js +0 -151
  340. package/dist/mcp/tools/resource/delete.js.map +0 -1
  341. package/dist/mcp/tools/resource/find.d.ts +0 -5
  342. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  343. package/dist/mcp/tools/resource/find.js +0 -170
  344. package/dist/mcp/tools/resource/find.js.map +0 -1
  345. package/dist/mcp/tools/resource/update.d.ts +0 -6
  346. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  347. package/dist/mcp/tools/resource/update.js +0 -256
  348. package/dist/mcp/tools/resource/update.js.map +0 -1
  349. package/dist/mcp/tools/schemas.d.ts +0 -457
  350. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  351. package/dist/mcp/tools/schemas.js +0 -243
  352. package/dist/mcp/tools/schemas.js.map +0 -1
  353. package/dist/utils/adminEntitySettings.d.ts +0 -17
  354. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  355. package/dist/utils/adminEntitySettings.js +0 -41
  356. package/dist/utils/adminEntitySettings.js.map +0 -1
  357. package/dist/utils/createApiKeyFields.d.ts +0 -15
  358. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  359. package/dist/utils/createApiKeyFields.js +0 -57
  360. package/dist/utils/createApiKeyFields.js.map +0 -1
  361. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  362. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  363. package/dist/utils/getEnabledSlugs.js +0 -32
  364. package/dist/utils/getEnabledSlugs.js.map +0 -1
  365. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  366. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  367. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  368. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  369. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  370. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  371. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  372. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  373. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  374. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  375. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  376. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  377. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  378. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  379. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  380. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  381. package/src/collections/createApiKeysCollection.ts +0 -373
  382. package/src/defaults.ts +0 -3
  383. package/src/endpoints/mcp.ts +0 -91
  384. package/src/mcp/createRequest.ts +0 -13
  385. package/src/mcp/getMcpHandler.ts +0 -545
  386. package/src/mcp/helpers/config.ts +0 -213
  387. package/src/mcp/helpers/fields.ts +0 -154
  388. package/src/mcp/helpers/fileValidation.ts +0 -362
  389. package/src/mcp/registerTool.ts +0 -22
  390. package/src/mcp/tools/auth/auth.ts +0 -71
  391. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  392. package/src/mcp/tools/auth/login.ts +0 -72
  393. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  394. package/src/mcp/tools/auth/unlock.ts +0 -64
  395. package/src/mcp/tools/auth/verify.ts +0 -57
  396. package/src/mcp/tools/collection/create.ts +0 -210
  397. package/src/mcp/tools/collection/delete.ts +0 -211
  398. package/src/mcp/tools/collection/find.ts +0 -224
  399. package/src/mcp/tools/collection/update.ts +0 -290
  400. package/src/mcp/tools/config/find.ts +0 -128
  401. package/src/mcp/tools/config/update.ts +0 -280
  402. package/src/mcp/tools/global/find.ts +0 -128
  403. package/src/mcp/tools/global/update.ts +0 -207
  404. package/src/mcp/tools/job/create.ts +0 -416
  405. package/src/mcp/tools/job/run.ts +0 -167
  406. package/src/mcp/tools/job/update.ts +0 -274
  407. package/src/mcp/tools/resource/create.ts +0 -211
  408. package/src/mcp/tools/resource/delete.ts +0 -218
  409. package/src/mcp/tools/resource/find.ts +0 -246
  410. package/src/mcp/tools/resource/update.ts +0 -383
  411. package/src/mcp/tools/schemas.ts +0 -520
  412. package/src/utils/adminEntitySettings.ts +0 -40
  413. package/src/utils/createApiKeyFields.ts +0 -72
  414. package/src/utils/getEnabledSlugs.ts +0 -42
  415. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  416. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  417. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  418. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
package/src/types.ts CHANGED
@@ -1,542 +1,312 @@
1
1
  import type {
2
- CollectionConfig,
2
+ CallToolResult,
3
+ ContentBlock,
4
+ JsonSchemaType,
5
+ McpServer,
6
+ ResourceTemplate,
7
+ ServerContext,
8
+ StandardSchemaWithJSON,
9
+ ToolAnnotations,
10
+ } from '@modelcontextprotocol/server'
11
+ import type {
12
+ AuthCollectionSlug,
3
13
  CollectionSlug,
4
14
  GlobalSlug,
15
+ MaybePromise,
5
16
  PayloadRequest,
17
+ SanitizedPermissions,
6
18
  TypedUser,
7
19
  } from 'payload'
8
- import type { z } from 'zod'
9
20
 
10
- import { type ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'
21
+ import type { GetAuthorizedMCPArgs } from './endpoint/access.js'
22
+ import type {
23
+ MCPCollectionAuthToolName,
24
+ MCPCollectionBuiltinName,
25
+ MCPGlobalBuiltinName,
26
+ } from './mcp/builtinTools.js'
11
27
 
12
- export type MCPPluginConfig = {
13
- /**
14
- * Set the collections that should be available as resources via MCP.
15
- */
16
- collections?: Partial<
17
- Record<
18
- CollectionSlug,
19
- {
20
- /**
21
- * Set the description of the collection. This is used by MCP clients to determine when to use the collecton as a resource.
22
- */
23
- description?: string
24
- /**
25
- * Set the enabled capabilities of the collection. Admins can then allow or disallow the use of the capability by MCP clients.
26
- */
27
- enabled:
28
- | {
29
- create?: boolean
30
- delete?: boolean
31
- find?: boolean
32
- update?: boolean
33
- }
34
- | boolean
35
-
36
- /**
37
- * Override the response generated by the MCP client. This allows you to modify the response that is sent to the MCP client. This is useful for adding additional data to the response, data normalization, or verifying data.
38
- */
39
- overrideResponse?: (
40
- response: {
41
- content: Array<{
42
- text: string
43
- type: string
44
- }>
45
- },
46
- doc: Record<string, unknown>,
47
- req: PayloadRequest,
48
- ) => {
49
- content: Array<{
50
- text: string
51
- type: string
52
- }>
53
- }
54
- }
55
- >
56
- >
57
- /**
58
- * Disable the MCP plugin.
59
- */
60
- disabled?: boolean
61
- /**
62
- * Experimental features
63
- * **These features are for experimental purposes -- They are Disabled in Production by Default**
64
- */
65
- experimental?: {
66
- /**
67
- * These are MCP tools that can be used by a client to modify Payload.
68
- */
69
- tools: {
70
- /**
71
- * **Experimental** -- Auth MCP tools allow a client to change authentication priviliages for users. This is for developing ideas that help Admins with authentication tasks.
72
- */
73
- auth?: {
74
- /**
75
- * Enable the auth MCP tools. This allows Admins to enable or disable the auth capabilities.
76
- * @default false
77
- */
78
- enabled: boolean
79
- }
80
- /**
81
- * **Experimental** -- Collection MCP tools allow for the creation, modification, and deletion of Payload collections. This is for developing ideas that help Developers with collection tasks.
82
- */
83
- collections?: {
84
- /**
85
- * Set the directory path to the collections directory. This can be a directory outside of your default directory, or another Payload project.
86
- */
87
- collectionsDirPath: string
88
- /**
89
- * Enable the collection MCP tools. This allows Admins to enable or disable the Collection modification capabilities.
90
- * @default false
91
- */
92
- enabled: boolean
93
- }
94
- /**
95
- * **Experimental** -- Config MCP tools allow for the modification of a Payload Config. This is for developing ideas that help Developers with config tasks.
96
- */
97
- config?: {
98
- /**
99
- * Set the directory path to the config directory. This can be a directory outside of your default directory, or another Payload project.
100
- */
101
- configFilePath: string
102
- /**
103
- * Enable the config MCP tools. This allows Admins to enable or disable the Payload Config modification capabilities.
104
- * @default false
105
- */
106
- enabled: boolean
107
- }
108
- /**
109
- * **Experimental** -- Jobs MCP tools allow for the modification of Payload jobs. This is for developing ideas that help Developers with job tasks.
110
- */
111
- jobs?: {
112
- /**
113
- * Enable the jobs MCP tools. This allows Admins to enable or disable the Job modification capabilities.
114
- * @default false
115
- */
116
- enabled: boolean
117
- /**
118
- * Set the directory path to the jobs directory. This can be a directory outside of your default directory, or another Payload project.
119
- */
120
- jobsDirPath: string
121
- }
122
- }
123
- }
124
- /**
125
- * Set the globals that should be available as resources via MCP.
126
- * Globals are singleton configuration objects (e.g., site settings, navigation).
127
- * Note: Globals only support find and update operations.
128
- */
129
- globals?: Partial<
130
- Record<
131
- GlobalSlug,
132
- {
133
- /**
134
- * Set the description of the global. This is used by MCP clients to determine when to use the global as a resource.
135
- */
136
- description?: string
137
- /**
138
- * Set the enabled capabilities of the global. Admins can then allow or disallow the use of the capability by MCP clients.
139
- * Note: Globals only support find and update operations as they are singletons.
140
- */
141
- enabled:
142
- | {
143
- find?: boolean
144
- update?: boolean
145
- }
146
- | boolean
147
-
148
- /**
149
- * Override the response generated by the MCP client. This allows you to modify the response that is sent to the MCP client. This is useful for adding additional data to the response, data normalization, or verifying data.
150
- */
151
- overrideResponse?: (
152
- response: {
153
- content: Array<{
154
- text: string
155
- type: string
156
- }>
157
- },
158
- doc: Record<string, unknown>,
159
- req: PayloadRequest,
160
- ) => {
161
- content: Array<{
162
- text: string
163
- type: string
164
- }>
165
- }
166
- }
167
- >
168
- >
169
- /**
170
- * MCP Server options.
171
- */
172
- mcp?: {
173
- handlerOptions?: MCPHandlerOptions
174
- /**
175
- * Add custom MCP Prompts.
176
- */
177
- prompts?: {
178
- /**
179
- * Set the args schema of the prompt. This is the args schema that will be passed to the prompt. This is used by MCP clients to determine the arguments that will be passed to the prompt.
180
- */
181
- argsSchema: z.ZodRawShape
182
- /**
183
- * Set the description of the prompt. This is used by MCP clients to determine when to use the prompt.
184
- */
185
- description: string
186
- /**
187
- * Set the handler of the prompt. This is the function that will be called when the prompt is used.
188
- */
189
- handler: (
190
- args: Record<string, unknown>,
191
- req: PayloadRequest,
192
- _extra: unknown,
193
- ) =>
194
- | {
195
- messages: Array<{
196
- content: {
197
- text: string
198
- type: 'text'
199
- }
200
- role: 'assistant' | 'user'
201
- }>
202
- }
203
- | Promise<{
204
- messages: Array<{
205
- content: {
206
- text: string
207
- type: 'text'
208
- }
209
- role: 'assistant' | 'user'
210
- }>
211
- }>
212
- /**
213
- * Set the function name of the prompt.
214
- */
215
- name: string
216
- /**
217
- * Set the title of the prompt. LLMs will interperate the title to determine when to use the prompt.
218
- */
219
- title: string
220
- }[]
221
-
222
- /**
223
- * Add custom MCP Resource.
224
- */
225
- resources?: {
226
- /**
227
- * Set the description of the resource. This is used by MCP clients to determine when to use the resource.
228
- * example: 'Data is a resource that contains special data.'
229
- */
230
- description: string
231
- /**
232
- * Set the handler of the resource. This is the function that will be called when the resource is used.
233
- * The handler can have either 3 arguments (when no args are passed) or 4 arguments (when args are passed).
234
- */
235
- handler: (...args: any[]) =>
236
- | {
237
- contents: Array<{
238
- text: string
239
- uri: string
240
- }>
241
- }
242
- | Promise<{
243
- contents: Array<{
244
- text: string
245
- uri: string
246
- }>
247
- }>
248
- /**
249
- * Set the mime type of the resource.
250
- * example: 'text/plain'
251
- */
252
- mimeType: string
253
- /**
254
- * Set the function name of the resource.
255
- * example: 'data'
256
- */
257
- name: string
258
- /**
259
- * Set the title of the resource. LLMs will interperate the title to determine when to use the resource.
260
- * example: 'Data'
261
- */
262
- title: string
263
- /**
264
- * Set the uri of the resource.
265
- * example: 'data://app'
266
- */
267
- uri: ResourceTemplate | string
268
- }[]
269
- serverOptions?: MCPServerOptions
270
- /**
271
- * Add custom MCP Tools.
272
- */
273
- tools?: {
274
- /**
275
- * Set the description of the tool. This is used by MCP clients to determine when to use the tool.
276
- */
277
- description: string
278
- /**
279
- * Set the handler of the tool. This is the function that will be called when the tool is used.
280
- */
281
- handler: (
282
- args: Record<string, unknown>,
283
- req: PayloadRequest,
284
- _extra: unknown,
285
- ) =>
286
- | {
287
- content: Array<{
288
- text: string
289
- type: 'text'
290
- }>
291
- role?: string
292
- }
293
- | Promise<{
294
- content: Array<{
295
- text: string
296
- type: 'text'
297
- }>
298
- role?: string
299
- }>
300
- /**
301
- * Set the name of the tool. This is the name that will be used to identify the tool. LLMs will interperate the name to determine when to use the tool.
302
- */
303
- name: string
304
- /**
305
- * Set the parameters of the tool. This is the parameters that will be passed to the tool.
306
- */
307
- parameters: z.ZodRawShape
308
- }[]
309
- }
28
+ export type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName }
310
29
 
311
- /**
312
- * Override the API key collection.
313
- * This allows you to add fields to the API key collection or modify the collection in any way you want.
314
- * @param collection - The API key collection.
315
- * @returns The modified API key collection.
316
- */
317
- overrideApiKeyCollection?: (collection: CollectionConfig) => CollectionConfig
30
+ /** Re-exported from `@modelcontextprotocol/server` — common MCP types used in plugin config. */
31
+ export type { JsonSchemaType, StandardSchemaWithJSON, ToolAnnotations }
32
+
33
+ /**
34
+ * What a tool's `input` (or a prompt's `argsSchema`) can be — either a raw
35
+ * JSON Schema literal, or a Standard Schema instance (Zod, Valibot, …).
36
+ */
37
+ export type ToolInputSchema = JsonSchemaType | StandardSchemaWithJSON
318
38
 
39
+ export type MCPToolResponse = {
40
+ content: ContentBlock[]
319
41
  /**
320
- * Override the authentication method.
321
- * This allows you to use a custom authentication method instead of the default API key authentication.
322
- * @param req - The request object.
323
- * @returns The MCP access settings.
42
+ * If available, return the document fetched within the
43
+ * mcp tool. This is threaded as an additional argument to
44
+ * overrideResponse functions and stripped before going on the wire.
324
45
  */
325
- overrideAuth?: (
326
- req: PayloadRequest,
327
- getDefaultMcpAccessSettings: (overrideApiKey?: null | string) => Promise<MCPAccessSettings>,
328
- ) => MCPAccessSettings | Promise<MCPAccessSettings>
46
+ doc?: Record<string, unknown>
47
+ } & Pick<CallToolResult, '_meta' | 'isError' | 'structuredContent'>
48
+
49
+ export type MCPResponseOverride = (
50
+ response: MCPToolResponse,
51
+ doc: Record<string, unknown>,
52
+ req: PayloadRequest,
53
+ ) => MCPToolResponse
329
54
 
55
+ /**
56
+ * The handler's `input` type. A specific Standard Schema (Zod, Valibot, …) gets
57
+ * its inferred output; anything else falls back to `Record<string, unknown>`.
58
+ */
59
+ export type TypedInput<TSchema> = TSchema extends StandardSchemaWithJSON
60
+ ? StandardSchemaWithJSON extends TSchema
61
+ ? Record<string, unknown>
62
+ : StandardSchemaWithJSON.InferOutput<TSchema>
63
+ : Record<string, unknown>
64
+
65
+ export type MCPAccessArgs = {
66
+ permissions?: SanitizedPermissions
67
+ req: PayloadRequest
68
+ }
69
+
70
+ export type CollectionMCPAccessArgs = {
71
+ collectionSlug: CollectionSlug
72
+ } & MCPAccessArgs
73
+
74
+ export type GlobalMCPAccessArgs = {
75
+ globalSlug: GlobalSlug
76
+ } & MCPAccessArgs
77
+
78
+ export type ToolHandlerArgs<TSchema = undefined> = {
79
+ authorizedMCP: AuthorizedMCP
80
+ input: TypedInput<TSchema>
81
+ req: PayloadRequest
82
+ serverContext: ServerContext
83
+ }
84
+
85
+ export type CollectionToolHandlerArgs<TSchema = undefined> = {
86
+ collectionSlug: CollectionSlug
87
+ } & ToolHandlerArgs<TSchema>
88
+
89
+ export type GlobalToolHandlerArgs<TSchema = undefined> = {
90
+ globalSlug: GlobalSlug
91
+ } & ToolHandlerArgs<TSchema>
92
+
93
+ export type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {
94
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
95
+ annotations?: ToolAnnotations
96
+ description: string
97
+ handler: (args: ToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
98
+ input?: TSchema
330
99
  /**
331
- * Set the users collection that API keys should be associated with.
100
+ * Override the return value of the tool handler
332
101
  */
333
- userCollection?: CollectionSlug
102
+ overrideResponse?: MCPResponseOverride
334
103
  }
335
104
 
105
+ export type CollectionTool<
106
+ TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined,
107
+ > = {
108
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>
109
+ handler: (args: CollectionToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
110
+ input?: TSchema
111
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>
112
+
113
+ export type GlobalTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> =
114
+ {
115
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>
116
+ handler: (args: GlobalToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
117
+ input?: TSchema
118
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>
119
+
336
120
  /**
337
- * MCP Handler options.
121
+ * Configures (or disables) a built-in tool without replacing it.
122
+ * `handler?: never` prevents a full `CollectionTool`/`GlobalTool` (which has a
123
+ * required handler) from being silently accepted at a built-in key slot.
338
124
  */
339
- export type MCPHandlerOptions = {
340
- /**
341
- * Set the base path of the MCP handler. This is the path that will be used to access the MCP handler.
342
- * @default /api
343
- */
344
- basePath?: string
345
- /**
346
- * If true, disables the SSE endpoint. Only Streamable HTTP will be available.
347
- * @default true
348
- */
349
- disableSse?: boolean
350
- /**
351
- * Set the maximum duration of the MCP handler. This is the maximum duration that the MCP handler will run for.
352
- * @default 60
353
- */
354
- maxDuration?: number
355
- /**
356
- * Callback function that receives MCP events.
357
- * This can be used to track analytics, debug issues, or implement custom behaviors.
358
- */
359
- onEvent?: (event: unknown) => void
360
- /**
361
- * Set the Redis URL for the MCP handler. This is the URL that will be used to access the Redis server.
362
- * @default process.env.REDIS_URL
363
- */
364
- redisUrl?: string
365
- /**
366
- * Set verbose logging.
367
- * @default false
368
- */
369
- verboseLogs?: boolean
125
+ export type MCPBuiltInCollectionToolOverride = {
126
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>
127
+ annotations?: ToolAnnotations
128
+ description?: string
129
+ handler?: never
130
+ overrideResponse?: MCPResponseOverride
131
+ }
132
+
133
+ export type MCPBuiltInGlobalToolOverride = {
134
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>
135
+ annotations?: ToolAnnotations
136
+ description?: string
137
+ handler?: never
138
+ overrideResponse?: MCPResponseOverride
370
139
  }
371
140
 
372
141
  /**
373
- * MCP Server options.
142
+ * Value at a custom (non-built-in) tool key. Either the tool itself, or `false`
143
+ * to disable it (useful when one plugin defines a custom tool and another
144
+ * wants to opt out per-collection).
374
145
  */
375
- export type MCPServerOptions = {
376
- /**
377
- * Optional instructions describing how to use the server and its features.
378
- */
379
- instructions?: string
380
- /**
381
- * Set the server info of the MCP server.
382
- */
383
- serverInfo?: {
384
- /**
385
- * Set the name of the MCP server.
386
- * @default 'Payload MCP Server'
387
- */
388
- name: string
389
- /**
390
- * Set the version of the MCP server.
391
- * @default '1.0.0'
392
- */
393
- version: string
394
- }
146
+ export type MCPTopLevelToolEntry = Tool
147
+
148
+ export type MCPCollectionToolsMap = {
149
+ [customToolName: string]: boolean | CollectionTool | MCPBuiltInCollectionToolOverride | undefined
150
+ } & {
151
+ [K in MCPCollectionBuiltinName]?: false | MCPBuiltInCollectionToolOverride
395
152
  }
396
153
 
397
- export type MCPAccessSettings = {
398
- auth?: {
399
- auth?: boolean
400
- forgotPassword?: boolean
401
- login?: boolean
402
- resetPassword?: boolean
403
- unlock?: boolean
404
- verify?: boolean
405
- }
406
- collections?: {
407
- create?: boolean
408
- delete?: boolean
409
- find?: boolean
410
- update?: boolean
411
- }
412
- config?: {
413
- find?: boolean
414
- update?: boolean
415
- }
416
- custom?: Record<string, boolean>
417
- globals?: {
418
- find?: boolean
419
- update?: boolean
420
- }
421
- jobs?: {
422
- create?: boolean
423
- run?: boolean
424
- update?: boolean
425
- }
426
- 'payload-mcp-prompt'?: Record<string, boolean>
427
- 'payload-mcp-resource'?: Record<string, boolean>
428
- 'payload-mcp-tool'?: Record<string, boolean>
429
- user: TypedUser
430
- } & Record<string, unknown>
154
+ export type MCPAuthCollectionToolsMap = {
155
+ [K in MCPCollectionAuthToolName]?: MCPBuiltInCollectionToolOverride | true
156
+ } & MCPCollectionToolsMap
431
157
 
432
- export type EntityConfig = MCPPluginConfig['collections'] | MCPPluginConfig['globals']
158
+ /** Auth-enabled collections get auth-tool name autocomplete; others get CRUD-only. */
159
+ export type MCPToolsMapForCollection<Slug extends CollectionSlug> = Slug extends AuthCollectionSlug
160
+ ? MCPAuthCollectionToolsMap
161
+ : MCPCollectionToolsMap
433
162
 
434
- export type FieldDefinition = {
435
- description?: string
436
- name: string
437
- options?: { label: string; value: string }[]
438
- position?: 'main' | 'sidebar'
439
- required?: boolean
440
- type: string
163
+ export type MCPGlobalToolsMap = {
164
+ [customToolName: string]: boolean | GlobalTool | MCPBuiltInGlobalToolOverride | undefined
165
+ } & {
166
+ [K in MCPGlobalBuiltinName]?: false | MCPBuiltInGlobalToolOverride
441
167
  }
442
168
 
443
- export type FieldModification = {
444
- changes: {
445
- description?: string
446
- options?: { label: string; value: string }[]
447
- position?: 'main' | 'sidebar'
448
- required?: boolean
449
- type?: string
450
- }
451
- fieldName: string
169
+ export type MCPTopLevelToolsMap = Record<string, Tool>
170
+
171
+ export type PromptHandlerArgs<TSchema = undefined> = {
172
+ input: TypedInput<TSchema>
173
+ req: PayloadRequest
174
+ serverContext: ServerContext
452
175
  }
453
176
 
454
- export type CollectionConfigUpdates = {
455
- access?: {
456
- create?: string
457
- delete?: string
458
- read?: string
459
- update?: string
460
- }
461
- description?: string
462
- slug?: string
463
- timestamps?: boolean
464
- versioning?: boolean
177
+ export type Prompt<TSchema extends ToolInputSchema = ToolInputSchema> = {
178
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
179
+ argsSchema: TSchema
180
+ description: string
181
+ handler: (args: PromptHandlerArgs<TSchema>) => MaybePromise<{
182
+ messages: Array<{ content: { text: string; type: 'text' }; role: 'assistant' | 'user' }>
183
+ }>
184
+ title: string
465
185
  }
466
186
 
467
- export type AdminConfig = {
468
- avatar?: string
469
- css?: string
470
- dateFormat?: string
471
- inactivityRoute?: string
472
- livePreview?: {
473
- breakpoints?: Array<{
474
- height: number
475
- label: string
476
- name: string
477
- width: number
478
- }>
479
- }
480
- logoutRoute?: string
481
- meta?: {
482
- favicon?: string
483
- ogImage?: string
484
- titleSuffix?: string
485
- }
486
- user?: string
187
+ export type ResourceHandlerArgs = {
188
+ /** Variables extracted from a `ResourceTemplate` URI. Empty for static-URI resources. */
189
+ params: Record<string, string>
190
+ req: PayloadRequest
191
+ serverContext: ServerContext
192
+ uri: URL
487
193
  }
488
194
 
489
- export type DatabaseConfig = {
490
- connectOptions?: string
491
- type?: 'mongodb' | 'postgres'
492
- url?: string
195
+ export type Resource = {
196
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
197
+ description: string
198
+ handler: (args: ResourceHandlerArgs) => MaybePromise<{
199
+ contents: Array<{ text: string; uri: string }>
200
+ }>
201
+ mimeType: string
202
+ title: string
203
+ uri: ResourceTemplate | string
493
204
  }
494
205
 
495
- export type PluginUpdates = {
496
- add?: string[]
497
- remove?: string[]
206
+ export type MCPPluginCollectionConfig<TSlug extends CollectionSlug> = {
207
+ description?: string
208
+ /** Fallback for built-in tools that don't set their own `overrideResponse`. */
209
+ overrideResponse?: MCPResponseOverride
210
+ tools?: MCPToolsMapForCollection<TSlug>
211
+ }
212
+
213
+ export type MCPPluginGlobalConfig = {
214
+ description?: string
215
+ overrideResponse?: MCPResponseOverride
216
+ tools?: MCPGlobalToolsMap
498
217
  }
499
218
 
500
- export type GeneralConfig = {
501
- cookiePrefix?: string
502
- cors?: string
503
- csrf?: string
504
- graphQL?: {
505
- disable?: boolean
506
- schemaOutputFile?: string
219
+ /**
220
+ * The user-facing config shape passed to `mcpPlugin({ ... })`. Tools, prompts,
221
+ * resources, and per-collection/global tool maps live in their own nested
222
+ * fields. `sanitizeMCPConfig` flattens those into `items` and applies defaults
223
+ * to produce a `SanitizedMCPPluginConfig` — the form every internal consumer
224
+ * actually works with.
225
+ */
226
+ export type MCPPluginConfig = {
227
+ collections?: {
228
+ [Slug in CollectionSlug]?: MCPPluginCollectionConfig<Slug>
507
229
  }
508
- rateLimit?: {
509
- max?: number
510
- skip?: string
511
- window?: number
230
+ /** Skip MCP endpoint registration. */
231
+ disabled?: boolean
232
+ globals?: {
233
+ [Slug in GlobalSlug]?: MCPPluginGlobalConfig
512
234
  }
513
- secret?: string
514
- serverURL?: string
515
- typescript?: {
516
- declare?: boolean
517
- outputFile?: string
235
+ mcp?: {
236
+ serverOptions?: MCPServerOptions
237
+ verboseLogs?: boolean
518
238
  }
239
+ /** Replace the default MCP authorization resolver. */
240
+ overrideGetAuthorizedMCP?: (
241
+ args: {
242
+ pluginConfig: SanitizedMCPPluginConfig
243
+ } & GetAuthorizedMCPArgs,
244
+ ) => MaybePromise<AuthorizedMCP>
245
+ prompts?: Record<string, Prompt>
246
+ resources?: Record<string, Resource>
247
+ /** Cross-cutting tools (not scoped to any collection or global). */
248
+ tools?: MCPTopLevelToolsMap
519
249
  }
520
250
 
521
- export interface SchemaField {
522
- description?: string
523
- name: string
524
- options?: string[]
525
- required?: boolean
526
- type: string
251
+ export type SanitizedMCPPluginConfig = {
252
+ items: MCPItem[]
253
+ } & Pick<MCPPluginConfig, 'disabled' | 'mcp' | 'overrideGetAuthorizedMCP'>
254
+
255
+ export type MCPServerOptions = {
256
+ options?: ConstructorParameters<typeof McpServer>[1]
257
+ serverInfo?: Partial<ConstructorParameters<typeof McpServer>[0]>
527
258
  }
528
259
 
529
- export interface TaskSequenceItem {
530
- description?: string
531
- retries?: number
532
- taskId: string
533
- taskSlug: string
534
- timeout?: number
260
+ /**
261
+ * One MCP primitive plus the metadata needed for config-driven filtering and
262
+ * registration.
263
+ *
264
+ * - `configKey`: the config identifier, e.g. `find` or `echo`.
265
+ * - `mcpName`: the MCP wire name, e.g. `findDocuments` or `echo`.
266
+ * - `label`: human-readable display text.
267
+ */
268
+ export type MCPItemBase = {
269
+ configKey: string
270
+ label: string
271
+ mcpName: string
535
272
  }
536
273
 
537
- export interface JobConfigUpdate {
538
- description?: string
539
- queue?: string
540
- retries?: number
541
- timeout?: number
274
+ export type CollectionMCPItem = {
275
+ collectionSlug: CollectionSlug
276
+ tool: CollectionTool
277
+ type: 'collectionTool'
278
+ } & MCPItemBase
279
+
280
+ export type GlobalMCPItem = {
281
+ globalSlug: GlobalSlug
282
+ tool: GlobalTool
283
+ type: 'globalTool'
284
+ } & MCPItemBase
285
+
286
+ export type MCPItem =
287
+ | ({
288
+ prompt: Prompt
289
+ type: 'prompt'
290
+ } & MCPItemBase)
291
+ | ({
292
+ resource: Resource
293
+ type: 'resource'
294
+ } & MCPItemBase)
295
+ | ({
296
+ tool: Tool
297
+ type: 'tool'
298
+ } & MCPItemBase)
299
+ | CollectionMCPItem
300
+ | GlobalMCPItem
301
+
302
+ /**
303
+ * The caller's identity + the MCP items authorized for this request. Disabled
304
+ * items and items blocked by access callbacks or Payload operation access are
305
+ * absent from `items`. Tool handlers receive this via `args.authorizedMCP` so
306
+ * they can spread `localAPIDefaults(authorizedMCP)` into every local API call.
307
+ */
308
+ export type AuthorizedMCP = {
309
+ items: MCPItem[]
310
+ overrideAccess: boolean
311
+ user: null | TypedUser
542
312
  }