Skip to main content
Glama
index.test.ts3.7 kB
import { describe, expect, it, vi } from 'vitest'; import packageJson from '../../package.json'; import { createServer } from '../../src/server'; vi.mock('@agiflowai/aicode-utils', async () => { const actual = await vi.importActual('@agiflowai/aicode-utils'); return { ...actual, TemplatesManagerService: { ...(actual as any).TemplatesManagerService, findTemplatesPathSync: vi.fn().mockReturnValue('/test/templates'), }, }; }); describe('Server', () => { describe('createServer', () => { it('should create server with default options', () => { const server = createServer(); expect(server).toBeDefined(); expect(server.name).toBe('scaffold-mcp'); expect(server.version).toBe(packageJson.version); }); it('should create server with admin enabled', () => { const server = createServer({ adminEnabled: true }); expect(server).toBeDefined(); }); it('should register tool handlers', () => { const server = createServer(); expect(server.requestHandlers.size).toBeGreaterThan(0); }); it('should register prompt handlers when admin enabled', () => { const server = createServer({ adminEnabled: true }); // Check if prompt handlers are registered const _hasPromptHandlers = Array.from(server.requestHandlers.keys()).some( (key) => key.name === 'ListPromptsRequestSchema' || key.name === 'GetPromptRequestSchema', ); // Note: This may not work with the current mock setup, but demonstrates intent expect(server.requestHandlers.size).toBeGreaterThan(0); }); it('should not register admin tools when adminEnabled is false', async () => { const server = createServer({ adminEnabled: false }); const listToolsHandler = server.requestHandlers.get({}); if (listToolsHandler) { const result = await listToolsHandler({}); const toolNames = result.tools.map((t: any) => t.name); expect(toolNames).not.toContain('generate-boilerplate'); expect(toolNames).not.toContain('generate-feature-scaffold'); } }); }); describe('Tool Registration', () => { it('should register core tools', async () => { const server = createServer(); const listToolsHandler = server.requestHandlers.get({}); if (listToolsHandler) { const result = await listToolsHandler({}); const toolNames = result.tools.map((t: any) => t.name); expect(toolNames).toContain('list-boilerplates'); expect(toolNames).toContain('use-boilerplate'); expect(toolNames).toContain('list-scaffolding-methods'); expect(toolNames).toContain('use-scaffold-method'); expect(toolNames).toContain('write-to-file'); } }); it('should register admin tools when enabled', async () => { const server = createServer({ adminEnabled: true }); const listToolsHandler = server.requestHandlers.get({}); if (listToolsHandler) { const result = await listToolsHandler({}); const toolNames = result.tools.map((t: any) => t.name); expect(toolNames).toContain('generate-boilerplate'); expect(toolNames).toContain('generate-boilerplate-file'); expect(toolNames).toContain('generate-feature-scaffold'); } }); }); describe('Instructions', () => { it('should include base instructions', () => { const server = createServer(); expect(server.requestHandlers).toBeDefined(); }); it('should include admin instructions when enabled', () => { const server = createServer({ adminEnabled: true }); expect(server.requestHandlers).toBeDefined(); }); }); });

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/AgiFlow/aicode-toolkit'

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