UNPKG

@cyanheads/pubmed-mcp-server

Version:

Production-ready PubMed Model Context Protocol (MCP) server that empowers AI agents and research tools with comprehensive access to PubMed's article database. Enables advanced, automated LLM workflows for searching, retrieving, analyzing, and visualizing

42 lines 2.02 kB
/** * @fileoverview Factory for creating an authentication strategy based on configuration. * This module centralizes the logic for selecting and instantiating the correct * authentication strategy, promoting loose coupling and easy extensibility. * @module src/mcp-server/transports/auth/authFactory */ import { config } from "../../../config/index.js"; import { logger, requestContextService } from "../../../utils/index.js"; import { JwtStrategy } from "./strategies/jwtStrategy.js"; import { OauthStrategy } from "./strategies/oauthStrategy.js"; /** * Creates and returns an authentication strategy instance based on the * application's configuration (`config.mcpAuthMode`). * * @returns An instance of a class that implements the `AuthStrategy` interface, * or `null` if authentication is disabled (`none`). * @throws {Error} If the auth mode is unknown or misconfigured. */ export function createAuthStrategy() { const context = requestContextService.createRequestContext({ operation: "createAuthStrategy", authMode: config.mcpAuthMode, }); logger.info("Creating authentication strategy...", context); switch (config.mcpAuthMode) { case "jwt": logger.debug("Instantiating JWT authentication strategy.", context); return new JwtStrategy(); case "oauth": logger.debug("Instantiating OAuth authentication strategy.", context); return new OauthStrategy(); case "none": logger.info("Authentication is disabled ('none' mode).", context); return null; // No authentication default: // This ensures that if a new auth mode is added to the config type // but not to this factory, we get a compile-time or runtime error. logger.error(`Unknown authentication mode: ${config.mcpAuthMode}`, context); throw new Error(`Unknown authentication mode: ${config.mcpAuthMode}`); } } //# sourceMappingURL=authFactory.js.map