Skip to main content
Glama
server.test.ts2.4 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { createServer } from "../../src/server.js"; // Mock the S3Resource vi.mock("../../src/resources/s3.js", () => ({ S3Resource: vi.fn().mockImplementation(() => ({ // Mock S3Resource methods if needed })), })); // Mock the tools vi.mock("../../src/tools/index.js", () => ({ createTools: vi.fn().mockReturnValue([ { name: "list-buckets", description: "List S3 buckets", parameters: {}, execute: vi.fn(), }, { name: "list-objects", description: "List objects in S3 bucket", parameters: {}, execute: vi.fn(), }, { name: "get-object", description: "Get object from S3 bucket", parameters: {}, execute: vi.fn(), }, ]), })); describe("Server Factory", () => { beforeEach(() => { vi.clearAllMocks(); }); it("should create a McpServer instance", () => { const server = createServer(); expect(server).toBeInstanceOf(McpServer); }); it("should have correct server name and version", () => { const server = createServer(); // Test that server was created (we can't easily access private properties) expect(server).toBeDefined(); expect(typeof server.tool).toBe("function"); expect(typeof server.connect).toBe("function"); }); it("should create new S3Resource instance", async () => { const { S3Resource } = await import("../../src/resources/s3.js"); createServer(); expect(S3Resource).toHaveBeenCalledOnce(); }); it("should create tools with S3Resource instance", async () => { const { createTools } = await import("../../src/tools/index.js"); createServer(); expect(createTools).toHaveBeenCalledOnce(); expect(createTools).toHaveBeenCalledWith(expect.any(Object)); }); it("should register tools correctly", async () => { const { createTools } = await import("../../src/tools/index.js"); const _server = createServer(); // Verify createTools was called and returned tools expect(createTools).toHaveBeenCalledOnce(); const tools = createTools.mock.results[0].value; expect(tools).toHaveLength(3); expect(tools[0].name).toBe("list-buckets"); expect(tools[1].name).toBe("list-objects"); expect(tools[2].name).toBe("get-object"); }); });

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/samuraikun/aws-s3-mcp'

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