Skip to main content
Glama

Backlog MCP Server

wrapServerWithToolRegistry.test.ts2.6 kB
import { describe, expect, it, jest, beforeEach } from '@jest/globals'; import { z } from 'zod'; import { wrapServerWithToolRegistry } from './wrapServerWithToolRegistry'; describe('wrapServerWithToolRegistry', () => { let mockServer: any; let toolCalls: Array<{ name: string; description: string }> = []; beforeEach(() => { toolCalls = []; mockServer = { tool: jest.fn((name: string, description: string) => { toolCalls.push({ name, description }); }), }; }); it('registers a tool when not already registered', () => { const server = wrapServerWithToolRegistry(mockServer); const schema = z.object({}).shape; server.registerOnce('hello', 'test tool', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); expect(toolCalls).toHaveLength(1); expect(toolCalls[0].name).toBe('hello'); }); it('skips duplicate registration', () => { const server = wrapServerWithToolRegistry(mockServer); const schema = z.object({}).shape; server.registerOnce('dup', 'first', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); server.registerOnce('dup', 'second', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); expect(toolCalls).toHaveLength(1); expect(toolCalls[0].name).toBe('dup'); expect(toolCalls[0].description).toBe('first'); }); it('does not throw if registerOnce is called twice with same name', () => { const server = wrapServerWithToolRegistry(mockServer); const schema = z.object({}).shape; expect(() => { server.registerOnce('toolX', 'desc1', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); server.registerOnce('toolX', 'desc2', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); }).not.toThrow(); expect(toolCalls).toHaveLength(1); }); it('adds __registeredToolNames to server', () => { const server = wrapServerWithToolRegistry(mockServer); expect(server.__registeredToolNames).toBeInstanceOf(Set); }); it('registers multiple distinct tools', () => { const server = wrapServerWithToolRegistry(mockServer); const schema = z.object({}).shape; server.registerOnce('tool1', 'desc1', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); server.registerOnce('tool2', 'desc2', schema, () => ({ content: [{ type: 'text', text: 'ok' }], })); expect(toolCalls).toHaveLength(2); expect(toolCalls[0].name).toBe('tool1'); expect(toolCalls[1].name).toBe('tool2'); }); });

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/nulab/backlog-mcp-server'

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