@cyanheads/git-mcp-server
Version:
An MCP (Model Context Protocol) server enabling LLMs and AI agents to interact with Git repositories. Provides tools for comprehensive Git operations including clone, commit, branch, diff, log, status, push, pull, merge, rebase, worktree, tag management,
42 lines • 2.02 kB
JavaScript
/**
* @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