import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { McpPromptRegistry } from '../prompt-registry.mjs'; import { McpResourceRegistry } from '../resource-registry.mjs'; import { McpToolRegistry } from '../tool-registry.mjs'; import { syncMcpSessionCapabilities } from './syncMcpSessionCapabilities.mjs'; // eslint-disable-next-line import/extensions const createMcpServerWithRegistries = ({ strapi, definitions, isDevMode, ability, user })=>{ const capabilities = { logging: {} }; // Advertise capability categories when definitions exist (server-level), not per-user enabled // count. Clients discover the real set via tools/list, prompts/list, resources/list after sync. if (definitions.tools.size > 0) { capabilities.tools = {}; } if (definitions.prompts.size > 0) { capabilities.prompts = {}; } if (definitions.resources.size > 0) { capabilities.resources = {}; } const mcpServer = new McpServer({ name: 'strapi-mcp-server', version: '1.0.0' }, { capabilities }); // Bootstrap registries with current definitions const tools = new McpToolRegistry({ strapi, definitions: definitions.tools, ability, user }); const prompts = new McpPromptRegistry({ strapi, definitions: definitions.prompts }); const resources = new McpResourceRegistry({ strapi, definitions: definitions.resources }); // Register capabilities (disabled by default) tools.bind(mcpServer); prompts.bind(mcpServer); resources.bind(mcpServer); syncMcpSessionCapabilities({ registries: { tools, prompts, resources }, definitions, ability, isDevMode }); return { mcpServer, registries: { tools, prompts, resources } }; }; export { createMcpServerWithRegistries }; //# sourceMappingURL=McpServerFactory.mjs.map