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

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