@payloadcms/plugin-mcp 4.0.0-internal.a0ef1b8 → 4.0.0-internal.add4c47

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 (250) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +7 -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 +8 -8
  8. package/dist/defineTool.d.ts.map +1 -1
  9. package/dist/endpoint/access.d.ts +12 -5
  10. package/dist/endpoint/access.d.ts.map +1 -1
  11. package/dist/endpoint/access.js +75 -88
  12. package/dist/endpoint/access.js.map +1 -1
  13. package/dist/endpoint/index.d.ts +1 -1
  14. package/dist/endpoint/index.d.ts.map +1 -1
  15. package/dist/endpoint/index.js +68 -17
  16. package/dist/endpoint/index.js.map +1 -1
  17. package/dist/exports/client.d.ts +1 -1
  18. package/dist/exports/client.d.ts.map +1 -1
  19. package/dist/exports/client.js +1 -1
  20. package/dist/exports/client.js.map +1 -1
  21. package/dist/exports/internal.d.ts +2 -0
  22. package/dist/exports/internal.d.ts.map +1 -0
  23. package/dist/exports/internal.js +3 -0
  24. package/dist/exports/internal.js.map +1 -0
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +15 -20
  28. package/dist/index.js.map +1 -1
  29. package/dist/mcp/buildMcpServer.d.ts +4 -4
  30. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  31. package/dist/mcp/buildMcpServer.js +133 -80
  32. package/dist/mcp/buildMcpServer.js.map +1 -1
  33. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  34. package/dist/mcp/builtin/collections/authTools.js +44 -6
  35. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  36. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  37. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  38. package/dist/mcp/builtin/collections/countTool.js +68 -0
  39. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  40. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  41. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  42. package/dist/mcp/builtin/collections/countVersionsTool.js +64 -0
  43. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  44. package/dist/mcp/builtin/collections/createTool.d.ts +1 -1
  45. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  46. package/dist/mcp/builtin/collections/createTool.js +50 -45
  47. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  48. package/dist/mcp/builtin/collections/deleteTool.d.ts +1 -1
  49. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  50. package/dist/mcp/builtin/collections/deleteTool.js +15 -22
  51. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  52. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  53. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  54. package/dist/mcp/builtin/collections/duplicateTool.js +96 -0
  55. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  56. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  57. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  58. package/dist/mcp/builtin/collections/fileInput.js +117 -0
  59. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  60. package/dist/mcp/builtin/collections/fileInput.spec.js +86 -0
  61. package/dist/mcp/builtin/collections/fileInput.spec.js.map +1 -0
  62. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  63. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  64. package/dist/mcp/builtin/collections/findDistinctTool.js +92 -0
  65. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  66. package/dist/mcp/builtin/collections/findTool.d.ts +1 -1
  67. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  68. package/dist/mcp/builtin/collections/findTool.js +52 -47
  69. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  70. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  71. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  72. package/dist/mcp/builtin/collections/findVersionByIDTool.js +83 -0
  73. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  74. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  75. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  76. package/dist/mcp/builtin/collections/findVersionsTool.js +98 -0
  77. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  78. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  79. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  80. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  81. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  82. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  83. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  84. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +87 -0
  85. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  86. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  87. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  88. package/dist/mcp/builtin/collections/restoreVersionTool.js +81 -0
  89. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  90. package/dist/mcp/builtin/collections/updateTool.d.ts +1 -1
  91. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  92. package/dist/mcp/builtin/collections/updateTool.js +106 -93
  93. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  94. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  95. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  96. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  97. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  98. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  99. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  100. package/dist/mcp/builtin/getConfigInfoTool.js +68 -0
  101. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  102. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  103. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  104. package/dist/mcp/builtin/globals/countVersionsTool.js +64 -0
  105. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  106. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  107. package/dist/mcp/builtin/globals/findTool.js +20 -23
  108. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  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.map +1 -1
  126. package/dist/mcp/builtin/globals/updateTool.js +33 -42
  127. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  128. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  129. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  130. package/dist/mcp/builtin/validateEntityData.js +82 -0
  131. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  132. package/dist/mcp/builtinTools.d.ts +150 -19
  133. package/dist/mcp/builtinTools.d.ts.map +1 -1
  134. package/dist/mcp/builtinTools.js +125 -20
  135. package/dist/mcp/builtinTools.js.map +1 -1
  136. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  137. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  138. package/dist/mcp/sanitizeMCPConfig.js +124 -58
  139. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  140. package/dist/stdio.d.ts +3 -3
  141. package/dist/stdio.d.ts.map +1 -1
  142. package/dist/stdio.js +84 -46
  143. package/dist/stdio.js.map +1 -1
  144. package/dist/types.d.ts +112 -110
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/types.js +2 -4
  147. package/dist/types.js.map +1 -1
  148. package/dist/utils/camelCase.d.ts.map +1 -1
  149. package/dist/utils/getPluginConfig.d.ts +1 -1
  150. package/dist/utils/getPluginConfig.js +1 -1
  151. package/dist/utils/getPluginConfig.js.map +1 -1
  152. package/dist/utils/resolveProjectRoot.d.ts.map +1 -1
  153. package/dist/utils/schemaConversion/filterFieldsByAccess.d.ts +28 -0
  154. package/dist/utils/schemaConversion/filterFieldsByAccess.d.ts.map +1 -0
  155. package/dist/utils/schemaConversion/filterFieldsByAccess.js +71 -0
  156. package/dist/utils/schemaConversion/filterFieldsByAccess.js.map +1 -0
  157. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +13 -0
  158. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  159. package/dist/utils/schemaConversion/getEntityInputSchema.js +66 -0
  160. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  161. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +5 -10
  162. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -1
  163. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +15 -95
  164. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -1
  165. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +15 -40
  166. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -1
  167. package/dist/utils/toStandardSchema.d.ts.map +1 -1
  168. package/dist/utils/whereSchema.d.ts +9 -0
  169. package/dist/utils/whereSchema.d.ts.map +1 -0
  170. package/dist/utils/whereSchema.js +13 -0
  171. package/dist/utils/whereSchema.js.map +1 -0
  172. package/package.json +10 -15
  173. package/src/defaultAccess.ts +3 -0
  174. package/src/endpoint/access.ts +81 -101
  175. package/src/endpoint/index.ts +58 -16
  176. package/src/exports/client.ts +2 -1
  177. package/src/exports/internal.ts +1 -0
  178. package/src/index.ts +12 -20
  179. package/src/mcp/buildMcpServer.ts +170 -115
  180. package/src/mcp/builtin/collections/authTools.ts +45 -9
  181. package/src/mcp/builtin/collections/countTool.ts +73 -0
  182. package/src/mcp/builtin/collections/countVersionsTool.ts +69 -0
  183. package/src/mcp/builtin/collections/createTool.ts +67 -62
  184. package/src/mcp/builtin/collections/deleteTool.ts +20 -18
  185. package/src/mcp/builtin/collections/duplicateTool.ts +134 -0
  186. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  187. package/src/mcp/builtin/collections/fileInput.ts +154 -0
  188. package/src/mcp/builtin/collections/findDistinctTool.ts +119 -0
  189. package/src/mcp/builtin/collections/findTool.ts +66 -37
  190. package/src/mcp/builtin/collections/findVersionByIDTool.ts +109 -0
  191. package/src/mcp/builtin/collections/findVersionsTool.ts +154 -0
  192. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  193. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +80 -0
  194. package/src/mcp/builtin/collections/restoreVersionTool.ts +107 -0
  195. package/src/mcp/builtin/collections/updateTool.ts +132 -115
  196. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  197. package/src/mcp/builtin/getConfigInfoTool.ts +67 -0
  198. package/src/mcp/builtin/globals/countVersionsTool.ts +68 -0
  199. package/src/mcp/builtin/globals/findTool.ts +28 -19
  200. package/src/mcp/builtin/globals/findVersionByIDTool.ts +103 -0
  201. package/src/mcp/builtin/globals/findVersionsTool.ts +147 -0
  202. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +63 -0
  203. package/src/mcp/builtin/globals/restoreVersionTool.ts +99 -0
  204. package/src/mcp/builtin/globals/updateTool.ts +52 -57
  205. package/src/mcp/builtin/validateEntityData.ts +132 -0
  206. package/src/mcp/builtinTools.ts +118 -41
  207. package/src/mcp/sanitizeMCPConfig.ts +120 -78
  208. package/src/stdio.ts +79 -46
  209. package/src/types.ts +128 -115
  210. package/src/utils/getPluginConfig.ts +1 -1
  211. package/src/utils/schemaConversion/filterFieldsByAccess.ts +123 -0
  212. package/src/utils/schemaConversion/getEntityInputSchema.ts +96 -0
  213. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +12 -19
  214. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +17 -114
  215. package/src/utils/whereSchema.ts +24 -0
  216. package/dist/@types/assets.d.js +0 -2
  217. package/dist/@types/assets.d.js.map +0 -1
  218. package/dist/collection/getAccessField.d.ts +0 -12
  219. package/dist/collection/getAccessField.d.ts.map +0 -1
  220. package/dist/collection/getAccessField.js +0 -57
  221. package/dist/collection/getAccessField.js.map +0 -1
  222. package/dist/collection/index.d.ts +0 -6
  223. package/dist/collection/index.d.ts.map +0 -1
  224. package/dist/collection/index.js +0 -60
  225. package/dist/collection/index.js.map +0 -1
  226. package/dist/components/AccessField/index.client.d.ts +0 -10
  227. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  228. package/dist/components/AccessField/index.client.js +0 -305
  229. package/dist/components/AccessField/index.client.js.map +0 -1
  230. package/dist/components/AccessField/index.css +0 -93
  231. package/dist/utils/localAPIDefaults.d.ts +0 -20
  232. package/dist/utils/localAPIDefaults.d.ts.map +0 -1
  233. package/dist/utils/localAPIDefaults.js +0 -19
  234. package/dist/utils/localAPIDefaults.js.map +0 -1
  235. package/dist/utils/schemaConversion/buildToolInput.d.ts +0 -29
  236. package/dist/utils/schemaConversion/buildToolInput.d.ts.map +0 -1
  237. package/dist/utils/schemaConversion/buildToolInput.js +0 -51
  238. package/dist/utils/schemaConversion/buildToolInput.js.map +0 -1
  239. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  240. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  241. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  242. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  243. package/src/@types/assets.d.ts +0 -3
  244. package/src/collection/getAccessField.ts +0 -64
  245. package/src/collection/index.ts +0 -64
  246. package/src/components/AccessField/index.client.tsx +0 -344
  247. package/src/components/AccessField/index.css +0 -93
  248. package/src/utils/localAPIDefaults.ts +0 -22
  249. package/src/utils/schemaConversion/buildToolInput.ts +0 -68
  250. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
package/dist/stdio.js CHANGED
@@ -1,76 +1,114 @@
1
- /* eslint-disable no-console */ import { StdioServerTransport } from '@modelcontextprotocol/server';
1
+ /* eslint-disable no-console */ import { serveStdio } from '@modelcontextprotocol/server/stdio';
2
2
  import { fileURLToPath, pathToFileURL } from 'node:url';
3
3
  import { createLocalReq, getPayload } from 'payload';
4
- import { findConfig } from 'payload/node';
4
+ import { findConfig, loadEnv } from 'payload/node';
5
+ import { getAuthorizedMCP } from './endpoint/access.js';
5
6
  import { buildMcpServer } from './mcp/buildMcpServer.js';
6
7
  import { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js';
7
8
  import { getPluginConfig } from './utils/getPluginConfig.js';
8
9
  import { resolveProjectRoot } from './utils/resolveProjectRoot.js';
9
10
  /**
10
- * Stdio adapter for the Payload MCP server.
11
+ * Starts Payload's MCP server over stdin and stdout.
11
12
  *
12
- * Do not use in production. There's no auth; whoever can spawn the process gets
13
- * full access to your local data.
13
+ * Set `PAYLOAD_MCP_AUTHORIZATION` to authenticate. In development,
14
+ * `PAYLOAD_MCP_OVERRIDE_ACCESS=true` skips access checks.
14
15
  */ export const runMcpStdio = async ()=>{
15
- /**
16
- * If MCP clients spawn stdio servers from an arbitrary working directory,
17
- * Payload's cwd-anchored `findConfig()` can't locate the project on
18
- * its own. This module always lives inside the project's `node_modules`, so
19
- * we derive the project root from its own path and `chdir` into it.
20
- *
21
- * An absolute `PAYLOAD_CONFIG_PATH` still overrides everything; unusual
22
- * layouts (e.g. a monorepo where the package is hoisted above the app) can
23
- * fall back to it. See the implementation of findConfig for details.
24
- */ const projectRoot = resolveProjectRoot(fileURLToPath(import.meta.url));
16
+ // MCP clients may start this command from another folder. Move to the Payload
17
+ // project so findConfig() can find the config.
18
+ const projectRoot = resolveProjectRoot(fileURLToPath(import.meta.url));
25
19
  if (projectRoot) {
26
20
  process.chdir(projectRoot);
27
21
  }
22
+ loadEnv();
28
23
  const configPath = findConfig();
29
24
  const configModule = await import(pathToFileURL(configPath).toString());
30
25
  const config = await (configModule.default ?? configModule);
26
+ /**
27
+ * stdout is only for MCP messages. The spec says the server must not write
28
+ * logs there and may write them to stderr instead.
29
+ *
30
+ * The 2.0 client library recovers from stray stdout logs, but that behavior is not
31
+ * guaranteed. Move Payload logs to stderr so Payload does not add invalid data
32
+ * to stdout. Keep options from configurable loggers. Replace pre-built loggers
33
+ * because their output cannot be redirected.
34
+ *
35
+ * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#stdio
36
+ */ const loggerConfig = config;
37
+ if (loggerConfig.logger && typeof loggerConfig.logger === 'object' && 'options' in loggerConfig.logger) {
38
+ loggerConfig.logger.destination = process.stderr;
39
+ } else {
40
+ loggerConfig.logger = {
41
+ destination: process.stderr,
42
+ options: {}
43
+ };
44
+ }
31
45
  const payload = await getPayload({
32
- config
46
+ config,
47
+ cron: false,
48
+ disableOnInit: true
33
49
  });
34
- /**
35
- * If the user added `mcpPlugin({...})` to their `plugins` array, read the
36
- * sanitized config they registered. Otherwise fall back to the defaults. That way,
37
- * the mcp works on any project that has `@payloadcms/plugin-mcp` installed,
38
- * even if the plugin is not added to the plugins array.
39
- */ let pluginConfig;
50
+ let pluginConfig;
40
51
  try {
41
52
  pluginConfig = getPluginConfig({
42
53
  config: payload.config
43
54
  });
44
55
  } catch {
56
+ // The command also works when mcpPlugin() is not in the Payload config.
45
57
  pluginConfig = sanitizeMCPConfig({
46
58
  config: payload.config,
47
59
  pluginConfig: {}
48
60
  });
49
- const fakePluginFn = (config)=>config;
50
- fakePluginFn.slug = '@payloadcms/plugin-mcp';
51
- // @ts-expect-error
52
- fakePluginFn.sanitizedOptions = pluginConfig;
53
- (payload.config.plugins ??= []).push(fakePluginFn);
61
+ const fallbackPlugin = (config)=>config;
62
+ Object.assign(fallbackPlugin, {
63
+ slug: '@payloadcms/plugin-mcp',
64
+ sanitizedOptions: pluginConfig
65
+ });
66
+ payload.config.plugins ??= [];
67
+ payload.config.plugins.push(fallbackPlugin);
54
68
  }
55
- const authorizedMCP = {
56
- items: pluginConfig.items,
57
- overrideAccess: true,
58
- user: null
59
- };
60
- const req = await createLocalReq({}, payload);
69
+ const overrideAccessEnv = process.env.PAYLOAD_MCP_OVERRIDE_ACCESS;
70
+ let overrideAccess = false;
71
+ if (overrideAccessEnv === 'true') {
72
+ overrideAccess = true;
73
+ } else if (overrideAccessEnv && overrideAccessEnv !== 'false') {
74
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS must be "true" or "false".');
75
+ }
76
+ if (overrideAccess && process.env.NODE_ENV !== 'development') {
77
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS is only available in development.');
78
+ }
79
+ const headers = new Headers();
80
+ if (process.env.PAYLOAD_MCP_AUTHORIZATION) {
81
+ headers.set('Authorization', process.env.PAYLOAD_MCP_AUTHORIZATION);
82
+ }
83
+ const req = await createLocalReq({
84
+ req: {
85
+ headers
86
+ }
87
+ }, payload);
61
88
  req.payloadAPI = 'MCP';
62
- const server = buildMcpServer({
63
- authorizedMCP,
64
- pluginConfig,
89
+ const authorizedMCP = await getAuthorizedMCP({
90
+ overrideAccess,
65
91
  req
66
92
  });
67
- const transport = new StdioServerTransport();
68
- await server.connect(transport);
69
- // Process now lives until stdin closes. Wire graceful shutdown so DB
70
- // connections (and any other Payload-managed resources) get released.
71
- const shutdown = async (code = 0)=>{
93
+ const stdioServer = serveStdio(()=>buildMcpServer({
94
+ authorizedMCP,
95
+ pluginConfig,
96
+ req
97
+ }), {
98
+ onerror: (err)=>{
99
+ // MCP messages use stdout, so write SDK errors to stderr.
100
+ console.error('[payload-mcp] error serving MCP over stdio:', err);
101
+ }
102
+ });
103
+ // Close the MCP server and Payload when the client disconnects or the process stops.
104
+ let isShuttingDown = false;
105
+ const shutdown = async ()=>{
106
+ if (isShuttingDown) {
107
+ return;
108
+ }
109
+ isShuttingDown = true;
72
110
  try {
73
- await server.close();
111
+ await stdioServer.close();
74
112
  } catch (err) {
75
113
  console.error('[payload-mcp] error closing server:', err);
76
114
  }
@@ -79,11 +117,11 @@ import { resolveProjectRoot } from './utils/resolveProjectRoot.js';
79
117
  } catch (err) {
80
118
  console.error('[payload-mcp] error destroying payload:', err);
81
119
  }
82
- process.exit(code);
120
+ process.exit(0);
83
121
  };
84
- process.on('SIGINT', ()=>void shutdown(0));
85
- process.on('SIGTERM', ()=>void shutdown(0));
86
- process.stdin.on('close', ()=>void shutdown(0));
122
+ process.once('SIGINT', ()=>void shutdown());
123
+ process.once('SIGTERM', ()=>void shutdown());
124
+ process.stdin.once('close', ()=>void shutdown());
87
125
  };
88
126
 
89
127
  //# sourceMappingURL=stdio.js.map
package/dist/stdio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/stdio.ts"],"sourcesContent":["import type { MaybePromise, Plugin, SanitizedConfig } from 'payload'\n\n/* eslint-disable no-console */\nimport { StdioServerTransport } from '@modelcontextprotocol/server'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { createLocalReq, getPayload } from 'payload'\nimport { findConfig } from 'payload/node'\n\nimport type { AuthorizedMCP, SanitizedMCPPluginConfig } from './types.js'\n\nimport { buildMcpServer } from './mcp/buildMcpServer.js'\nimport { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js'\nimport { getPluginConfig } from './utils/getPluginConfig.js'\nimport { resolveProjectRoot } from './utils/resolveProjectRoot.js'\n\n/**\n * Stdio adapter for the Payload MCP server.\n *\n * Do not use in production. There's no auth; whoever can spawn the process gets\n * full access to your local data.\n */\nexport const runMcpStdio = async (): Promise<void> => {\n /**\n * If MCP clients spawn stdio servers from an arbitrary working directory,\n * Payload's cwd-anchored `findConfig()` can't locate the project on\n * its own. This module always lives inside the project's `node_modules`, so\n * we derive the project root from its own path and `chdir` into it.\n *\n * An absolute `PAYLOAD_CONFIG_PATH` still overrides everything; unusual\n * layouts (e.g. a monorepo where the package is hoisted above the app) can\n * fall back to it. See the implementation of findConfig for details.\n */\n const projectRoot = resolveProjectRoot(fileURLToPath(import.meta.url))\n if (projectRoot) {\n process.chdir(projectRoot)\n }\n\n const configPath = findConfig()\n const configModule = await import(pathToFileURL(configPath).toString())\n const config = (await (configModule.default ?? configModule)) as MaybePromise<SanitizedConfig>\n\n const payload = await getPayload({ config })\n\n /**\n * If the user added `mcpPlugin({...})` to their `plugins` array, read the\n * sanitized config they registered. Otherwise fall back to the defaults. That way,\n * the mcp works on any project that has `@payloadcms/plugin-mcp` installed,\n * even if the plugin is not added to the plugins array.\n */\n let pluginConfig: SanitizedMCPPluginConfig\n try {\n pluginConfig = getPluginConfig({ config: payload.config })\n } catch {\n pluginConfig = sanitizeMCPConfig({ config: payload.config, pluginConfig: {} })\n\n const fakePluginFn: Plugin = (config) => config\n fakePluginFn.slug = '@payloadcms/plugin-mcp'\n // @ts-expect-error\n fakePluginFn.sanitizedOptions = pluginConfig\n\n // Push to payload config, to ensure consecutive calls to `getPluginConfig()` work\n ;(payload.config.plugins ??= []).push(fakePluginFn)\n }\n\n const authorizedMCP: AuthorizedMCP = {\n items: pluginConfig.items,\n overrideAccess: true,\n user: null,\n }\n\n const req = await createLocalReq({}, payload)\n req.payloadAPI = 'MCP' as const\n\n const server = buildMcpServer({ authorizedMCP, pluginConfig, req })\n\n const transport = new StdioServerTransport()\n await server.connect(transport)\n\n // Process now lives until stdin closes. Wire graceful shutdown so DB\n // connections (and any other Payload-managed resources) get released.\n const shutdown = async (code = 0) => {\n try {\n await server.close()\n } catch (err) {\n console.error('[payload-mcp] error closing server:', err)\n }\n try {\n await payload.destroy()\n } catch (err) {\n console.error('[payload-mcp] error destroying payload:', err)\n }\n process.exit(code)\n }\n\n process.on('SIGINT', () => void shutdown(0))\n process.on('SIGTERM', () => void shutdown(0))\n process.stdin.on('close', () => void shutdown(0))\n}\n"],"names":["StdioServerTransport","fileURLToPath","pathToFileURL","createLocalReq","getPayload","findConfig","buildMcpServer","sanitizeMCPConfig","getPluginConfig","resolveProjectRoot","runMcpStdio","projectRoot","url","process","chdir","configPath","configModule","toString","config","default","payload","pluginConfig","fakePluginFn","slug","sanitizedOptions","plugins","push","authorizedMCP","items","overrideAccess","user","req","payloadAPI","server","transport","connect","shutdown","code","close","err","console","error","destroy","exit","on","stdin"],"mappings":"AAEA,6BAA6B,GAC7B,SAASA,oBAAoB,QAAQ,+BAA8B;AACnE,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAU;AACvD,SAASC,cAAc,EAAEC,UAAU,QAAQ,UAAS;AACpD,SAASC,UAAU,QAAQ,eAAc;AAIzC,SAASC,cAAc,QAAQ,0BAAyB;AACxD,SAASC,iBAAiB,QAAQ,6BAA4B;AAC9D,SAASC,eAAe,QAAQ,6BAA4B;AAC5D,SAASC,kBAAkB,QAAQ,gCAA+B;AAElE;;;;;CAKC,GACD,OAAO,MAAMC,cAAc;IACzB;;;;;;;;;GASC,GACD,MAAMC,cAAcF,mBAAmBR,cAAc,YAAYW,GAAG;IACpE,IAAID,aAAa;QACfE,QAAQC,KAAK,CAACH;IAChB;IAEA,MAAMI,aAAaV;IACnB,MAAMW,eAAe,MAAM,MAAM,CAACd,cAAca,YAAYE,QAAQ;IACpE,MAAMC,SAAU,MAAOF,CAAAA,aAAaG,OAAO,IAAIH,YAAW;IAE1D,MAAMI,UAAU,MAAMhB,WAAW;QAAEc;IAAO;IAE1C;;;;;GAKC,GACD,IAAIG;IACJ,IAAI;QACFA,eAAeb,gBAAgB;YAAEU,QAAQE,QAAQF,MAAM;QAAC;IAC1D,EAAE,OAAM;QACNG,eAAed,kBAAkB;YAAEW,QAAQE,QAAQF,MAAM;YAAEG,cAAc,CAAC;QAAE;QAE5E,MAAMC,eAAuB,CAACJ,SAAWA;QACzCI,aAAaC,IAAI,GAAG;QACpB,mBAAmB;QACnBD,aAAaE,gBAAgB,GAAGH;QAG9BD,CAAAA,QAAQF,MAAM,CAACO,OAAO,KAAK,EAAE,AAAD,EAAGC,IAAI,CAACJ;IACxC;IAEA,MAAMK,gBAA+B;QACnCC,OAAOP,aAAaO,KAAK;QACzBC,gBAAgB;QAChBC,MAAM;IACR;IAEA,MAAMC,MAAM,MAAM5B,eAAe,CAAC,GAAGiB;IACrCW,IAAIC,UAAU,GAAG;IAEjB,MAAMC,SAAS3B,eAAe;QAAEqB;QAAeN;QAAcU;IAAI;IAEjE,MAAMG,YAAY,IAAIlC;IACtB,MAAMiC,OAAOE,OAAO,CAACD;IAErB,qEAAqE;IACrE,sEAAsE;IACtE,MAAME,WAAW,OAAOC,OAAO,CAAC;QAC9B,IAAI;YACF,MAAMJ,OAAOK,KAAK;QACpB,EAAE,OAAOC,KAAK;YACZC,QAAQC,KAAK,CAAC,uCAAuCF;QACvD;QACA,IAAI;YACF,MAAMnB,QAAQsB,OAAO;QACvB,EAAE,OAAOH,KAAK;YACZC,QAAQC,KAAK,CAAC,2CAA2CF;QAC3D;QACA1B,QAAQ8B,IAAI,CAACN;IACf;IAEAxB,QAAQ+B,EAAE,CAAC,UAAU,IAAM,KAAKR,SAAS;IACzCvB,QAAQ+B,EAAE,CAAC,WAAW,IAAM,KAAKR,SAAS;IAC1CvB,QAAQgC,KAAK,CAACD,EAAE,CAAC,SAAS,IAAM,KAAKR,SAAS;AAChD,EAAC"}
1
+ {"version":3,"sources":["../src/stdio.ts"],"sourcesContent":["import type { Config, Plugin, SanitizedConfig } from 'payload'\n\n/* eslint-disable no-console */\nimport { serveStdio } from '@modelcontextprotocol/server/stdio'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { createLocalReq, getPayload } from 'payload'\nimport { findConfig, loadEnv } from 'payload/node'\n\nimport type { SanitizedMCPPluginConfig } from './types.js'\n\nimport { getAuthorizedMCP } from './endpoint/access.js'\nimport { buildMcpServer } from './mcp/buildMcpServer.js'\nimport { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js'\nimport { getPluginConfig } from './utils/getPluginConfig.js'\nimport { resolveProjectRoot } from './utils/resolveProjectRoot.js'\n\n/**\n * Starts Payload's MCP server over stdin and stdout.\n *\n * Set `PAYLOAD_MCP_AUTHORIZATION` to authenticate. In development,\n * `PAYLOAD_MCP_OVERRIDE_ACCESS=true` skips access checks.\n */\nexport const runMcpStdio = async (): Promise<void> => {\n // MCP clients may start this command from another folder. Move to the Payload\n // project so findConfig() can find the config.\n const projectRoot = resolveProjectRoot(fileURLToPath(import.meta.url))\n if (projectRoot) {\n process.chdir(projectRoot)\n }\n\n loadEnv()\n const configPath = findConfig()\n const configModule = await import(pathToFileURL(configPath).toString())\n const config = (await (configModule.default ?? configModule)) as SanitizedConfig\n\n /**\n * stdout is only for MCP messages. The spec says the server must not write\n * logs there and may write them to stderr instead.\n *\n * The 2.0 client library recovers from stray stdout logs, but that behavior is not\n * guaranteed. Move Payload logs to stderr so Payload does not add invalid data\n * to stdout. Keep options from configurable loggers. Replace pre-built loggers\n * because their output cannot be redirected.\n *\n * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#stdio\n */\n const loggerConfig: { logger?: Config['logger'] } = config\n if (\n loggerConfig.logger &&\n typeof loggerConfig.logger === 'object' &&\n 'options' in loggerConfig.logger\n ) {\n loggerConfig.logger.destination = process.stderr\n } else {\n loggerConfig.logger = { destination: process.stderr, options: {} }\n }\n\n const payload = await getPayload({ config, cron: false, disableOnInit: true })\n\n let pluginConfig: SanitizedMCPPluginConfig\n try {\n pluginConfig = getPluginConfig({ config: payload.config })\n } catch {\n // The command also works when mcpPlugin() is not in the Payload config.\n pluginConfig = sanitizeMCPConfig({ config: payload.config, pluginConfig: {} })\n\n const fallbackPlugin: Plugin = (config) => config\n Object.assign(fallbackPlugin, {\n slug: '@payloadcms/plugin-mcp',\n sanitizedOptions: pluginConfig,\n })\n payload.config.plugins ??= []\n payload.config.plugins.push(fallbackPlugin)\n }\n\n const overrideAccessEnv = process.env.PAYLOAD_MCP_OVERRIDE_ACCESS\n let overrideAccess = false\n\n if (overrideAccessEnv === 'true') {\n overrideAccess = true\n } else if (overrideAccessEnv && overrideAccessEnv !== 'false') {\n throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS must be \"true\" or \"false\".')\n }\n\n if (overrideAccess && process.env.NODE_ENV !== 'development') {\n throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS is only available in development.')\n }\n\n const headers = new Headers()\n if (process.env.PAYLOAD_MCP_AUTHORIZATION) {\n headers.set('Authorization', process.env.PAYLOAD_MCP_AUTHORIZATION)\n }\n\n const req = await createLocalReq({ req: { headers } }, payload)\n req.payloadAPI = 'MCP' as const\n const authorizedMCP = await getAuthorizedMCP({ overrideAccess, req })\n\n const stdioServer = serveStdio(() => buildMcpServer({ authorizedMCP, pluginConfig, req }), {\n onerror: (err) => {\n // MCP messages use stdout, so write SDK errors to stderr.\n console.error('[payload-mcp] error serving MCP over stdio:', err)\n },\n })\n\n // Close the MCP server and Payload when the client disconnects or the process stops.\n let isShuttingDown = false\n const shutdown = async () => {\n if (isShuttingDown) {\n return\n }\n isShuttingDown = true\n\n try {\n await stdioServer.close()\n } catch (err) {\n console.error('[payload-mcp] error closing server:', err)\n }\n\n try {\n await payload.destroy()\n } catch (err) {\n console.error('[payload-mcp] error destroying payload:', err)\n }\n\n process.exit(0)\n }\n\n process.once('SIGINT', () => void shutdown())\n process.once('SIGTERM', () => void shutdown())\n process.stdin.once('close', () => void shutdown())\n}\n"],"names":["serveStdio","fileURLToPath","pathToFileURL","createLocalReq","getPayload","findConfig","loadEnv","getAuthorizedMCP","buildMcpServer","sanitizeMCPConfig","getPluginConfig","resolveProjectRoot","runMcpStdio","projectRoot","url","process","chdir","configPath","configModule","toString","config","default","loggerConfig","logger","destination","stderr","options","payload","cron","disableOnInit","pluginConfig","fallbackPlugin","Object","assign","slug","sanitizedOptions","plugins","push","overrideAccessEnv","env","PAYLOAD_MCP_OVERRIDE_ACCESS","overrideAccess","Error","NODE_ENV","headers","Headers","PAYLOAD_MCP_AUTHORIZATION","set","req","payloadAPI","authorizedMCP","stdioServer","onerror","err","console","error","isShuttingDown","shutdown","close","destroy","exit","once","stdin"],"mappings":"AAEA,6BAA6B,GAC7B,SAASA,UAAU,QAAQ,qCAAoC;AAC/D,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAU;AACvD,SAASC,cAAc,EAAEC,UAAU,QAAQ,UAAS;AACpD,SAASC,UAAU,EAAEC,OAAO,QAAQ,eAAc;AAIlD,SAASC,gBAAgB,QAAQ,uBAAsB;AACvD,SAASC,cAAc,QAAQ,0BAAyB;AACxD,SAASC,iBAAiB,QAAQ,6BAA4B;AAC9D,SAASC,eAAe,QAAQ,6BAA4B;AAC5D,SAASC,kBAAkB,QAAQ,gCAA+B;AAElE;;;;;CAKC,GACD,OAAO,MAAMC,cAAc;IACzB,8EAA8E;IAC9E,+CAA+C;IAC/C,MAAMC,cAAcF,mBAAmBV,cAAc,YAAYa,GAAG;IACpE,IAAID,aAAa;QACfE,QAAQC,KAAK,CAACH;IAChB;IAEAP;IACA,MAAMW,aAAaZ;IACnB,MAAMa,eAAe,MAAM,MAAM,CAAChB,cAAce,YAAYE,QAAQ;IACpE,MAAMC,SAAU,MAAOF,CAAAA,aAAaG,OAAO,IAAIH,YAAW;IAE1D;;;;;;;;;;GAUC,GACD,MAAMI,eAA8CF;IACpD,IACEE,aAAaC,MAAM,IACnB,OAAOD,aAAaC,MAAM,KAAK,YAC/B,aAAaD,aAAaC,MAAM,EAChC;QACAD,aAAaC,MAAM,CAACC,WAAW,GAAGT,QAAQU,MAAM;IAClD,OAAO;QACLH,aAAaC,MAAM,GAAG;YAAEC,aAAaT,QAAQU,MAAM;YAAEC,SAAS,CAAC;QAAE;IACnE;IAEA,MAAMC,UAAU,MAAMvB,WAAW;QAAEgB;QAAQQ,MAAM;QAAOC,eAAe;IAAK;IAE5E,IAAIC;IACJ,IAAI;QACFA,eAAepB,gBAAgB;YAAEU,QAAQO,QAAQP,MAAM;QAAC;IAC1D,EAAE,OAAM;QACN,wEAAwE;QACxEU,eAAerB,kBAAkB;YAAEW,QAAQO,QAAQP,MAAM;YAAEU,cAAc,CAAC;QAAE;QAE5E,MAAMC,iBAAyB,CAACX,SAAWA;QAC3CY,OAAOC,MAAM,CAACF,gBAAgB;YAC5BG,MAAM;YACNC,kBAAkBL;QACpB;QACAH,QAAQP,MAAM,CAACgB,OAAO,KAAK,EAAE;QAC7BT,QAAQP,MAAM,CAACgB,OAAO,CAACC,IAAI,CAACN;IAC9B;IAEA,MAAMO,oBAAoBvB,QAAQwB,GAAG,CAACC,2BAA2B;IACjE,IAAIC,iBAAiB;IAErB,IAAIH,sBAAsB,QAAQ;QAChCG,iBAAiB;IACnB,OAAO,IAAIH,qBAAqBA,sBAAsB,SAAS;QAC7D,MAAM,IAAII,MAAM;IAClB;IAEA,IAAID,kBAAkB1B,QAAQwB,GAAG,CAACI,QAAQ,KAAK,eAAe;QAC5D,MAAM,IAAID,MAAM;IAClB;IAEA,MAAME,UAAU,IAAIC;IACpB,IAAI9B,QAAQwB,GAAG,CAACO,yBAAyB,EAAE;QACzCF,QAAQG,GAAG,CAAC,iBAAiBhC,QAAQwB,GAAG,CAACO,yBAAyB;IACpE;IAEA,MAAME,MAAM,MAAM7C,eAAe;QAAE6C,KAAK;YAAEJ;QAAQ;IAAE,GAAGjB;IACvDqB,IAAIC,UAAU,GAAG;IACjB,MAAMC,gBAAgB,MAAM3C,iBAAiB;QAAEkC;QAAgBO;IAAI;IAEnE,MAAMG,cAAcnD,WAAW,IAAMQ,eAAe;YAAE0C;YAAepB;YAAckB;QAAI,IAAI;QACzFI,SAAS,CAACC;YACR,0DAA0D;YAC1DC,QAAQC,KAAK,CAAC,+CAA+CF;QAC/D;IACF;IAEA,qFAAqF;IACrF,IAAIG,iBAAiB;IACrB,MAAMC,WAAW;QACf,IAAID,gBAAgB;YAClB;QACF;QACAA,iBAAiB;QAEjB,IAAI;YACF,MAAML,YAAYO,KAAK;QACzB,EAAE,OAAOL,KAAK;YACZC,QAAQC,KAAK,CAAC,uCAAuCF;QACvD;QAEA,IAAI;YACF,MAAM1B,QAAQgC,OAAO;QACvB,EAAE,OAAON,KAAK;YACZC,QAAQC,KAAK,CAAC,2CAA2CF;QAC3D;QAEAtC,QAAQ6C,IAAI,CAAC;IACf;IAEA7C,QAAQ8C,IAAI,CAAC,UAAU,IAAM,KAAKJ;IAClC1C,QAAQ8C,IAAI,CAAC,WAAW,IAAM,KAAKJ;IACnC1C,QAAQ+C,KAAK,CAACD,IAAI,CAAC,SAAS,IAAM,KAAKJ;AACzC,EAAC"}
package/dist/types.d.ts CHANGED
@@ -1,32 +1,16 @@
1
- import type { CallToolResult, ContentBlock, JsonSchemaType, McpServer, ResourceTemplate, ServerContext, StandardSchemaWithJSON } from '@modelcontextprotocol/server';
2
- import type { AuthCollectionSlug, CollectionConfig, CollectionSlug, DefaultDocumentIDType, GlobalSlug, MaybePromise, PayloadRequest, TypedUser } from 'payload';
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';
3
4
  import type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName } from './mcp/builtinTools.js';
4
5
  export type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName };
5
- /** Re-exported from `@modelcontextprotocol/server` — the JSON Schema shape the MCP runtime validates against. */
6
- export type { JsonSchemaType, StandardSchemaWithJSON };
6
+ /** Re-exported from `@modelcontextprotocol/server` — common MCP types used in plugin config. */
7
+ export type { JsonSchemaType, StandardSchemaWithJSON, ToolAnnotations };
7
8
  /**
8
9
  * What a tool's `input` (or a prompt's `argsSchema`) can be — either a raw
9
- * JSON Schema literal, or a Standard Schema instance (Zod, Valibot, …).
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.
10
12
  */
11
13
  export type ToolInputSchema = JsonSchemaType | StandardSchemaWithJSON;
12
- /**
13
- * Serializable mirror of `SanitizedMCPPluginConfig` for client components —
14
- * the full sanitized config carries functions (tool handlers, etc.) that can't
15
- * cross the server→client boundary. Built by `sanitizeClientPluginConfig` and
16
- * passed to the `AccessField` component via `clientProps`.
17
- *
18
- * @internal
19
- */
20
- export type ClientMCPPluginConfig = {
21
- items: Array<{
22
- collectionSlug?: string;
23
- description: string;
24
- globalSlug?: string;
25
- key: string;
26
- label: string;
27
- type: 'collectionTool' | 'globalTool' | 'prompt' | 'resource' | 'tool';
28
- }>;
29
- };
30
14
  export type MCPToolResponse = {
31
15
  content: ContentBlock[];
32
16
  /**
@@ -37,11 +21,27 @@ export type MCPToolResponse = {
37
21
  doc?: Record<string, unknown>;
38
22
  } & Pick<CallToolResult, '_meta' | 'isError' | 'structuredContent'>;
39
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>;
40
30
  /**
41
31
  * The handler's `input` type. A specific Standard Schema (Zod, Valibot, …) gets
42
32
  * its inferred output; anything else falls back to `Record<string, unknown>`.
43
33
  */
44
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
45
  export type ToolHandlerArgs<TSchema = undefined> = {
46
46
  authorizedMCP: AuthorizedMCP;
47
47
  input: TypedInput<TSchema>;
@@ -55,6 +55,13 @@ export type GlobalToolHandlerArgs<TSchema = undefined> = {
55
55
  globalSlug: GlobalSlug;
56
56
  } & ToolHandlerArgs<TSchema>;
57
57
  export type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {
58
+ /**
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.
62
+ */
63
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>;
64
+ annotations?: ToolAnnotations;
58
65
  description: string;
59
66
  handler: (args: ToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>;
60
67
  input?: TSchema;
@@ -63,29 +70,51 @@ export type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema |
63
70
  */
64
71
  overrideResponse?: MCPResponseOverride;
65
72
  };
66
- /**
67
- * `TSchema` is the schema itself (Standard Schema, raw JSON Schema, or undefined).
68
- * The function-form variant of `input` carries a concrete `{ collectionSchema: JsonSchemaType }`
69
- * parameter type so callers can write `({ collectionSchema }) => …` without annotating it.
70
- */
71
73
  export type CollectionTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {
74
+ /**
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.
79
+ */
80
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>;
72
81
  handler: (args: CollectionToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>;
73
- input?: ((args: {
74
- collectionSchema: JsonSchemaType;
75
- }) => TSchema) | TSchema;
76
- } & Pick<Tool, 'description' | 'overrideResponse'>;
82
+ input?: TSchema;
83
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>;
77
84
  export type GlobalTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {
85
+ /**
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.
90
+ */
91
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>;
78
92
  handler: (args: GlobalToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>;
79
- input?: ((args: {
80
- globalSchema: JsonSchemaType;
81
- }) => TSchema) | TSchema;
82
- } & Pick<Tool, 'description' | 'overrideResponse'>;
93
+ input?: TSchema;
94
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>;
83
95
  /**
84
96
  * Configures (or disables) a built-in tool without replacing it.
85
97
  * `handler?: never` prevents a full `CollectionTool`/`GlobalTool` (which has a
86
98
  * required handler) from being silently accepted at a built-in key slot.
87
99
  */
88
- export type MCPBuiltInToolOverride = {
100
+ export type MCPBuiltInCollectionToolOverride = {
101
+ /**
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.
104
+ */
105
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>;
106
+ annotations?: ToolAnnotations;
107
+ description?: string;
108
+ handler?: never;
109
+ overrideResponse?: MCPResponseOverride;
110
+ };
111
+ export type MCPBuiltInGlobalToolOverride = {
112
+ /**
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.
115
+ */
116
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>;
117
+ annotations?: ToolAnnotations;
89
118
  description?: string;
90
119
  handler?: never;
91
120
  overrideResponse?: MCPResponseOverride;
@@ -97,19 +126,19 @@ export type MCPBuiltInToolOverride = {
97
126
  */
98
127
  export type MCPTopLevelToolEntry = Tool;
99
128
  export type MCPCollectionToolsMap = {
100
- [customToolName: string]: boolean | CollectionTool | MCPBuiltInToolOverride | undefined;
129
+ [customToolName: string]: boolean | CollectionTool | MCPBuiltInCollectionToolOverride | undefined;
101
130
  } & {
102
- [K in MCPCollectionBuiltinName]?: false | MCPBuiltInToolOverride;
131
+ [K in MCPCollectionBuiltinName]?: false | MCPBuiltInCollectionToolOverride;
103
132
  };
104
133
  export type MCPAuthCollectionToolsMap = {
105
- [K in MCPCollectionAuthToolName]?: MCPBuiltInToolOverride | true;
134
+ [K in MCPCollectionAuthToolName]?: MCPBuiltInCollectionToolOverride | true;
106
135
  } & MCPCollectionToolsMap;
107
136
  /** Auth-enabled collections get auth-tool name autocomplete; others get CRUD-only. */
108
137
  export type MCPToolsMapForCollection<Slug extends CollectionSlug> = Slug extends AuthCollectionSlug ? MCPAuthCollectionToolsMap : MCPCollectionToolsMap;
109
138
  export type MCPGlobalToolsMap = {
110
- [customToolName: string]: boolean | GlobalTool | MCPBuiltInToolOverride | undefined;
139
+ [customToolName: string]: boolean | GlobalTool | MCPBuiltInGlobalToolOverride | undefined;
111
140
  } & {
112
- [K in MCPGlobalBuiltinName]?: false | MCPBuiltInToolOverride;
141
+ [K in MCPGlobalBuiltinName]?: false | MCPBuiltInGlobalToolOverride;
113
142
  };
114
143
  export type MCPTopLevelToolsMap = Record<string, Tool>;
115
144
  export type PromptHandlerArgs<TSchema = undefined> = {
@@ -118,6 +147,12 @@ export type PromptHandlerArgs<TSchema = undefined> = {
118
147
  serverContext: ServerContext;
119
148
  };
120
149
  export type Prompt<TSchema extends ToolInputSchema = ToolInputSchema> = {
150
+ /**
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.
154
+ */
155
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>;
121
156
  argsSchema: TSchema;
122
157
  description: string;
123
158
  handler: (args: PromptHandlerArgs<TSchema>) => MaybePromise<{
@@ -139,6 +174,12 @@ export type ResourceHandlerArgs = {
139
174
  uri: URL;
140
175
  };
141
176
  export type Resource = {
177
+ /**
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.
181
+ */
182
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>;
142
183
  description: string;
143
184
  handler: (args: ResourceHandlerArgs) => MaybePromise<{
144
185
  contents: Array<{
@@ -172,100 +213,64 @@ export type MCPPluginConfig = {
172
213
  collections?: {
173
214
  [Slug in CollectionSlug]?: MCPPluginCollectionConfig<Slug>;
174
215
  };
175
- /** Skip MCP registration. The API key collection is still added (so DB / types stay stable). */
216
+ /** Skip MCP endpoint registration. */
176
217
  disabled?: boolean;
177
218
  globals?: {
178
219
  [Slug in GlobalSlug]?: MCPPluginGlobalConfig;
179
220
  };
221
+ hooks?: {
222
+ /** Transform a tool response after its handler returns */
223
+ afterToolCall?: MCPAfterToolCallHook[];
224
+ };
180
225
  mcp?: {
181
226
  serverOptions?: MCPServerOptions;
182
227
  verboseLogs?: boolean;
183
228
  };
184
- overrideApiKeyCollection?: (collection: CollectionConfig) => CollectionConfig;
185
- /** Replace the default API-key auth with a custom resolver. */
186
- overrideAuth?: (args: {
187
- getAPIKeyDoc: (overrideApiKey?: string) => Promise<MCPAPIKeysDoc>;
188
- getAuthorizedMCP: (args: {
189
- apiKeyDoc: MCPAPIKeysDoc;
190
- }) => AuthorizedMCP;
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: {
191
236
  pluginConfig: SanitizedMCPPluginConfig;
192
- req: PayloadRequest;
193
- }) => MaybePromise<AuthorizedMCP>;
237
+ } & GetAuthorizedMCPArgs) => MaybePromise<AuthorizedMCP>;
194
238
  prompts?: Record<string, Prompt>;
195
239
  resources?: Record<string, Resource>;
196
240
  /** Cross-cutting tools (not scoped to any collection or global). */
197
241
  tools?: MCPTopLevelToolsMap;
198
- userCollection?: CollectionSlug;
199
242
  };
200
243
  export type SanitizedMCPPluginConfig = {
201
244
  items: MCPItem[];
202
- userCollection: CollectionSlug;
203
- } & Pick<MCPPluginConfig, 'disabled' | 'mcp' | 'overrideApiKeyCollection' | 'overrideAuth'>;
245
+ } & Pick<MCPPluginConfig, 'disabled' | 'hooks' | 'mcp' | 'overrideGetAuthorizedMCP'>;
204
246
  export type MCPServerOptions = {
205
247
  options?: ConstructorParameters<typeof McpServer>[1];
206
248
  serverInfo?: Partial<ConstructorParameters<typeof McpServer>[0]>;
207
249
  };
208
250
  /**
209
- * Nested access tree as stored in the collection.
210
- * A `false` leaf disables that tool; missing keys defer to
211
- * defaults (built-in CRUD is on, opt-in tools are off).
212
- */
213
- export type MCPAPIKeysDocAccessTree = {
214
- collections?: {
215
- [CollectionSlug: CollectionSlug]: {
216
- [ToolKey: string]: boolean;
217
- };
218
- };
219
- globals?: {
220
- [GlobalSlug: GlobalSlug]: {
221
- [ToolKey: string]: boolean;
222
- };
223
- };
224
- prompts?: {
225
- [PromptKey: string]: boolean;
226
- };
227
- resources?: {
228
- [ResourceKey: string]: boolean;
229
- };
230
- tools?: {
231
- [ToolKey: string]: boolean;
232
- };
233
- };
234
- /**
235
- * Stored on `payload-mcp-api-keys` docs
236
- */
237
- export type MCPAPIKeysDoc = {
238
- access: MCPAPIKeysDocAccessTree;
239
- id: DefaultDocumentIDType;
240
- overrideAccess?: boolean;
241
- user: null | TypedUser;
242
- };
243
- /**
244
- * One MCP primitive — tool, prompt, or resource — paired with the metadata both
245
- * the endpoint and the API key collection need. Built by `sanitizeMCPConfig`,
246
- * filtered by `getAuthorizedMCP`, registered by the MCP endpoint.
251
+ * One MCP primitive plus the metadata needed for config-driven filtering and
252
+ * registration.
247
253
  *
248
- * - `key`: the config identifier (`find`, `echo`). Used for the API-key deny
249
- * lookup and as the admin checkbox field name. For collection/global tools,
250
- * the MCP wire name (`findPosts`) is derived from `key + slug` at
251
- * registration time.
252
- * - `label`: human-readable admin-UI display text for the checkbox.
253
- * - `tool` / `prompt` / `resource`: the live primitive (its own
254
- * `description` is what both MCP clients and the admin UI surface).
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.
255
257
  */
256
258
  export type MCPItemBase = {
257
- key: string;
259
+ configKey: string;
258
260
  label: string;
261
+ mcpName: string;
259
262
  };
260
- export type MCPItem = ({
263
+ export type CollectionMCPItem = {
261
264
  collectionSlug: CollectionSlug;
262
265
  tool: CollectionTool;
263
266
  type: 'collectionTool';
264
- } & MCPItemBase) | ({
267
+ } & MCPItemBase;
268
+ export type GlobalMCPItem = {
265
269
  globalSlug: GlobalSlug;
266
270
  tool: GlobalTool;
267
271
  type: 'globalTool';
268
- } & MCPItemBase) | ({
272
+ } & MCPItemBase;
273
+ export type MCPItem = ({
269
274
  prompt: Prompt;
270
275
  type: 'prompt';
271
276
  } & MCPItemBase) | ({
@@ -274,16 +279,13 @@ export type MCPItem = ({
274
279
  } & MCPItemBase) | ({
275
280
  tool: Tool;
276
281
  type: 'tool';
277
- } & MCPItemBase);
282
+ } & MCPItemBase) | CollectionMCPItem | GlobalMCPItem;
278
283
  /**
279
- * The caller's identity + the MCP items they can use for this request. Returned
280
- * by `getAuthorizedMCP`; denied items are simply absent from `items`. Handlers
281
- * receive this via `args.authorizedMCP` so they can spread
282
- * `localAPIDefaults(authorizedMCP)` into every local API call.
284
+ * The MCP items and access mode authorized for this request. The authenticated user is available
285
+ * as `req.user`.
283
286
  */
284
287
  export type AuthorizedMCP = {
285
288
  items: MCPItem[];
286
289
  overrideAccess: boolean;
287
- user: null | TypedUser;
288
290
  };
289
291
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,8 +1,6 @@
1
1
  /**
2
- * The caller's identity + the MCP items they can use for this request. Returned
3
- * by `getAuthorizedMCP`; denied items are simply absent from `items`. Handlers
4
- * receive this via `args.authorizedMCP` so they can spread
5
- * `localAPIDefaults(authorizedMCP)` into every local API call.
2
+ * The MCP items and access mode authorized for this request. The authenticated user is available
3
+ * as `req.user`.
6
4
  */ export { };
7
5
 
8
6
  //# sourceMappingURL=types.js.map