@payloadcms/plugin-mcp 3.77.0-internal.9837b1e → 3.77.0-internal.fd50432

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 (119) hide show
  1. package/dist/mcp/getMcpHandler.d.ts.map +1 -1
  2. package/dist/mcp/getMcpHandler.js +8 -4
  3. package/dist/mcp/getMcpHandler.js.map +1 -1
  4. package/dist/mcp/tools/auth/auth.d.ts.map +1 -1
  5. package/dist/mcp/tools/auth/auth.js +4 -1
  6. package/dist/mcp/tools/auth/auth.js.map +1 -1
  7. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +1 -1
  8. package/dist/mcp/tools/auth/forgotPassword.js +4 -1
  9. package/dist/mcp/tools/auth/forgotPassword.js.map +1 -1
  10. package/dist/mcp/tools/auth/login.d.ts.map +1 -1
  11. package/dist/mcp/tools/auth/login.js +4 -1
  12. package/dist/mcp/tools/auth/login.js.map +1 -1
  13. package/dist/mcp/tools/auth/resetPassword.d.ts.map +1 -1
  14. package/dist/mcp/tools/auth/resetPassword.js +4 -1
  15. package/dist/mcp/tools/auth/resetPassword.js.map +1 -1
  16. package/dist/mcp/tools/auth/unlock.d.ts.map +1 -1
  17. package/dist/mcp/tools/auth/unlock.js +4 -1
  18. package/dist/mcp/tools/auth/unlock.js.map +1 -1
  19. package/dist/mcp/tools/auth/verify.d.ts.map +1 -1
  20. package/dist/mcp/tools/auth/verify.js +4 -1
  21. package/dist/mcp/tools/auth/verify.js.map +1 -1
  22. package/dist/mcp/tools/collection/create.d.ts.map +1 -1
  23. package/dist/mcp/tools/collection/create.js +4 -1
  24. package/dist/mcp/tools/collection/create.js.map +1 -1
  25. package/dist/mcp/tools/collection/delete.d.ts.map +1 -1
  26. package/dist/mcp/tools/collection/delete.js +4 -1
  27. package/dist/mcp/tools/collection/delete.js.map +1 -1
  28. package/dist/mcp/tools/collection/find.d.ts.map +1 -1
  29. package/dist/mcp/tools/collection/find.js +4 -1
  30. package/dist/mcp/tools/collection/find.js.map +1 -1
  31. package/dist/mcp/tools/collection/update.d.ts.map +1 -1
  32. package/dist/mcp/tools/collection/update.js +4 -1
  33. package/dist/mcp/tools/collection/update.js.map +1 -1
  34. package/dist/mcp/tools/config/find.d.ts.map +1 -1
  35. package/dist/mcp/tools/config/find.js +4 -1
  36. package/dist/mcp/tools/config/find.js.map +1 -1
  37. package/dist/mcp/tools/config/update.d.ts.map +1 -1
  38. package/dist/mcp/tools/config/update.js +4 -1
  39. package/dist/mcp/tools/config/update.js.map +1 -1
  40. package/dist/mcp/tools/global/find.d.ts.map +1 -1
  41. package/dist/mcp/tools/global/find.js +4 -1
  42. package/dist/mcp/tools/global/find.js.map +1 -1
  43. package/dist/mcp/tools/global/update.d.ts.map +1 -1
  44. package/dist/mcp/tools/global/update.js +5 -2
  45. package/dist/mcp/tools/global/update.js.map +1 -1
  46. package/dist/mcp/tools/job/create.d.ts.map +1 -1
  47. package/dist/mcp/tools/job/create.js +4 -1
  48. package/dist/mcp/tools/job/create.js.map +1 -1
  49. package/dist/mcp/tools/job/run.d.ts.map +1 -1
  50. package/dist/mcp/tools/job/run.js +4 -1
  51. package/dist/mcp/tools/job/run.js.map +1 -1
  52. package/dist/mcp/tools/job/update.d.ts.map +1 -1
  53. package/dist/mcp/tools/job/update.js +4 -1
  54. package/dist/mcp/tools/job/update.js.map +1 -1
  55. package/dist/mcp/tools/resource/create.d.ts.map +1 -1
  56. package/dist/mcp/tools/resource/create.js +5 -2
  57. package/dist/mcp/tools/resource/create.js.map +1 -1
  58. package/dist/mcp/tools/resource/delete.d.ts.map +1 -1
  59. package/dist/mcp/tools/resource/delete.js +4 -1
  60. package/dist/mcp/tools/resource/delete.js.map +1 -1
  61. package/dist/mcp/tools/resource/find.d.ts.map +1 -1
  62. package/dist/mcp/tools/resource/find.js +4 -1
  63. package/dist/mcp/tools/resource/find.js.map +1 -1
  64. package/dist/mcp/tools/resource/update.d.ts.map +1 -1
  65. package/dist/mcp/tools/resource/update.js +5 -2
  66. package/dist/mcp/tools/resource/update.js.map +1 -1
  67. package/dist/types.d.ts +11 -1
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/types.js.map +1 -1
  70. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +1 -0
  71. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +34 -0
  72. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +1 -0
  73. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +8 -0
  74. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +1 -0
  75. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +18 -0
  76. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +1 -0
  77. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +20 -0
  78. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +1 -0
  79. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +53 -0
  80. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +1 -0
  81. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +1 -0
  82. package/dist/utils/schemaConversion/transformPointFields.js.map +1 -0
  83. package/package.json +6 -6
  84. package/src/mcp/getMcpHandler.ts +9 -6
  85. package/src/mcp/tools/auth/auth.ts +5 -3
  86. package/src/mcp/tools/auth/forgotPassword.ts +5 -3
  87. package/src/mcp/tools/auth/login.ts +5 -3
  88. package/src/mcp/tools/auth/resetPassword.ts +5 -3
  89. package/src/mcp/tools/auth/unlock.ts +5 -3
  90. package/src/mcp/tools/auth/verify.ts +5 -3
  91. package/src/mcp/tools/collection/create.ts +5 -3
  92. package/src/mcp/tools/collection/delete.ts +5 -3
  93. package/src/mcp/tools/collection/find.ts +5 -3
  94. package/src/mcp/tools/collection/update.ts +5 -3
  95. package/src/mcp/tools/config/find.ts +5 -3
  96. package/src/mcp/tools/config/update.ts +5 -3
  97. package/src/mcp/tools/global/find.ts +5 -3
  98. package/src/mcp/tools/global/update.ts +6 -4
  99. package/src/mcp/tools/job/create.ts +5 -3
  100. package/src/mcp/tools/job/run.ts +5 -3
  101. package/src/mcp/tools/job/update.ts +6 -3
  102. package/src/mcp/tools/resource/create.ts +6 -4
  103. package/src/mcp/tools/resource/delete.ts +5 -3
  104. package/src/mcp/tools/resource/find.ts +5 -3
  105. package/src/mcp/tools/resource/update.ts +6 -4
  106. package/src/types.ts +11 -2
  107. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +41 -0
  108. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +21 -0
  109. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +65 -0
  110. package/dist/utils/convertCollectionSchemaToZod.d.ts.map +0 -1
  111. package/dist/utils/convertCollectionSchemaToZod.js +0 -80
  112. package/dist/utils/convertCollectionSchemaToZod.js.map +0 -1
  113. package/dist/utils/transformPointFields.d.ts.map +0 -1
  114. package/dist/utils/transformPointFields.js.map +0 -1
  115. package/src/utils/convertCollectionSchemaToZod.ts +0 -95
  116. /package/dist/utils/{convertCollectionSchemaToZod.d.ts → schemaConversion/convertCollectionSchemaToZod.d.ts} +0 -0
  117. /package/dist/utils/{transformPointFields.d.ts → schemaConversion/transformPointFields.d.ts} +0 -0
  118. /package/dist/utils/{transformPointFields.js → schemaConversion/transformPointFields.js} +0 -0
  119. /package/src/utils/{transformPointFields.ts → schemaConversion/transformPointFields.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"getMcpHandler.d.ts","sourceRoot":"","sources":["../../src/mcp/getMcpHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgC,KAAK,cAAc,EAAkB,MAAM,SAAS,CAAA;AAE3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAkC3E,eAAO,MAAM,aAAa,kBACT,qBAAqB,qBACjB,iBAAiB,OAC/B,cAAc,4CA2dpB,CAAA"}
1
+ {"version":3,"file":"getMcpHandler.d.ts","sourceRoot":"","sources":["../../src/mcp/getMcpHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgC,KAAK,cAAc,EAAkB,MAAM,SAAS,CAAA;AAE3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAkC3E,eAAO,MAAM,aAAa,kBACT,qBAAqB,qBACjB,iBAAiB,OAC/B,cAAc,4CA8dpB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { createMcpHandler } from '@vercel/mcp-adapter';
1
+ import { createMcpHandler } from 'mcp-handler';
2
2
  import { join } from 'path';
3
3
  import { APIError, configToJSONSchema } from 'payload';
4
4
  import { toCamelCase } from '../utils/camelCase.js';
@@ -112,7 +112,10 @@ export const getMCPHandler = (pluginOptions, mcpAccessSettings, req)=>{
112
112
  customMCPTools.forEach((tool)=>{
113
113
  const camelCasedToolName = toCamelCase(tool.name);
114
114
  const isToolEnabled = mcpAccessSettings['payload-mcp-tool']?.[camelCasedToolName] ?? false;
115
- registerTool(isToolEnabled, tool.name, ()=>server.tool(tool.name, tool.description, tool.parameters, payloadToolHandler(tool.handler)), payload, useVerboseLogs);
115
+ registerTool(isToolEnabled, tool.name, ()=>server.registerTool(tool.name, {
116
+ description: tool.description,
117
+ inputSchema: tool.parameters
118
+ }, payloadToolHandler(tool.handler)), payload, useVerboseLogs);
116
119
  });
117
120
  // Custom prompts
118
121
  customMCPPrompts.forEach((prompt)=>{
@@ -205,9 +208,10 @@ export const getMCPHandler = (pluginOptions, mcpAccessSettings, req)=>{
205
208
  serverInfo: serverOptions.serverInfo
206
209
  }, {
207
210
  basePath: MCPHandlerOptions.basePath || payload.config.routes?.api || '/api',
211
+ disableSse: MCPHandlerOptions.disableSse ?? true,
208
212
  maxDuration: MCPHandlerOptions.maxDuration || 60,
209
- // INFO: Disabled until developer clarity is reached for server side streaming and we have an auth pattern for all SSE patterns
210
- // redisUrl: MCPHandlerOptions.redisUrl || process.env.REDIS_URL,
213
+ onEvent: MCPHandlerOptions.onEvent,
214
+ redisUrl: MCPHandlerOptions.redisUrl,
211
215
  verboseLogs: useVerboseLogs
212
216
  });
213
217
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mcp/getMcpHandler.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\n\nimport { createMcpHandler } from '@vercel/mcp-adapter'\nimport { join } from 'path'\nimport { APIError, configToJSONSchema, type PayloadRequest, type TypedUser } from 'payload'\n\nimport type { MCPAccessSettings, PluginMCPServerConfig } from '../types.js'\n\nimport { toCamelCase } from '../utils/camelCase.js'\nimport { getEnabledSlugs } from '../utils/getEnabledSlugs.js'\nimport { registerTool } from './registerTool.js'\n\n// Tools\nimport { findGlobalTool } from './tools/global/find.js'\nimport { updateGlobalTool } from './tools/global/update.js'\nimport { createResourceTool } from './tools/resource/create.js'\nimport { deleteResourceTool } from './tools/resource/delete.js'\nimport { findResourceTool } from './tools/resource/find.js'\nimport { updateResourceTool } from './tools/resource/update.js'\n\n// Experimental Tools\n/**\n * @experimental This tools are experimental and may change or be removed in the future.\n */\nimport { authTool } from './tools/auth/auth.js'\nimport { forgotPasswordTool } from './tools/auth/forgotPassword.js'\nimport { loginTool } from './tools/auth/login.js'\nimport { resetPasswordTool } from './tools/auth/resetPassword.js'\nimport { unlockTool } from './tools/auth/unlock.js'\nimport { verifyTool } from './tools/auth/verify.js'\nimport { createCollectionTool } from './tools/collection/create.js'\nimport { deleteCollectionTool } from './tools/collection/delete.js'\nimport { findCollectionTool } from './tools/collection/find.js'\nimport { updateCollectionTool } from './tools/collection/update.js'\nimport { findConfigTool } from './tools/config/find.js'\nimport { updateConfigTool } from './tools/config/update.js'\nimport { createJobTool } from './tools/job/create.js'\nimport { runJobTool } from './tools/job/run.js'\nimport { updateJobTool } from './tools/job/update.js'\n\nexport const getMCPHandler = (\n pluginOptions: PluginMCPServerConfig,\n mcpAccessSettings: MCPAccessSettings,\n req: PayloadRequest,\n) => {\n const { payload } = req\n const configSchema = configToJSONSchema(payload.config, payload.db.defaultIDType, req.i18n)\n\n // Handler wrapper that injects req before the _extra argument\n const wrapHandler = (handler: (...args: any[]) => any) => {\n return async (...args: any[]) => {\n const _extra = args[args.length - 1]\n const handlerArgs = args.slice(0, -1)\n return await handler(...handlerArgs, req, _extra)\n }\n }\n\n const payloadToolHandler = (\n handler: NonNullable<NonNullable<PluginMCPServerConfig['mcp']>['tools']>[number]['handler'],\n ) => wrapHandler(handler)\n\n const payloadPromptHandler = (\n handler: NonNullable<NonNullable<PluginMCPServerConfig['mcp']>['prompts']>[number]['handler'],\n ) => wrapHandler(handler)\n\n const payloadResourceHandler = (\n handler: NonNullable<NonNullable<PluginMCPServerConfig['mcp']>['resources']>[number]['handler'],\n ) => wrapHandler(handler)\n\n // User\n const user = mcpAccessSettings.user\n\n // MCP Server and Handler Options\n const MCPOptions = pluginOptions.mcp || {}\n const customMCPTools = MCPOptions.tools || []\n const customMCPPrompts = MCPOptions.prompts || []\n const customMCPResources = MCPOptions.resources || []\n const MCPHandlerOptions = MCPOptions.handlerOptions || {}\n const serverOptions = MCPOptions.serverOptions || {}\n const useVerboseLogs = MCPHandlerOptions.verboseLogs ?? false\n\n // Experimental MCP Tool Requirements\n const isDevelopment = process.env.NODE_ENV === 'development'\n const experimentalTools: NonNullable<PluginMCPServerConfig['experimental']>['tools'] =\n pluginOptions?.experimental?.tools || {}\n const collectionsPluginConfig = pluginOptions.collections || {}\n const globalsPluginConfig = pluginOptions.globals || {}\n const collectionsDirPath =\n experimentalTools && experimentalTools.collections?.collectionsDirPath\n ? experimentalTools.collections.collectionsDirPath\n : join(process.cwd(), 'src/collections')\n const configFilePath =\n experimentalTools && experimentalTools.config?.configFilePath\n ? experimentalTools.config.configFilePath\n : join(process.cwd(), 'src/payload.config.ts')\n const jobsDirPath =\n experimentalTools && experimentalTools.jobs?.jobsDirPath\n ? experimentalTools.jobs.jobsDirPath\n : join(process.cwd(), 'src/jobs')\n\n try {\n return createMcpHandler(\n (server) => {\n // Get enabled collections\n const enabledCollectionSlugs = getEnabledSlugs(collectionsPluginConfig, 'collection')\n\n // Collection Operation Tools\n enabledCollectionSlugs.forEach((enabledCollectionSlug) => {\n try {\n const schema = configSchema.definitions?.[enabledCollectionSlug] as JSONSchema4\n\n const toolCapabilities = mcpAccessSettings?.[\n `${toCamelCase(enabledCollectionSlug)}`\n ] as Record<string, unknown>\n const allowCreate: boolean | undefined = toolCapabilities?.create as boolean\n const allowUpdate: boolean | undefined = toolCapabilities?.update as boolean\n const allowFind: boolean | undefined = toolCapabilities?.find as boolean\n const allowDelete: boolean | undefined = toolCapabilities?.delete as boolean\n\n if (allowCreate) {\n registerTool(\n allowCreate,\n `Create ${enabledCollectionSlug}`,\n () =>\n createResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowUpdate) {\n registerTool(\n allowUpdate,\n `Update ${enabledCollectionSlug}`,\n () =>\n updateResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowFind) {\n registerTool(\n allowFind,\n `Find ${enabledCollectionSlug}`,\n () =>\n findResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowDelete) {\n registerTool(\n allowDelete,\n `Delete ${enabledCollectionSlug}`,\n () =>\n deleteResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n } catch (error) {\n throw new APIError(\n `Error registering tools for collection ${enabledCollectionSlug}: ${String(error)}`,\n 500,\n )\n }\n })\n\n // Global Operation Tools\n const enabledGlobalSlugs = getEnabledSlugs(globalsPluginConfig, 'global')\n\n enabledGlobalSlugs.forEach((enabledGlobalSlug) => {\n try {\n const schema = configSchema.definitions?.[enabledGlobalSlug] as JSONSchema4\n\n const toolCapabilities = mcpAccessSettings?.[\n `${toCamelCase(enabledGlobalSlug)}`\n ] as Record<string, unknown>\n const allowFind: boolean | undefined = toolCapabilities?.['find'] as boolean\n const allowUpdate: boolean | undefined = toolCapabilities?.['update'] as boolean\n\n if (allowFind) {\n registerTool(\n allowFind,\n `Find ${enabledGlobalSlug}`,\n () =>\n findGlobalTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledGlobalSlug,\n globalsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowUpdate) {\n registerTool(\n allowUpdate,\n `Update ${enabledGlobalSlug}`,\n () =>\n updateGlobalTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledGlobalSlug,\n globalsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n } catch (error) {\n throw new APIError(\n `Error registering tools for global ${enabledGlobalSlug}: ${String(error)}`,\n 500,\n )\n }\n })\n\n // Custom tools\n customMCPTools.forEach((tool) => {\n const camelCasedToolName = toCamelCase(tool.name)\n const isToolEnabled = mcpAccessSettings['payload-mcp-tool']?.[camelCasedToolName] ?? false\n\n registerTool(\n isToolEnabled,\n tool.name,\n () =>\n server.tool(\n tool.name,\n tool.description,\n tool.parameters,\n payloadToolHandler(tool.handler),\n ),\n payload,\n useVerboseLogs,\n )\n })\n\n // Custom prompts\n customMCPPrompts.forEach((prompt) => {\n const camelCasedPromptName = toCamelCase(prompt.name)\n const isPromptEnabled =\n mcpAccessSettings['payload-mcp-prompt']?.[camelCasedPromptName] ?? false\n\n if (isPromptEnabled) {\n server.registerPrompt(\n prompt.name,\n {\n argsSchema: prompt.argsSchema,\n description: prompt.description,\n title: prompt.title,\n },\n payloadPromptHandler(prompt.handler),\n )\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Prompt: ${prompt.title} Registered.`)\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Prompt: ${prompt.title} Skipped.`)\n }\n })\n\n // Custom resources\n customMCPResources.forEach((resource) => {\n const camelCasedResourceName = toCamelCase(resource.name)\n const isResourceEnabled =\n mcpAccessSettings['payload-mcp-resource']?.[camelCasedResourceName] ?? false\n\n if (isResourceEnabled) {\n server.registerResource(\n resource.name,\n // @ts-expect-error - Overload type is not working however -- ResourceTemplate OR String is a valid type\n resource.uri,\n {\n description: resource.description,\n mimeType: resource.mimeType,\n title: resource.title,\n },\n payloadResourceHandler(resource.handler),\n )\n\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Resource: ${resource.title} Registered.`)\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Resource: ${resource.title} Skipped.`)\n }\n })\n\n // Experimental - Collection Schema Modfication Tools\n if (\n mcpAccessSettings.collections?.create &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.create,\n 'Create Collection',\n () =>\n createCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n if (\n mcpAccessSettings.collections?.delete &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.delete,\n 'Delete Collection',\n () =>\n deleteCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.collections?.find &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.find,\n 'Find Collection',\n () => findCollectionTool(server, req, useVerboseLogs, collectionsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.collections?.update &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.update,\n 'Update Collection',\n () =>\n updateCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Payload Config Modification Tools\n if (mcpAccessSettings.config?.find && experimentalTools.config?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.config.find,\n 'Find Config',\n () => findConfigTool(server, req, useVerboseLogs, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.config?.update &&\n experimentalTools.config?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.config.update,\n 'Update Config',\n () => updateConfigTool(server, req, useVerboseLogs, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Job Modification Tools\n if (mcpAccessSettings.jobs?.create && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.create,\n 'Create Job',\n () => createJobTool(server, req, useVerboseLogs, jobsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.jobs?.update && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.update,\n 'Update Job',\n () => updateJobTool(server, req, useVerboseLogs, jobsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.jobs?.run && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.run,\n 'Run Job',\n () => runJobTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Auth Modification Tools\n if (mcpAccessSettings.auth?.auth && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.auth,\n 'Auth',\n () => authTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.login && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.login,\n 'Login',\n () => loginTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.verify && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.verify,\n 'Verify',\n () => verifyTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.resetPassword && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.resetPassword,\n 'Reset Password',\n () => resetPasswordTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.forgotPassword && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.forgotPassword,\n 'Forgot Password',\n () => forgotPasswordTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.unlock && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.unlock,\n 'Unlock',\n () => unlockTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (useVerboseLogs) {\n payload.logger.info('[payload-mcp] 🚀 MCP Server Ready.')\n }\n },\n {\n serverInfo: serverOptions.serverInfo,\n },\n {\n basePath: MCPHandlerOptions.basePath || payload.config.routes?.api || '/api',\n maxDuration: MCPHandlerOptions.maxDuration || 60,\n // INFO: Disabled until developer clarity is reached for server side streaming and we have an auth pattern for all SSE patterns\n // redisUrl: MCPHandlerOptions.redisUrl || process.env.REDIS_URL,\n verboseLogs: useVerboseLogs,\n },\n )\n } catch (error) {\n throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500)\n }\n}\n"],"names":["createMcpHandler","join","APIError","configToJSONSchema","toCamelCase","getEnabledSlugs","registerTool","findGlobalTool","updateGlobalTool","createResourceTool","deleteResourceTool","findResourceTool","updateResourceTool","authTool","forgotPasswordTool","loginTool","resetPasswordTool","unlockTool","verifyTool","createCollectionTool","deleteCollectionTool","findCollectionTool","updateCollectionTool","findConfigTool","updateConfigTool","createJobTool","runJobTool","updateJobTool","getMCPHandler","pluginOptions","mcpAccessSettings","req","payload","configSchema","config","db","defaultIDType","i18n","wrapHandler","handler","args","_extra","length","handlerArgs","slice","payloadToolHandler","payloadPromptHandler","payloadResourceHandler","user","MCPOptions","mcp","customMCPTools","tools","customMCPPrompts","prompts","customMCPResources","resources","MCPHandlerOptions","handlerOptions","serverOptions","useVerboseLogs","verboseLogs","isDevelopment","process","env","NODE_ENV","experimentalTools","experimental","collectionsPluginConfig","collections","globalsPluginConfig","globals","collectionsDirPath","cwd","configFilePath","jobsDirPath","jobs","server","enabledCollectionSlugs","forEach","enabledCollectionSlug","schema","definitions","toolCapabilities","allowCreate","create","allowUpdate","update","allowFind","find","allowDelete","delete","error","String","enabledGlobalSlugs","enabledGlobalSlug","tool","camelCasedToolName","name","isToolEnabled","description","parameters","prompt","camelCasedPromptName","isPromptEnabled","registerPrompt","argsSchema","title","logger","info","resource","camelCasedResourceName","isResourceEnabled","registerResource","uri","mimeType","enabled","run","auth","login","verify","resetPassword","forgotPassword","unlock","serverInfo","basePath","routes","api","maxDuration"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/mcp/getMcpHandler.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\n\nimport { createMcpHandler } from 'mcp-handler'\nimport { join } from 'path'\nimport { APIError, configToJSONSchema, type PayloadRequest, type TypedUser } from 'payload'\n\nimport type { MCPAccessSettings, PluginMCPServerConfig } from '../types.js'\n\nimport { toCamelCase } from '../utils/camelCase.js'\nimport { getEnabledSlugs } from '../utils/getEnabledSlugs.js'\nimport { registerTool } from './registerTool.js'\n\n// Tools\nimport { findGlobalTool } from './tools/global/find.js'\nimport { updateGlobalTool } from './tools/global/update.js'\nimport { createResourceTool } from './tools/resource/create.js'\nimport { deleteResourceTool } from './tools/resource/delete.js'\nimport { findResourceTool } from './tools/resource/find.js'\nimport { updateResourceTool } from './tools/resource/update.js'\n\n// Experimental Tools\n/**\n * @experimental This tools are experimental and may change or be removed in the future.\n */\nimport { authTool } from './tools/auth/auth.js'\nimport { forgotPasswordTool } from './tools/auth/forgotPassword.js'\nimport { loginTool } from './tools/auth/login.js'\nimport { resetPasswordTool } from './tools/auth/resetPassword.js'\nimport { unlockTool } from './tools/auth/unlock.js'\nimport { verifyTool } from './tools/auth/verify.js'\nimport { createCollectionTool } from './tools/collection/create.js'\nimport { deleteCollectionTool } from './tools/collection/delete.js'\nimport { findCollectionTool } from './tools/collection/find.js'\nimport { updateCollectionTool } from './tools/collection/update.js'\nimport { findConfigTool } from './tools/config/find.js'\nimport { updateConfigTool } from './tools/config/update.js'\nimport { createJobTool } from './tools/job/create.js'\nimport { runJobTool } from './tools/job/run.js'\nimport { updateJobTool } from './tools/job/update.js'\n\nexport const getMCPHandler = (\n pluginOptions: PluginMCPServerConfig,\n mcpAccessSettings: MCPAccessSettings,\n req: PayloadRequest,\n) => {\n const { payload } = req\n const configSchema = configToJSONSchema(payload.config, payload.db.defaultIDType, req.i18n)\n\n // Handler wrapper that injects req before the _extra argument\n const wrapHandler = (handler: (...args: any[]) => any) => {\n return async (...args: any[]) => {\n const _extra = args[args.length - 1]\n const handlerArgs = args.slice(0, -1)\n return await handler(...handlerArgs, req, _extra)\n }\n }\n\n const payloadToolHandler = (\n handler: NonNullable<NonNullable<PluginMCPServerConfig['mcp']>['tools']>[number]['handler'],\n ) => wrapHandler(handler)\n\n const payloadPromptHandler = (\n handler: NonNullable<NonNullable<PluginMCPServerConfig['mcp']>['prompts']>[number]['handler'],\n ) => wrapHandler(handler)\n\n const payloadResourceHandler = (\n handler: NonNullable<NonNullable<PluginMCPServerConfig['mcp']>['resources']>[number]['handler'],\n ) => wrapHandler(handler)\n\n // User\n const user = mcpAccessSettings.user\n\n // MCP Server and Handler Options\n const MCPOptions = pluginOptions.mcp || {}\n const customMCPTools = MCPOptions.tools || []\n const customMCPPrompts = MCPOptions.prompts || []\n const customMCPResources = MCPOptions.resources || []\n const MCPHandlerOptions = MCPOptions.handlerOptions || {}\n const serverOptions = MCPOptions.serverOptions || {}\n const useVerboseLogs = MCPHandlerOptions.verboseLogs ?? false\n\n // Experimental MCP Tool Requirements\n const isDevelopment = process.env.NODE_ENV === 'development'\n const experimentalTools: NonNullable<PluginMCPServerConfig['experimental']>['tools'] =\n pluginOptions?.experimental?.tools || {}\n const collectionsPluginConfig = pluginOptions.collections || {}\n const globalsPluginConfig = pluginOptions.globals || {}\n const collectionsDirPath =\n experimentalTools && experimentalTools.collections?.collectionsDirPath\n ? experimentalTools.collections.collectionsDirPath\n : join(process.cwd(), 'src/collections')\n const configFilePath =\n experimentalTools && experimentalTools.config?.configFilePath\n ? experimentalTools.config.configFilePath\n : join(process.cwd(), 'src/payload.config.ts')\n const jobsDirPath =\n experimentalTools && experimentalTools.jobs?.jobsDirPath\n ? experimentalTools.jobs.jobsDirPath\n : join(process.cwd(), 'src/jobs')\n\n try {\n return createMcpHandler(\n (server) => {\n // Get enabled collections\n const enabledCollectionSlugs = getEnabledSlugs(collectionsPluginConfig, 'collection')\n\n // Collection Operation Tools\n enabledCollectionSlugs.forEach((enabledCollectionSlug) => {\n try {\n const schema = configSchema.definitions?.[enabledCollectionSlug] as JSONSchema4\n\n const toolCapabilities = mcpAccessSettings?.[\n `${toCamelCase(enabledCollectionSlug)}`\n ] as Record<string, unknown>\n const allowCreate: boolean | undefined = toolCapabilities?.create as boolean\n const allowUpdate: boolean | undefined = toolCapabilities?.update as boolean\n const allowFind: boolean | undefined = toolCapabilities?.find as boolean\n const allowDelete: boolean | undefined = toolCapabilities?.delete as boolean\n\n if (allowCreate) {\n registerTool(\n allowCreate,\n `Create ${enabledCollectionSlug}`,\n () =>\n createResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowUpdate) {\n registerTool(\n allowUpdate,\n `Update ${enabledCollectionSlug}`,\n () =>\n updateResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowFind) {\n registerTool(\n allowFind,\n `Find ${enabledCollectionSlug}`,\n () =>\n findResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowDelete) {\n registerTool(\n allowDelete,\n `Delete ${enabledCollectionSlug}`,\n () =>\n deleteResourceTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledCollectionSlug,\n collectionsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n } catch (error) {\n throw new APIError(\n `Error registering tools for collection ${enabledCollectionSlug}: ${String(error)}`,\n 500,\n )\n }\n })\n\n // Global Operation Tools\n const enabledGlobalSlugs = getEnabledSlugs(globalsPluginConfig, 'global')\n\n enabledGlobalSlugs.forEach((enabledGlobalSlug) => {\n try {\n const schema = configSchema.definitions?.[enabledGlobalSlug] as JSONSchema4\n\n const toolCapabilities = mcpAccessSettings?.[\n `${toCamelCase(enabledGlobalSlug)}`\n ] as Record<string, unknown>\n const allowFind: boolean | undefined = toolCapabilities?.['find'] as boolean\n const allowUpdate: boolean | undefined = toolCapabilities?.['update'] as boolean\n\n if (allowFind) {\n registerTool(\n allowFind,\n `Find ${enabledGlobalSlug}`,\n () =>\n findGlobalTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledGlobalSlug,\n globalsPluginConfig,\n ),\n payload,\n useVerboseLogs,\n )\n }\n if (allowUpdate) {\n registerTool(\n allowUpdate,\n `Update ${enabledGlobalSlug}`,\n () =>\n updateGlobalTool(\n server,\n req,\n user,\n useVerboseLogs,\n enabledGlobalSlug,\n globalsPluginConfig,\n schema,\n ),\n payload,\n useVerboseLogs,\n )\n }\n } catch (error) {\n throw new APIError(\n `Error registering tools for global ${enabledGlobalSlug}: ${String(error)}`,\n 500,\n )\n }\n })\n\n // Custom tools\n customMCPTools.forEach((tool) => {\n const camelCasedToolName = toCamelCase(tool.name)\n const isToolEnabled = mcpAccessSettings['payload-mcp-tool']?.[camelCasedToolName] ?? false\n\n registerTool(\n isToolEnabled,\n tool.name,\n () =>\n server.registerTool(\n tool.name,\n {\n description: tool.description,\n inputSchema: tool.parameters,\n },\n payloadToolHandler(tool.handler),\n ),\n payload,\n useVerboseLogs,\n )\n })\n\n // Custom prompts\n customMCPPrompts.forEach((prompt) => {\n const camelCasedPromptName = toCamelCase(prompt.name)\n const isPromptEnabled =\n mcpAccessSettings['payload-mcp-prompt']?.[camelCasedPromptName] ?? false\n\n if (isPromptEnabled) {\n server.registerPrompt(\n prompt.name,\n {\n argsSchema: prompt.argsSchema,\n description: prompt.description,\n title: prompt.title,\n },\n payloadPromptHandler(prompt.handler),\n )\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Prompt: ${prompt.title} Registered.`)\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Prompt: ${prompt.title} Skipped.`)\n }\n })\n\n // Custom resources\n customMCPResources.forEach((resource) => {\n const camelCasedResourceName = toCamelCase(resource.name)\n const isResourceEnabled =\n mcpAccessSettings['payload-mcp-resource']?.[camelCasedResourceName] ?? false\n\n if (isResourceEnabled) {\n server.registerResource(\n resource.name,\n // @ts-expect-error - Overload type is not working however -- ResourceTemplate OR String is a valid type\n resource.uri,\n {\n description: resource.description,\n mimeType: resource.mimeType,\n title: resource.title,\n },\n payloadResourceHandler(resource.handler),\n )\n\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Resource: ${resource.title} Registered.`)\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Resource: ${resource.title} Skipped.`)\n }\n })\n\n // Experimental - Collection Schema Modfication Tools\n if (\n mcpAccessSettings.collections?.create &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.create,\n 'Create Collection',\n () =>\n createCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n if (\n mcpAccessSettings.collections?.delete &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.delete,\n 'Delete Collection',\n () =>\n deleteCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.collections?.find &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.find,\n 'Find Collection',\n () => findCollectionTool(server, req, useVerboseLogs, collectionsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.collections?.update &&\n experimentalTools.collections?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.collections.update,\n 'Update Collection',\n () =>\n updateCollectionTool(server, req, useVerboseLogs, collectionsDirPath, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Payload Config Modification Tools\n if (mcpAccessSettings.config?.find && experimentalTools.config?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.config.find,\n 'Find Config',\n () => findConfigTool(server, req, useVerboseLogs, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (\n mcpAccessSettings.config?.update &&\n experimentalTools.config?.enabled &&\n isDevelopment\n ) {\n registerTool(\n mcpAccessSettings.config.update,\n 'Update Config',\n () => updateConfigTool(server, req, useVerboseLogs, configFilePath),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Job Modification Tools\n if (mcpAccessSettings.jobs?.create && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.create,\n 'Create Job',\n () => createJobTool(server, req, useVerboseLogs, jobsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.jobs?.update && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.update,\n 'Update Job',\n () => updateJobTool(server, req, useVerboseLogs, jobsDirPath),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.jobs?.run && experimentalTools.jobs?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.jobs.run,\n 'Run Job',\n () => runJobTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n // Experimental - Auth Modification Tools\n if (mcpAccessSettings.auth?.auth && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.auth,\n 'Auth',\n () => authTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.login && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.login,\n 'Login',\n () => loginTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.verify && experimentalTools.auth?.enabled && isDevelopment) {\n registerTool(\n mcpAccessSettings.auth.verify,\n 'Verify',\n () => verifyTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.resetPassword && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.resetPassword,\n 'Reset Password',\n () => resetPasswordTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.forgotPassword && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.forgotPassword,\n 'Forgot Password',\n () => forgotPasswordTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (mcpAccessSettings.auth?.unlock && experimentalTools.auth?.enabled) {\n registerTool(\n mcpAccessSettings.auth.unlock,\n 'Unlock',\n () => unlockTool(server, req, useVerboseLogs),\n payload,\n useVerboseLogs,\n )\n }\n\n if (useVerboseLogs) {\n payload.logger.info('[payload-mcp] 🚀 MCP Server Ready.')\n }\n },\n {\n serverInfo: serverOptions.serverInfo,\n },\n {\n basePath: MCPHandlerOptions.basePath || payload.config.routes?.api || '/api',\n disableSse: MCPHandlerOptions.disableSse ?? true,\n maxDuration: MCPHandlerOptions.maxDuration || 60,\n onEvent: MCPHandlerOptions.onEvent,\n redisUrl: MCPHandlerOptions.redisUrl,\n verboseLogs: useVerboseLogs,\n },\n )\n } catch (error) {\n throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500)\n }\n}\n"],"names":["createMcpHandler","join","APIError","configToJSONSchema","toCamelCase","getEnabledSlugs","registerTool","findGlobalTool","updateGlobalTool","createResourceTool","deleteResourceTool","findResourceTool","updateResourceTool","authTool","forgotPasswordTool","loginTool","resetPasswordTool","unlockTool","verifyTool","createCollectionTool","deleteCollectionTool","findCollectionTool","updateCollectionTool","findConfigTool","updateConfigTool","createJobTool","runJobTool","updateJobTool","getMCPHandler","pluginOptions","mcpAccessSettings","req","payload","configSchema","config","db","defaultIDType","i18n","wrapHandler","handler","args","_extra","length","handlerArgs","slice","payloadToolHandler","payloadPromptHandler","payloadResourceHandler","user","MCPOptions","mcp","customMCPTools","tools","customMCPPrompts","prompts","customMCPResources","resources","MCPHandlerOptions","handlerOptions","serverOptions","useVerboseLogs","verboseLogs","isDevelopment","process","env","NODE_ENV","experimentalTools","experimental","collectionsPluginConfig","collections","globalsPluginConfig","globals","collectionsDirPath","cwd","configFilePath","jobsDirPath","jobs","server","enabledCollectionSlugs","forEach","enabledCollectionSlug","schema","definitions","toolCapabilities","allowCreate","create","allowUpdate","update","allowFind","find","allowDelete","delete","error","String","enabledGlobalSlugs","enabledGlobalSlug","tool","camelCasedToolName","name","isToolEnabled","description","inputSchema","parameters","prompt","camelCasedPromptName","isPromptEnabled","registerPrompt","argsSchema","title","logger","info","resource","camelCasedResourceName","isResourceEnabled","registerResource","uri","mimeType","enabled","run","auth","login","verify","resetPassword","forgotPassword","unlock","serverInfo","basePath","routes","api","disableSse","maxDuration","onEvent","redisUrl"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,QAAQ,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SA+DpF,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,QAAQ,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAiEpF,CAAA"}
@@ -46,7 +46,10 @@ export const authTool = (server, req, verboseLogs)=>{
46
46
  };
47
47
  }
48
48
  };
49
- server.tool('auth', toolSchemas.auth.description, toolSchemas.auth.parameters.shape, async ({ headers })=>{
49
+ server.registerTool('auth', {
50
+ description: toolSchemas.auth.description,
51
+ inputSchema: toolSchemas.auth.parameters.shape
52
+ }, async ({ headers })=>{
50
53
  return await tool(headers);
51
54
  });
52
55
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/auth.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const authTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (headers?: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Checking authentication status')\n }\n\n try {\n // Parse custom headers if provided, otherwise use empty headers\n let authHeaders = new Headers()\n\n if (headers) {\n try {\n const parsedHeaders = JSON.parse(headers)\n authHeaders = new Headers(parsedHeaders)\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Using custom headers: ${headers}`)\n }\n } catch (_ignore) {\n payload.logger.warn(`[payload-mcp] Invalid headers JSON: ${headers}, using empty headers`)\n }\n }\n\n const result = await payload.auth({\n headers: authHeaders,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Authentication check completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Authentication Status\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error checking authentication: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error checking authentication**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'auth',\n toolSchemas.auth.description,\n toolSchemas.auth.parameters.shape,\n async ({ headers }) => {\n return await tool(headers)\n },\n )\n}\n"],"names":["toolSchemas","authTool","server","req","verboseLogs","tool","headers","payload","logger","info","authHeaders","Headers","parsedHeaders","JSON","parse","_ignore","warn","result","auth","content","type","text","stringify","error","errorMessage","Error","message","description","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,WAAW,CAACC,QAAmBC,KAAqBC;IAC/D,MAAMC,OAAO,OAAOC;QAClB,MAAMC,UAAUJ,IAAII,OAAO;QAE3B,IAAIH,aAAa;YACfG,QAAQC,MAAM,CAACC,IAAI,CAAC;QACtB;QAEA,IAAI;YACF,gEAAgE;YAChE,IAAIC,cAAc,IAAIC;YAEtB,IAAIL,SAAS;gBACX,IAAI;oBACF,MAAMM,gBAAgBC,KAAKC,KAAK,CAACR;oBACjCI,cAAc,IAAIC,QAAQC;oBAC1B,IAAIR,aAAa;wBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,oCAAoC,EAAEH,SAAS;oBACtE;gBACF,EAAE,OAAOS,SAAS;oBAChBR,QAAQC,MAAM,CAACQ,IAAI,CAAC,CAAC,oCAAoC,EAAEV,QAAQ,qBAAqB,CAAC;gBAC3F;YACF;YAEA,MAAMW,SAAS,MAAMV,QAAQW,IAAI,CAAC;gBAChCZ,SAASI;YACX;YAEA,IAAIN,aAAa;gBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLU,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,uCAAuC,EAAER,KAAKS,SAAS,CAACL,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBAC3F;iBACD;YACH;QACF,EAAE,OAAOM,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9DnB,QAAQC,MAAM,CAACe,KAAK,CAAC,CAAC,6CAA6C,EAAEC,cAAc;YAEnF,OAAO;gBACLL,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,qCAAqC,EAAEG,cAAc;oBAC9D;iBACD;YACH;QACF;IACF;IAEAtB,OAAOG,IAAI,CACT,QACAL,YAAYkB,IAAI,CAACS,WAAW,EAC5B3B,YAAYkB,IAAI,CAACU,UAAU,CAACC,KAAK,EACjC,OAAO,EAAEvB,OAAO,EAAE;QAChB,OAAO,MAAMD,KAAKC;IACpB;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/auth/auth.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const authTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (headers?: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Checking authentication status')\n }\n\n try {\n // Parse custom headers if provided, otherwise use empty headers\n let authHeaders = new Headers()\n\n if (headers) {\n try {\n const parsedHeaders = JSON.parse(headers)\n authHeaders = new Headers(parsedHeaders)\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Using custom headers: ${headers}`)\n }\n } catch (_ignore) {\n payload.logger.warn(`[payload-mcp] Invalid headers JSON: ${headers}, using empty headers`)\n }\n }\n\n const result = await payload.auth({\n headers: authHeaders,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Authentication check completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Authentication Status\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error checking authentication: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error checking authentication**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'auth',\n {\n description: toolSchemas.auth.description,\n inputSchema: toolSchemas.auth.parameters.shape,\n },\n async ({ headers }) => {\n return await tool(headers)\n },\n )\n}\n"],"names":["toolSchemas","authTool","server","req","verboseLogs","tool","headers","payload","logger","info","authHeaders","Headers","parsedHeaders","JSON","parse","_ignore","warn","result","auth","content","type","text","stringify","error","errorMessage","Error","message","registerTool","description","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,WAAW,CAACC,QAAmBC,KAAqBC;IAC/D,MAAMC,OAAO,OAAOC;QAClB,MAAMC,UAAUJ,IAAII,OAAO;QAE3B,IAAIH,aAAa;YACfG,QAAQC,MAAM,CAACC,IAAI,CAAC;QACtB;QAEA,IAAI;YACF,gEAAgE;YAChE,IAAIC,cAAc,IAAIC;YAEtB,IAAIL,SAAS;gBACX,IAAI;oBACF,MAAMM,gBAAgBC,KAAKC,KAAK,CAACR;oBACjCI,cAAc,IAAIC,QAAQC;oBAC1B,IAAIR,aAAa;wBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,oCAAoC,EAAEH,SAAS;oBACtE;gBACF,EAAE,OAAOS,SAAS;oBAChBR,QAAQC,MAAM,CAACQ,IAAI,CAAC,CAAC,oCAAoC,EAAEV,QAAQ,qBAAqB,CAAC;gBAC3F;YACF;YAEA,MAAMW,SAAS,MAAMV,QAAQW,IAAI,CAAC;gBAChCZ,SAASI;YACX;YAEA,IAAIN,aAAa;gBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLU,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,uCAAuC,EAAER,KAAKS,SAAS,CAACL,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBAC3F;iBACD;YACH;QACF,EAAE,OAAOM,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9DnB,QAAQC,MAAM,CAACe,KAAK,CAAC,CAAC,6CAA6C,EAAEC,cAAc;YAEnF,OAAO;gBACLL,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,qCAAqC,EAAEG,cAAc;oBAC9D;iBACD;YACH;QACF;IACF;IAEAtB,OAAOyB,YAAY,CACjB,QACA;QACEC,aAAa5B,YAAYkB,IAAI,CAACU,WAAW;QACzCC,aAAa7B,YAAYkB,IAAI,CAACY,UAAU,CAACC,KAAK;IAChD,GACA,OAAO,EAAEzB,OAAO,EAAE;QAChB,OAAO,MAAMD,KAAKC;IACpB;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"forgotPassword.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/forgotPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,kBAAkB,WACrB,SAAS,OACZ,cAAc,eACN,OAAO,SA2DrB,CAAA"}
1
+ {"version":3,"file":"forgotPassword.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/forgotPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,kBAAkB,WACrB,SAAS,OACZ,cAAc,eACN,OAAO,SA6DrB,CAAA"}
@@ -37,7 +37,10 @@ export const forgotPasswordTool = (server, req, verboseLogs)=>{
37
37
  };
38
38
  }
39
39
  };
40
- server.tool('forgotPassword', toolSchemas.forgotPassword.description, toolSchemas.forgotPassword.parameters.shape, async ({ collection, disableEmail, email })=>{
40
+ server.registerTool('forgotPassword', {
41
+ description: toolSchemas.forgotPassword.description,
42
+ inputSchema: toolSchemas.forgotPassword.parameters.shape
43
+ }, async ({ collection, disableEmail, email })=>{
41
44
  return await tool(collection, email, disableEmail);
42
45
  });
43
46
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/forgotPassword.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const forgotPasswordTool = (\n server: McpServer,\n req: PayloadRequest,\n verboseLogs: boolean,\n) => {\n const tool = async (collection: string, email: string, disableEmail: boolean = false) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Sending password reset email for user: ${email} in collection: ${collection}`,\n )\n }\n\n try {\n const result = await payload.forgotPassword({\n collection,\n data: {\n email,\n },\n disableEmail,\n })\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Password reset email sent successfully for user: ${email}`,\n )\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Password Reset Email Sent\\n\\n**User:** ${email}\\n**Collection:** ${collection}\\n**Email Disabled:** ${disableEmail}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(\n `[payload-mcp] Error sending password reset email for user ${email}: ${errorMessage}`,\n )\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error sending password reset email for user \"${email}\"**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'forgotPassword',\n toolSchemas.forgotPassword.description,\n toolSchemas.forgotPassword.parameters.shape,\n async ({ collection, disableEmail, email }) => {\n return await tool(collection, email, disableEmail)\n },\n )\n}\n"],"names":["toolSchemas","forgotPasswordTool","server","req","verboseLogs","tool","collection","email","disableEmail","payload","logger","info","result","forgotPassword","data","content","type","text","JSON","stringify","error","errorMessage","Error","message","description","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,qBAAqB,CAChCC,QACAC,KACAC;IAEA,MAAMC,OAAO,OAAOC,YAAoBC,OAAeC,eAAwB,KAAK;QAClF,MAAMC,UAAUN,IAAIM,OAAO;QAE3B,IAAIL,aAAa;YACfK,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,qDAAqD,EAAEJ,MAAM,gBAAgB,EAAED,YAAY;QAEhG;QAEA,IAAI;YACF,MAAMM,SAAS,MAAMH,QAAQI,cAAc,CAAC;gBAC1CP;gBACAQ,MAAM;oBACJP;gBACF;gBACAC;YACF;YAEA,IAAIJ,aAAa;gBACfK,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,+DAA+D,EAAEJ,OAAO;YAE7E;YAEA,OAAO;gBACLQ,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,yCAAyC,EAAEV,MAAM,kBAAkB,EAAED,WAAW,sBAAsB,EAAEE,aAAa,gBAAgB,EAAEU,KAAKC,SAAS,CAACP,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBACzL;iBACD;YACH;QACF,EAAE,OAAOQ,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Dd,QAAQC,MAAM,CAACU,KAAK,CAClB,CAAC,0DAA0D,EAAEb,MAAM,EAAE,EAAEc,cAAc;YAGvF,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,iDAAiD,EAAEV,MAAM,KAAK,EAAEc,cAAc;oBACvF;iBACD;YACH;QACF;IACF;IAEAnB,OAAOG,IAAI,CACT,kBACAL,YAAYa,cAAc,CAACW,WAAW,EACtCxB,YAAYa,cAAc,CAACY,UAAU,CAACC,KAAK,EAC3C,OAAO,EAAEpB,UAAU,EAAEE,YAAY,EAAED,KAAK,EAAE;QACxC,OAAO,MAAMF,KAAKC,YAAYC,OAAOC;IACvC;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/auth/forgotPassword.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const forgotPasswordTool = (\n server: McpServer,\n req: PayloadRequest,\n verboseLogs: boolean,\n) => {\n const tool = async (collection: string, email: string, disableEmail: boolean = false) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Sending password reset email for user: ${email} in collection: ${collection}`,\n )\n }\n\n try {\n const result = await payload.forgotPassword({\n collection,\n data: {\n email,\n },\n disableEmail,\n })\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Password reset email sent successfully for user: ${email}`,\n )\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Password Reset Email Sent\\n\\n**User:** ${email}\\n**Collection:** ${collection}\\n**Email Disabled:** ${disableEmail}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(\n `[payload-mcp] Error sending password reset email for user ${email}: ${errorMessage}`,\n )\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error sending password reset email for user \"${email}\"**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'forgotPassword',\n {\n description: toolSchemas.forgotPassword.description,\n inputSchema: toolSchemas.forgotPassword.parameters.shape,\n },\n async ({ collection, disableEmail, email }) => {\n return await tool(collection, email, disableEmail)\n },\n )\n}\n"],"names":["toolSchemas","forgotPasswordTool","server","req","verboseLogs","tool","collection","email","disableEmail","payload","logger","info","result","forgotPassword","data","content","type","text","JSON","stringify","error","errorMessage","Error","message","registerTool","description","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,qBAAqB,CAChCC,QACAC,KACAC;IAEA,MAAMC,OAAO,OAAOC,YAAoBC,OAAeC,eAAwB,KAAK;QAClF,MAAMC,UAAUN,IAAIM,OAAO;QAE3B,IAAIL,aAAa;YACfK,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,qDAAqD,EAAEJ,MAAM,gBAAgB,EAAED,YAAY;QAEhG;QAEA,IAAI;YACF,MAAMM,SAAS,MAAMH,QAAQI,cAAc,CAAC;gBAC1CP;gBACAQ,MAAM;oBACJP;gBACF;gBACAC;YACF;YAEA,IAAIJ,aAAa;gBACfK,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,+DAA+D,EAAEJ,OAAO;YAE7E;YAEA,OAAO;gBACLQ,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,yCAAyC,EAAEV,MAAM,kBAAkB,EAAED,WAAW,sBAAsB,EAAEE,aAAa,gBAAgB,EAAEU,KAAKC,SAAS,CAACP,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBACzL;iBACD;YACH;QACF,EAAE,OAAOQ,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Dd,QAAQC,MAAM,CAACU,KAAK,CAClB,CAAC,0DAA0D,EAAEb,MAAM,EAAE,EAAEc,cAAc;YAGvF,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,iDAAiD,EAAEV,MAAM,KAAK,EAAEc,cAAc;oBACvF;iBACD;YACH;QACF;IACF;IAEAnB,OAAOsB,YAAY,CACjB,kBACA;QACEC,aAAazB,YAAYa,cAAc,CAACY,WAAW;QACnDC,aAAa1B,YAAYa,cAAc,CAACc,UAAU,CAACC,KAAK;IAC1D,GACA,OAAO,EAAEtB,UAAU,EAAEE,YAAY,EAAED,KAAK,EAAE;QACxC,OAAO,MAAMF,KAAKC,YAAYC,OAAOC;IACvC;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,SAAS,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAgErF,CAAA"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,SAAS,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAkErF,CAAA"}
@@ -40,7 +40,10 @@ export const loginTool = (server, req, verboseLogs)=>{
40
40
  };
41
41
  }
42
42
  };
43
- server.tool('login', toolSchemas.login.description, toolSchemas.login.parameters.shape, async ({ collection, depth, email, overrideAccess, password, showHiddenFields })=>{
43
+ server.registerTool('login', {
44
+ description: toolSchemas.login.description,
45
+ inputSchema: toolSchemas.login.parameters.shape
46
+ }, async ({ collection, depth, email, overrideAccess, password, showHiddenFields })=>{
44
47
  return await tool(collection, email, password, depth, overrideAccess, showHiddenFields);
45
48
  });
46
49
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/login.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const loginTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (\n collection: string,\n email: string,\n password: string,\n depth: number = 0,\n overrideAccess: boolean = false,\n showHiddenFields: boolean = false,\n ) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Attempting login for user: ${email} in collection: ${collection}`,\n )\n }\n\n try {\n const result = await payload.login({\n collection,\n data: {\n email,\n password,\n },\n depth,\n overrideAccess,\n showHiddenFields,\n })\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Login successful for user: ${email}`)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Login Successful\\n\\n**User:** ${email}\\n**Collection:** ${collection}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Login failed for user ${email}: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Login failed for user \"${email}\"**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'login',\n toolSchemas.login.description,\n toolSchemas.login.parameters.shape,\n async ({ collection, depth, email, overrideAccess, password, showHiddenFields }) => {\n return await tool(collection, email, password, depth, overrideAccess, showHiddenFields)\n },\n )\n}\n"],"names":["toolSchemas","loginTool","server","req","verboseLogs","tool","collection","email","password","depth","overrideAccess","showHiddenFields","payload","logger","info","result","login","data","content","type","text","JSON","stringify","error","errorMessage","Error","message","description","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,YAAY,CAACC,QAAmBC,KAAqBC;IAChE,MAAMC,OAAO,OACXC,YACAC,OACAC,UACAC,QAAgB,CAAC,EACjBC,iBAA0B,KAAK,EAC/BC,mBAA4B,KAAK;QAEjC,MAAMC,UAAUT,IAAIS,OAAO;QAE3B,IAAIR,aAAa;YACfQ,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,yCAAyC,EAAEP,MAAM,gBAAgB,EAAED,YAAY;QAEpF;QAEA,IAAI;YACF,MAAMS,SAAS,MAAMH,QAAQI,KAAK,CAAC;gBACjCV;gBACAW,MAAM;oBACJV;oBACAC;gBACF;gBACAC;gBACAC;gBACAC;YACF;YAEA,IAAIP,aAAa;gBACfQ,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,yCAAyC,EAAEP,OAAO;YACzE;YAEA,OAAO;gBACLW,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,gCAAgC,EAAEb,MAAM,kBAAkB,EAAED,WAAW,gBAAgB,EAAEe,KAAKC,SAAS,CAACP,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBAC3I;iBACD;YACH;QACF,EAAE,OAAOQ,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Dd,QAAQC,MAAM,CAACU,KAAK,CAAC,CAAC,oCAAoC,EAAEhB,MAAM,EAAE,EAAEiB,cAAc;YAEpF,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,2BAA2B,EAAEb,MAAM,KAAK,EAAEiB,cAAc;oBACjE;iBACD;YACH;QACF;IACF;IAEAtB,OAAOG,IAAI,CACT,SACAL,YAAYgB,KAAK,CAACW,WAAW,EAC7B3B,YAAYgB,KAAK,CAACY,UAAU,CAACC,KAAK,EAClC,OAAO,EAAEvB,UAAU,EAAEG,KAAK,EAAEF,KAAK,EAAEG,cAAc,EAAEF,QAAQ,EAAEG,gBAAgB,EAAE;QAC7E,OAAO,MAAMN,KAAKC,YAAYC,OAAOC,UAAUC,OAAOC,gBAAgBC;IACxE;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/auth/login.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const loginTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (\n collection: string,\n email: string,\n password: string,\n depth: number = 0,\n overrideAccess: boolean = false,\n showHiddenFields: boolean = false,\n ) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Attempting login for user: ${email} in collection: ${collection}`,\n )\n }\n\n try {\n const result = await payload.login({\n collection,\n data: {\n email,\n password,\n },\n depth,\n overrideAccess,\n showHiddenFields,\n })\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Login successful for user: ${email}`)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Login Successful\\n\\n**User:** ${email}\\n**Collection:** ${collection}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Login failed for user ${email}: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Login failed for user \"${email}\"**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'login',\n {\n description: toolSchemas.login.description,\n inputSchema: toolSchemas.login.parameters.shape,\n },\n async ({ collection, depth, email, overrideAccess, password, showHiddenFields }) => {\n return await tool(collection, email, password, depth, overrideAccess, showHiddenFields)\n },\n )\n}\n"],"names":["toolSchemas","loginTool","server","req","verboseLogs","tool","collection","email","password","depth","overrideAccess","showHiddenFields","payload","logger","info","result","login","data","content","type","text","JSON","stringify","error","errorMessage","Error","message","registerTool","description","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,YAAY,CAACC,QAAmBC,KAAqBC;IAChE,MAAMC,OAAO,OACXC,YACAC,OACAC,UACAC,QAAgB,CAAC,EACjBC,iBAA0B,KAAK,EAC/BC,mBAA4B,KAAK;QAEjC,MAAMC,UAAUT,IAAIS,OAAO;QAE3B,IAAIR,aAAa;YACfQ,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,yCAAyC,EAAEP,MAAM,gBAAgB,EAAED,YAAY;QAEpF;QAEA,IAAI;YACF,MAAMS,SAAS,MAAMH,QAAQI,KAAK,CAAC;gBACjCV;gBACAW,MAAM;oBACJV;oBACAC;gBACF;gBACAC;gBACAC;gBACAC;YACF;YAEA,IAAIP,aAAa;gBACfQ,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,yCAAyC,EAAEP,OAAO;YACzE;YAEA,OAAO;gBACLW,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,gCAAgC,EAAEb,MAAM,kBAAkB,EAAED,WAAW,gBAAgB,EAAEe,KAAKC,SAAS,CAACP,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBAC3I;iBACD;YACH;QACF,EAAE,OAAOQ,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Dd,QAAQC,MAAM,CAACU,KAAK,CAAC,CAAC,oCAAoC,EAAEhB,MAAM,EAAE,EAAEiB,cAAc;YAEpF,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,2BAA2B,EAAEb,MAAM,KAAK,EAAEiB,cAAc;oBACjE;iBACD;YACH;QACF;IACF;IAEAtB,OAAOyB,YAAY,CACjB,SACA;QACEC,aAAa5B,YAAYgB,KAAK,CAACY,WAAW;QAC1CC,aAAa7B,YAAYgB,KAAK,CAACc,UAAU,CAACC,KAAK;IACjD,GACA,OAAO,EAAEzB,UAAU,EAAEG,KAAK,EAAEF,KAAK,EAAEG,cAAc,EAAEF,QAAQ,EAAEG,gBAAgB,EAAE;QAC7E,OAAO,MAAMN,KAAKC,YAAYC,OAAOC,UAAUC,OAAOC,gBAAgBC;IACxE;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resetPassword.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/resetPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,iBAAiB,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAqD7F,CAAA"}
1
+ {"version":3,"file":"resetPassword.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/resetPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,iBAAiB,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAuD7F,CAAA"}
@@ -38,7 +38,10 @@ export const resetPasswordTool = (server, req, verboseLogs)=>{
38
38
  };
39
39
  }
40
40
  };
41
- server.tool('resetPassword', toolSchemas.resetPassword.description, toolSchemas.resetPassword.parameters.shape, async ({ collection, password, token })=>{
41
+ server.registerTool('resetPassword', {
42
+ description: toolSchemas.resetPassword.description,
43
+ inputSchema: toolSchemas.resetPassword.parameters.shape
44
+ }, async ({ collection, password, token })=>{
42
45
  return await tool(collection, token, password);
43
46
  });
44
47
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/resetPassword.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const resetPasswordTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (collection: string, token: string, password: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Resetting password for user in collection: ${collection}`)\n }\n\n try {\n const result = await payload.resetPassword({\n collection,\n data: {\n password,\n token,\n },\n overrideAccess: true,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Password reset completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Password Reset Successful\\n\\n**Collection:** ${collection}\\n**Token:** ${token}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error resetting password: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error resetting password**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'resetPassword',\n toolSchemas.resetPassword.description,\n toolSchemas.resetPassword.parameters.shape,\n async ({ collection, password, token }) => {\n return await tool(collection, token, password)\n },\n )\n}\n"],"names":["toolSchemas","resetPasswordTool","server","req","verboseLogs","tool","collection","token","password","payload","logger","info","result","resetPassword","data","overrideAccess","content","type","text","JSON","stringify","error","errorMessage","Error","message","description","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,oBAAoB,CAACC,QAAmBC,KAAqBC;IACxE,MAAMC,OAAO,OAAOC,YAAoBC,OAAeC;QACrD,MAAMC,UAAUN,IAAIM,OAAO;QAE3B,IAAIL,aAAa;YACfK,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,yDAAyD,EAAEL,YAAY;QAC9F;QAEA,IAAI;YACF,MAAMM,SAAS,MAAMH,QAAQI,aAAa,CAAC;gBACzCP;gBACAQ,MAAM;oBACJN;oBACAD;gBACF;gBACAQ,gBAAgB;YAClB;YAEA,IAAIX,aAAa;gBACfK,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLK,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,+CAA+C,EAAEZ,WAAW,aAAa,EAAEC,MAAM,gBAAgB,EAAEY,KAAKC,SAAS,CAACR,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBACrJ;iBACD;YACH;QACF,EAAE,OAAOS,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Df,QAAQC,MAAM,CAACW,KAAK,CAAC,CAAC,wCAAwC,EAAEC,cAAc;YAE9E,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,gCAAgC,EAAEI,cAAc;oBACzD;iBACD;YACH;QACF;IACF;IAEApB,OAAOG,IAAI,CACT,iBACAL,YAAYa,aAAa,CAACY,WAAW,EACrCzB,YAAYa,aAAa,CAACa,UAAU,CAACC,KAAK,EAC1C,OAAO,EAAErB,UAAU,EAAEE,QAAQ,EAAED,KAAK,EAAE;QACpC,OAAO,MAAMF,KAAKC,YAAYC,OAAOC;IACvC;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/auth/resetPassword.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const resetPasswordTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (collection: string, token: string, password: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Resetting password for user in collection: ${collection}`)\n }\n\n try {\n const result = await payload.resetPassword({\n collection,\n data: {\n password,\n token,\n },\n overrideAccess: true,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Password reset completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Password Reset Successful\\n\\n**Collection:** ${collection}\\n**Token:** ${token}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error resetting password: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error resetting password**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'resetPassword',\n {\n description: toolSchemas.resetPassword.description,\n inputSchema: toolSchemas.resetPassword.parameters.shape,\n },\n async ({ collection, password, token }) => {\n return await tool(collection, token, password)\n },\n )\n}\n"],"names":["toolSchemas","resetPasswordTool","server","req","verboseLogs","tool","collection","token","password","payload","logger","info","result","resetPassword","data","overrideAccess","content","type","text","JSON","stringify","error","errorMessage","Error","message","registerTool","description","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,oBAAoB,CAACC,QAAmBC,KAAqBC;IACxE,MAAMC,OAAO,OAAOC,YAAoBC,OAAeC;QACrD,MAAMC,UAAUN,IAAIM,OAAO;QAE3B,IAAIL,aAAa;YACfK,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,yDAAyD,EAAEL,YAAY;QAC9F;QAEA,IAAI;YACF,MAAMM,SAAS,MAAMH,QAAQI,aAAa,CAAC;gBACzCP;gBACAQ,MAAM;oBACJN;oBACAD;gBACF;gBACAQ,gBAAgB;YAClB;YAEA,IAAIX,aAAa;gBACfK,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLK,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,+CAA+C,EAAEZ,WAAW,aAAa,EAAEC,MAAM,gBAAgB,EAAEY,KAAKC,SAAS,CAACR,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBACrJ;iBACD;YACH;QACF,EAAE,OAAOS,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Df,QAAQC,MAAM,CAACW,KAAK,CAAC,CAAC,wCAAwC,EAAEC,cAAc;YAE9E,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,gCAAgC,EAAEI,cAAc;oBACzD;iBACD;YACH;QACF;IACF;IAEApB,OAAOuB,YAAY,CACjB,iBACA;QACEC,aAAa1B,YAAYa,aAAa,CAACa,WAAW;QAClDC,aAAa3B,YAAYa,aAAa,CAACe,UAAU,CAACC,KAAK;IACzD,GACA,OAAO,EAAEvB,UAAU,EAAEE,QAAQ,EAAED,KAAK,EAAE;QACpC,OAAO,MAAMF,KAAKC,YAAYC,OAAOC;IACvC;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/unlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,UAAU,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAwDtF,CAAA"}
1
+ {"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/unlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,UAAU,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SA0DtF,CAAA"}
@@ -37,7 +37,10 @@ export const unlockTool = (server, req, verboseLogs)=>{
37
37
  };
38
38
  }
39
39
  };
40
- server.tool('unlock', toolSchemas.unlock.description, toolSchemas.unlock.parameters.shape, async ({ collection, email })=>{
40
+ server.registerTool('unlock', {
41
+ description: toolSchemas.unlock.description,
42
+ inputSchema: toolSchemas.unlock.parameters.shape
43
+ }, async ({ collection, email })=>{
41
44
  return await tool(collection, email);
42
45
  });
43
46
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/unlock.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const unlockTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (collection: string, email: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Unlocking user account for user: ${email} in collection: ${collection}`,\n )\n }\n\n try {\n const result = await payload.unlock({\n collection,\n data: {\n email,\n },\n overrideAccess: true,\n })\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] User account unlocked successfully for user: ${email}`)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# User Account Unlocked\\n\\n**User:** ${email}\\n**Collection:** ${collection}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(\n `[payload-mcp] Error unlocking user account for user ${email}: ${errorMessage}`,\n )\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error unlocking user account for user \"${email}\"**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'unlock',\n toolSchemas.unlock.description,\n toolSchemas.unlock.parameters.shape,\n async ({ collection, email }) => {\n return await tool(collection, email)\n },\n )\n}\n"],"names":["toolSchemas","unlockTool","server","req","verboseLogs","tool","collection","email","payload","logger","info","result","unlock","data","overrideAccess","content","type","text","JSON","stringify","error","errorMessage","Error","message","description","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,aAAa,CAACC,QAAmBC,KAAqBC;IACjE,MAAMC,OAAO,OAAOC,YAAoBC;QACtC,MAAMC,UAAUL,IAAIK,OAAO;QAE3B,IAAIJ,aAAa;YACfI,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,+CAA+C,EAAEH,MAAM,gBAAgB,EAAED,YAAY;QAE1F;QAEA,IAAI;YACF,MAAMK,SAAS,MAAMH,QAAQI,MAAM,CAAC;gBAClCN;gBACAO,MAAM;oBACJN;gBACF;gBACAO,gBAAgB;YAClB;YAEA,IAAIV,aAAa;gBACfI,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,2DAA2D,EAAEH,OAAO;YAC3F;YAEA,OAAO;gBACLQ,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,qCAAqC,EAAEV,MAAM,kBAAkB,EAAED,WAAW,gBAAgB,EAAEY,KAAKC,SAAS,CAACR,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBAChJ;iBACD;YACH;QACF,EAAE,OAAOS,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Df,QAAQC,MAAM,CAACW,KAAK,CAClB,CAAC,oDAAoD,EAAEb,MAAM,EAAE,EAAEc,cAAc;YAGjF,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,2CAA2C,EAAEV,MAAM,KAAK,EAAEc,cAAc;oBACjF;iBACD;YACH;QACF;IACF;IAEAnB,OAAOG,IAAI,CACT,UACAL,YAAYY,MAAM,CAACY,WAAW,EAC9BxB,YAAYY,MAAM,CAACa,UAAU,CAACC,KAAK,EACnC,OAAO,EAAEpB,UAAU,EAAEC,KAAK,EAAE;QAC1B,OAAO,MAAMF,KAAKC,YAAYC;IAChC;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/auth/unlock.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const unlockTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (collection: string, email: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Unlocking user account for user: ${email} in collection: ${collection}`,\n )\n }\n\n try {\n const result = await payload.unlock({\n collection,\n data: {\n email,\n },\n overrideAccess: true,\n })\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] User account unlocked successfully for user: ${email}`)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# User Account Unlocked\\n\\n**User:** ${email}\\n**Collection:** ${collection}\\n\\n\\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(\n `[payload-mcp] Error unlocking user account for user ${email}: ${errorMessage}`,\n )\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error unlocking user account for user \"${email}\"**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'unlock',\n {\n description: toolSchemas.unlock.description,\n inputSchema: toolSchemas.unlock.parameters.shape,\n },\n async ({ collection, email }) => {\n return await tool(collection, email)\n },\n )\n}\n"],"names":["toolSchemas","unlockTool","server","req","verboseLogs","tool","collection","email","payload","logger","info","result","unlock","data","overrideAccess","content","type","text","JSON","stringify","error","errorMessage","Error","message","registerTool","description","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,aAAa,CAACC,QAAmBC,KAAqBC;IACjE,MAAMC,OAAO,OAAOC,YAAoBC;QACtC,MAAMC,UAAUL,IAAIK,OAAO;QAE3B,IAAIJ,aAAa;YACfI,QAAQC,MAAM,CAACC,IAAI,CACjB,CAAC,+CAA+C,EAAEH,MAAM,gBAAgB,EAAED,YAAY;QAE1F;QAEA,IAAI;YACF,MAAMK,SAAS,MAAMH,QAAQI,MAAM,CAAC;gBAClCN;gBACAO,MAAM;oBACJN;gBACF;gBACAO,gBAAgB;YAClB;YAEA,IAAIV,aAAa;gBACfI,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,2DAA2D,EAAEH,OAAO;YAC3F;YAEA,OAAO;gBACLQ,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,qCAAqC,EAAEV,MAAM,kBAAkB,EAAED,WAAW,gBAAgB,EAAEY,KAAKC,SAAS,CAACR,QAAQ,MAAM,GAAG,QAAQ,CAAC;oBAChJ;iBACD;YACH;QACF,EAAE,OAAOS,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9Df,QAAQC,MAAM,CAACW,KAAK,CAClB,CAAC,oDAAoD,EAAEb,MAAM,EAAE,EAAEc,cAAc;YAGjF,OAAO;gBACLN,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,2CAA2C,EAAEV,MAAM,KAAK,EAAEc,cAAc;oBACjF;iBACD;YACH;QACF;IACF;IAEAnB,OAAOsB,YAAY,CACjB,UACA;QACEC,aAAazB,YAAYY,MAAM,CAACa,WAAW;QAC3CC,aAAa1B,YAAYY,MAAM,CAACe,UAAU,CAACC,KAAK;IAClD,GACA,OAAO,EAAEtB,UAAU,EAAEC,KAAK,EAAE;QAC1B,OAAO,MAAMF,KAAKC,YAAYC;IAChC;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,UAAU,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAiDtF,CAAA"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,UAAU,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAmDtF,CAAA"}
@@ -34,7 +34,10 @@ export const verifyTool = (server, req, verboseLogs)=>{
34
34
  };
35
35
  }
36
36
  };
37
- server.tool('verify', toolSchemas.verify.description, toolSchemas.verify.parameters.shape, async ({ collection, token })=>{
37
+ server.registerTool('verify', {
38
+ description: toolSchemas.verify.description,
39
+ inputSchema: toolSchemas.verify.parameters.shape
40
+ }, async ({ collection, token })=>{
38
41
  return await tool(collection, token);
39
42
  });
40
43
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/verify.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const verifyTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (collection: string, token: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Verifying user account for collection: ${collection}`)\n }\n\n try {\n const result = await payload.verifyEmail({\n collection,\n token,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Email verification completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Email Verification Successful\\n\\n**Collection:** ${collection}\\n**Token:** ${token}\\n**Result:** ${result ? 'Success' : 'Failed'}`,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error verifying email: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error verifying email**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'verify',\n toolSchemas.verify.description,\n toolSchemas.verify.parameters.shape,\n async ({ collection, token }) => {\n return await tool(collection, token)\n },\n )\n}\n"],"names":["toolSchemas","verifyTool","server","req","verboseLogs","tool","collection","token","payload","logger","info","result","verifyEmail","content","type","text","error","errorMessage","Error","message","verify","description","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,aAAa,CAACC,QAAmBC,KAAqBC;IACjE,MAAMC,OAAO,OAAOC,YAAoBC;QACtC,MAAMC,UAAUL,IAAIK,OAAO;QAE3B,IAAIJ,aAAa;YACfI,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,qDAAqD,EAAEJ,YAAY;QAC1F;QAEA,IAAI;YACF,MAAMK,SAAS,MAAMH,QAAQI,WAAW,CAAC;gBACvCN;gBACAC;YACF;YAEA,IAAIH,aAAa;gBACfI,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLG,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,mDAAmD,EAAET,WAAW,aAAa,EAAEC,MAAM,cAAc,EAAEI,SAAS,YAAY,UAAU;oBAC7I;iBACD;YACH;QACF,EAAE,OAAOK,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9DX,QAAQC,MAAM,CAACO,KAAK,CAAC,CAAC,qCAAqC,EAAEC,cAAc;YAE3E,OAAO;gBACLJ,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,6BAA6B,EAAEE,cAAc;oBACtD;iBACD;YACH;QACF;IACF;IAEAf,OAAOG,IAAI,CACT,UACAL,YAAYoB,MAAM,CAACC,WAAW,EAC9BrB,YAAYoB,MAAM,CAACE,UAAU,CAACC,KAAK,EACnC,OAAO,EAAEjB,UAAU,EAAEC,KAAK,EAAE;QAC1B,OAAO,MAAMF,KAAKC,YAAYC;IAChC;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/auth/verify.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const verifyTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (collection: string, token: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Verifying user account for collection: ${collection}`)\n }\n\n try {\n const result = await payload.verifyEmail({\n collection,\n token,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Email verification completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Email Verification Successful\\n\\n**Collection:** ${collection}\\n**Token:** ${token}\\n**Result:** ${result ? 'Success' : 'Failed'}`,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error verifying email: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error verifying email**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'verify',\n {\n description: toolSchemas.verify.description,\n inputSchema: toolSchemas.verify.parameters.shape,\n },\n async ({ collection, token }) => {\n return await tool(collection, token)\n },\n )\n}\n"],"names":["toolSchemas","verifyTool","server","req","verboseLogs","tool","collection","token","payload","logger","info","result","verifyEmail","content","type","text","error","errorMessage","Error","message","registerTool","description","verify","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,aAAa,CAACC,QAAmBC,KAAqBC;IACjE,MAAMC,OAAO,OAAOC,YAAoBC;QACtC,MAAMC,UAAUL,IAAIK,OAAO;QAE3B,IAAIJ,aAAa;YACfI,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,qDAAqD,EAAEJ,YAAY;QAC1F;QAEA,IAAI;YACF,MAAMK,SAAS,MAAMH,QAAQI,WAAW,CAAC;gBACvCN;gBACAC;YACF;YAEA,IAAIH,aAAa;gBACfI,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLG,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,mDAAmD,EAAET,WAAW,aAAa,EAAEC,MAAM,cAAc,EAAEI,SAAS,YAAY,UAAU;oBAC7I;iBACD;YACH;QACF,EAAE,OAAOK,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9DX,QAAQC,MAAM,CAACO,KAAK,CAAC,CAAC,qCAAqC,EAAEC,cAAc;YAE3E,OAAO;gBACLJ,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,6BAA6B,EAAEE,cAAc;oBACtD;iBACD;YACH;QACF;IACF;IAEAf,OAAOkB,YAAY,CACjB,UACA;QACEC,aAAarB,YAAYsB,MAAM,CAACD,WAAW;QAC3CE,aAAavB,YAAYsB,MAAM,CAACE,UAAU,CAACC,KAAK;IAClD,GACA,OAAO,EAAEnB,UAAU,EAAEC,KAAK,EAAE;QAC1B,OAAO,MAAMF,KAAKC,YAAYC;IAChC;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/collection/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAQ7C,eAAO,MAAM,gBAAgB,QACtB,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,kBACN,MAAM,yBACC,MAAM,GAAG,SAAS,UACjC,GAAG,EAAE,aACF,OAAO,GAAG,SAAS;;;;;EAyJ/B,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,SAAS,OACZ,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,SA0DvB,CAAA"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/collection/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAQ7C,eAAO,MAAM,gBAAgB,QACtB,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,kBACN,MAAM,yBACC,MAAM,GAAG,SAAS,UACjC,GAAG,EAAE,aACF,OAAO,GAAG,SAAS;;;;;EAyJ/B,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,SAAS,OACZ,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,SA4DvB,CAAA"}
@@ -151,7 +151,10 @@ export const createCollectionTool = (server, req, verboseLogs, collectionsDirPat
151
151
  };
152
152
  }
153
153
  };
154
- server.tool('createCollection', toolSchemas.createCollection.description, toolSchemas.createCollection.parameters.shape, async ({ collectionDescription, collectionName, fields, hasUpload })=>{
154
+ server.registerTool('createCollection', {
155
+ description: toolSchemas.createCollection.description,
156
+ inputSchema: toolSchemas.createCollection.parameters.shape
157
+ }, async ({ collectionDescription, collectionName, fields, hasUpload })=>{
155
158
  return await tool(collectionName, collectionDescription, fields, hasUpload);
156
159
  });
157
160
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/collection/create.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport { validateCollectionFile } from '../../helpers/fileValidation.js'\nimport { toolSchemas } from '../schemas.js'\n\nexport const createCollection = async (\n req: PayloadRequest,\n verboseLogs: boolean,\n collectionsDirPath: string,\n configFilePath: string,\n collectionName: string,\n collectionDescription: string | undefined,\n fields: any[],\n hasUpload: boolean | undefined,\n) => {\n const payload = req.payload\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Creating collection: ${collectionName} with ${fields.length} fields`,\n )\n }\n\n const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1)\n const slug = collectionName\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n .replace(/^-/, '')\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Generated slug: ${slug} for collection: ${collectionName}`)\n }\n\n // Generate TypeScript field definitions more systematically\n const generateFieldDefinition = (field: any) => {\n const fieldConfig = []\n fieldConfig.push(` {`)\n fieldConfig.push(` name: '${field.name}',`)\n fieldConfig.push(` type: '${field.type}',`)\n\n if (field.required) {\n fieldConfig.push(` required: true,`)\n }\n\n if (field.description) {\n fieldConfig.push(` admin: {`)\n fieldConfig.push(` description: '${field.description}',`)\n fieldConfig.push(` },`)\n }\n\n if (field.options && field.type === 'select') {\n fieldConfig.push(` options: [`)\n field.options.forEach((option: { label: string; value: string }) => {\n fieldConfig.push(` { label: '${option.label}', value: '${option.value}' },`)\n })\n fieldConfig.push(` ],`)\n }\n\n fieldConfig.push(` },`)\n return fieldConfig.join('\\n')\n }\n\n const fieldDefinitions = fields.map(generateFieldDefinition).join('\\n')\n\n // Generate collection file content\n const collectionContent = `import type { CollectionConfig } from 'payload'\n\nexport const ${capitalizedName}: CollectionConfig = {\n slug: '${slug}',${\n collectionDescription\n ? `\n admin: {\n description: '${collectionDescription}',\n },`\n : ''\n }${\n hasUpload\n ? `\n upload: true,`\n : ''\n }\n fields: [\n${fieldDefinitions}\n ],\n}\n`\n\n try {\n // Validate the collection name and path\n const fileName = `${capitalizedName}.ts`\n const filePath = join(collectionsDirPath, fileName)\n\n // Security check: ensure we're working with the collections directory\n if (!filePath.startsWith(collectionsDirPath)) {\n payload.logger.error(`[payload-mcp] Invalid collection path attempted: ${filePath}`)\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: Invalid collection path',\n },\n ],\n }\n }\n\n // Check if file already exists\n try {\n const fs = await import('fs')\n if (fs.existsSync(filePath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error**: Collection file already exists: ${fileName}`,\n },\n ],\n }\n }\n } catch (_ignore) {\n // File doesn't exist, which is what we want\n }\n\n // Write the collection file\n writeFileSync(filePath, collectionContent, 'utf8')\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Successfully created collection file: ${filePath}`)\n }\n\n // Validate the generated file\n const validationResult = await validateCollectionFile(fileName)\n if (validationResult.error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error**: Generated collection has validation issues:\\n\\n${validationResult.error}`,\n },\n ],\n }\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `✅ **Collection created successfully!**\n**File**: \\`${fileName}\\`\n**Collection Config:**\n\\`\\`\\`typescript\n${collectionContent}\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = (error as Error).message\n payload.logger.error(`[payload-mcp] Error creating collection: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error creating collection**: ${errorMessage}`,\n },\n ],\n }\n }\n}\n\nexport const createCollectionTool = (\n server: McpServer,\n req: PayloadRequest,\n verboseLogs: boolean,\n collectionsDirPath: string,\n configFilePath: string,\n) => {\n const tool = async (\n collectionName: string,\n collectionDescription?: string,\n fields: any[] = [],\n hasUpload?: boolean,\n ) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Creating collection: ${collectionName}, fields: ${fields.length}, upload: ${hasUpload}`,\n )\n }\n\n try {\n const result = await createCollection(\n req,\n verboseLogs,\n collectionsDirPath,\n configFilePath,\n collectionName,\n collectionDescription,\n fields,\n hasUpload,\n )\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Collection creation completed for: ${collectionName}`)\n }\n\n return result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(\n `[payload-mcp] Error creating collection ${collectionName}: ${errorMessage}`,\n )\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error creating collection \"${collectionName}\": ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.tool(\n 'createCollection',\n toolSchemas.createCollection.description,\n toolSchemas.createCollection.parameters.shape,\n async ({ collectionDescription, collectionName, fields, hasUpload }) => {\n return await tool(collectionName, collectionDescription, fields, hasUpload)\n },\n )\n}\n"],"names":["writeFileSync","join","validateCollectionFile","toolSchemas","createCollection","req","verboseLogs","collectionsDirPath","configFilePath","collectionName","collectionDescription","fields","hasUpload","payload","logger","info","length","capitalizedName","charAt","toUpperCase","slice","slug","replace","toLowerCase","generateFieldDefinition","field","fieldConfig","push","name","type","required","description","options","forEach","option","label","value","fieldDefinitions","map","collectionContent","fileName","filePath","startsWith","error","content","text","fs","existsSync","_ignore","validationResult","errorMessage","message","createCollectionTool","server","tool","result","Error","parameters","shape"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/mcp/tools/collection/create.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport { validateCollectionFile } from '../../helpers/fileValidation.js'\nimport { toolSchemas } from '../schemas.js'\n\nexport const createCollection = async (\n req: PayloadRequest,\n verboseLogs: boolean,\n collectionsDirPath: string,\n configFilePath: string,\n collectionName: string,\n collectionDescription: string | undefined,\n fields: any[],\n hasUpload: boolean | undefined,\n) => {\n const payload = req.payload\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Creating collection: ${collectionName} with ${fields.length} fields`,\n )\n }\n\n const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1)\n const slug = collectionName\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n .replace(/^-/, '')\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Generated slug: ${slug} for collection: ${collectionName}`)\n }\n\n // Generate TypeScript field definitions more systematically\n const generateFieldDefinition = (field: any) => {\n const fieldConfig = []\n fieldConfig.push(` {`)\n fieldConfig.push(` name: '${field.name}',`)\n fieldConfig.push(` type: '${field.type}',`)\n\n if (field.required) {\n fieldConfig.push(` required: true,`)\n }\n\n if (field.description) {\n fieldConfig.push(` admin: {`)\n fieldConfig.push(` description: '${field.description}',`)\n fieldConfig.push(` },`)\n }\n\n if (field.options && field.type === 'select') {\n fieldConfig.push(` options: [`)\n field.options.forEach((option: { label: string; value: string }) => {\n fieldConfig.push(` { label: '${option.label}', value: '${option.value}' },`)\n })\n fieldConfig.push(` ],`)\n }\n\n fieldConfig.push(` },`)\n return fieldConfig.join('\\n')\n }\n\n const fieldDefinitions = fields.map(generateFieldDefinition).join('\\n')\n\n // Generate collection file content\n const collectionContent = `import type { CollectionConfig } from 'payload'\n\nexport const ${capitalizedName}: CollectionConfig = {\n slug: '${slug}',${\n collectionDescription\n ? `\n admin: {\n description: '${collectionDescription}',\n },`\n : ''\n }${\n hasUpload\n ? `\n upload: true,`\n : ''\n }\n fields: [\n${fieldDefinitions}\n ],\n}\n`\n\n try {\n // Validate the collection name and path\n const fileName = `${capitalizedName}.ts`\n const filePath = join(collectionsDirPath, fileName)\n\n // Security check: ensure we're working with the collections directory\n if (!filePath.startsWith(collectionsDirPath)) {\n payload.logger.error(`[payload-mcp] Invalid collection path attempted: ${filePath}`)\n return {\n content: [\n {\n type: 'text' as const,\n text: '❌ **Error**: Invalid collection path',\n },\n ],\n }\n }\n\n // Check if file already exists\n try {\n const fs = await import('fs')\n if (fs.existsSync(filePath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error**: Collection file already exists: ${fileName}`,\n },\n ],\n }\n }\n } catch (_ignore) {\n // File doesn't exist, which is what we want\n }\n\n // Write the collection file\n writeFileSync(filePath, collectionContent, 'utf8')\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Successfully created collection file: ${filePath}`)\n }\n\n // Validate the generated file\n const validationResult = await validateCollectionFile(fileName)\n if (validationResult.error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error**: Generated collection has validation issues:\\n\\n${validationResult.error}`,\n },\n ],\n }\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `✅ **Collection created successfully!**\n**File**: \\`${fileName}\\`\n**Collection Config:**\n\\`\\`\\`typescript\n${collectionContent}\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = (error as Error).message\n payload.logger.error(`[payload-mcp] Error creating collection: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error creating collection**: ${errorMessage}`,\n },\n ],\n }\n }\n}\n\nexport const createCollectionTool = (\n server: McpServer,\n req: PayloadRequest,\n verboseLogs: boolean,\n collectionsDirPath: string,\n configFilePath: string,\n) => {\n const tool = async (\n collectionName: string,\n collectionDescription?: string,\n fields: any[] = [],\n hasUpload?: boolean,\n ) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info(\n `[payload-mcp] Creating collection: ${collectionName}, fields: ${fields.length}, upload: ${hasUpload}`,\n )\n }\n\n try {\n const result = await createCollection(\n req,\n verboseLogs,\n collectionsDirPath,\n configFilePath,\n collectionName,\n collectionDescription,\n fields,\n hasUpload,\n )\n\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Collection creation completed for: ${collectionName}`)\n }\n\n return result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(\n `[payload-mcp] Error creating collection ${collectionName}: ${errorMessage}`,\n )\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error creating collection \"${collectionName}\": ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'createCollection',\n {\n description: toolSchemas.createCollection.description,\n inputSchema: toolSchemas.createCollection.parameters.shape,\n },\n async ({ collectionDescription, collectionName, fields, hasUpload }) => {\n return await tool(collectionName, collectionDescription, fields, hasUpload)\n },\n )\n}\n"],"names":["writeFileSync","join","validateCollectionFile","toolSchemas","createCollection","req","verboseLogs","collectionsDirPath","configFilePath","collectionName","collectionDescription","fields","hasUpload","payload","logger","info","length","capitalizedName","charAt","toUpperCase","slice","slug","replace","toLowerCase","generateFieldDefinition","field","fieldConfig","push","name","type","required","description","options","forEach","option","label","value","fieldDefinitions","map","collectionContent","fileName","filePath","startsWith","error","content","text","fs","existsSync","_ignore","validationResult","errorMessage","message","createCollectionTool","server","tool","result","Error","registerTool","inputSchema","parameters","shape"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/collection/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AA0B7C,eAAO,MAAM,gBAAgB,QACtB,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,kBACN,MAAM,mBACL,OAAO,gBACV,OAAO;;;;;CAiItB,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,SAAS,OACZ,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,SAwDvB,CAAA"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/collection/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AA0B7C,eAAO,MAAM,gBAAgB,QACtB,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,kBACN,MAAM,mBACL,OAAO,gBACV,OAAO;;;;;CAiItB,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,SAAS,OACZ,cAAc,eACN,OAAO,sBACA,MAAM,kBACV,MAAM,SA0DvB,CAAA"}
@@ -154,7 +154,10 @@ export const deleteCollectionTool = (server, req, verboseLogs, collectionsDirPat
154
154
  };
155
155
  }
156
156
  };
157
- server.tool('deleteCollection', toolSchemas.deleteCollection.description, toolSchemas.deleteCollection.parameters.shape, ({ collectionName, confirmDeletion, updateConfig })=>{
157
+ server.registerTool('deleteCollection', {
158
+ description: toolSchemas.deleteCollection.description,
159
+ inputSchema: toolSchemas.deleteCollection.parameters.shape
160
+ }, ({ collectionName, confirmDeletion, updateConfig })=>{
158
161
  return tool(collectionName, confirmDeletion, updateConfig);
159
162
  });
160
163
  };