Skip to main content
Glama
set-catalog.it.test.ts2.52 kB
import { wrapInEnvelope } from "@mcpx/webapp-protocol/messages"; import { backendDefaultServers } from "../src/server/constants-servers.js"; import { getTestHarness } from "./utils.js"; import { CatalogMCPServerItem, CatalogMCPServerList } from "@mcpx/shared-model"; const MCPX_BASE_URL = "http://localhost:9000"; async function getCatalogServers() { return await fetch(`${MCPX_BASE_URL}/catalog/mcp-servers`, { method: "GET", headers: { "Content-Type": "application/json" }, }); } function checkReturnedCatalog( returnedCatalog: CatalogMCPServerItem[], expectedCatalog: CatalogMCPServerItem[], ) { expect(returnedCatalog).toHaveLength(expectedCatalog.length); if (returnedCatalog.length > 0) { expect(returnedCatalog.map((s) => s.name).sort()).toEqual( expectedCatalog.map((s) => s.name).sort(), ); } } describe("set-catalog integration test", () => { const harness = getTestHarness(); beforeAll(async () => { await harness.initialize("StreamableHTTP"); }); afterAll(async () => { await harness.shutdown(); }); it("no hub connection - expect to get the default servers", async () => { const response = await getCatalogServers(); expect(response.status).toBe(200); const catalogRes = await response.json(); checkReturnedCatalog(catalogRes, backendDefaultServers); }); it("hub connection exists, expect to get our test servers", async () => { const mockHubServerList: CatalogMCPServerList = [ { name: "test-server", displayName: "Testing", description: "If you're seeing this server in the catalog it means the test has passed", config: { "test-server": { type: "streamable-http", url: "https://test-url/mcp-server/mcp", }, }, }, ]; const payload = { servers: mockHubServerList, }; const envelope = wrapInEnvelope(payload); const connectedClients = harness.mockHubServer.getConnectedClients(); expect(connectedClients.length).toBeGreaterThan(0); const socketId = connectedClients[0]; // simply test the first client if (socketId) { harness.mockHubServer.emitToClient(socketId, "set-catalog", envelope); await new Promise((resolve) => setTimeout(resolve, 200)); const response = await getCatalogServers(); expect(response.status).toBe(200); const serversRes = await response.json(); checkReturnedCatalog(serversRes, mockHubServerList); } }); });

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