Skip to main content
Glama
catalog-manager.ts1.17 kB
import { CatalogMCPServerList } from "@mcpx/shared-model"; import { Logger } from "winston"; import { backendDefaultServers } from "../server/constants-servers.js"; import z from "zod/v4"; import { McpxBoundPayloads } from "@mcpx/webapp-protocol/messages"; type SetCatalogPayload = z.infer<typeof McpxBoundPayloads.setCatalog>; export interface CatalogManagerI { setCatalog(payload: SetCatalogPayload): void; getCatalog(): CatalogMCPServerList; } export class CatalogManager implements CatalogManagerI { private catalog: CatalogMCPServerList; private logger: Logger; constructor(logger: Logger) { this.logger = logger.child({ component: "CatalogManager" }); // initialize the catalog from the default servers this.catalog = backendDefaultServers; } getCatalog(): CatalogMCPServerList { return structuredClone(this.catalog); } setCatalog(payload: SetCatalogPayload): void { // parse and error handel done in the hub this.logger.info("Loading servers catalog from Hub", { serverCount: payload.servers.length, serverNames: payload.servers.map((s) => s.name), }); this.catalog = payload.servers; } }

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/TheLunarCompany/lunar'

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