Skip to main content
Glama
index.ts3.01 kB
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { Command } from "commander"; import { Logger } from "../shared/utils/logger.util.js"; import { domainRegistry } from "./registry.js"; // Lazy logger initialization to avoid module-level side effects let logger: ReturnType<typeof Logger.forContext> | null = null; function getLogger() { if (!logger) { logger = Logger.forContext("domains/index.ts"); } return logger; } /** * Register all domain MCP tools with the server * This is the main entry point for tool registration */ export async function registerAllTools(server: McpServer): Promise<void> { const methodLogger = getLogger().forMethod("registerAllTools"); methodLogger.info("Starting domain tools registration"); try { await domainRegistry.registerAllTools(server); methodLogger.info("Domain tools registration completed successfully"); } catch (error) { methodLogger.error("Failed to register domain tools", { error }); throw error; } } /** * Register all domain CLI commands with the Commander program * This is the main entry point for CLI registration */ export async function registerAllCli(program: Command): Promise<void> { const methodLogger = getLogger().forMethod("registerAllCli"); methodLogger.info("Starting domain CLI registration"); try { await domainRegistry.registerAllCli(program); methodLogger.info("Domain CLI registration completed successfully"); } catch (error) { methodLogger.error("Failed to register domain CLI", { error }); throw error; } } /** * Register all domain MCP resources with the server * This is the main entry point for resource registration */ export async function registerAllResources(server: McpServer): Promise<void> { const methodLogger = getLogger().forMethod("registerAllResources"); methodLogger.info("Starting domain resources registration"); try { await domainRegistry.registerAllResources(server); methodLogger.info("Domain resources registration completed successfully"); } catch (error) { methodLogger.error("Failed to register domain resources", { error }); throw error; } } /** * Get domain registry status and health information * Useful for debugging and monitoring */ export function getDomainRegistryStatus() { return domainRegistry.getRegistryStatus(); } /** * Discover all available domains * Can be used for diagnostics or dynamic domain listing */ export async function discoverDomains() { return domainRegistry.discoverDomains(); } /** * Load a specific domain module * Useful for testing or selective domain loading */ export async function loadDomain(name: string) { return domainRegistry.loadDomain(name); } // Re-export types for consumers export type { DomainCli, DomainDiscoveryResult, DomainMeta, DomainModule, DomainRegistryEntry, DomainResource, DomainTool, } from "../shared/types/domain.types.js"; // Re-export the registry instance for advanced usage export { domainRegistry } from "./registry.js";

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AbdallahAHO/lokalise-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server