UNPKG

clinicaltrialsgov-mcp-server

Version:

ClinicalTrials.gov Model Context Protocol (MCP) Server that provides a suite of tools for interacting with the official ClinicalTrials.gov v2 API. Enables AI agents and LLMs to programmatically search, retrieve, and analyze clinical trial data.

42 lines (41 loc) 1.98 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}`); } }