Skip to main content
Glama
apolosan

Design Patterns MCP Server

by apolosan
mcp-tools-contract.test.ts3.68 kB
/** * Contract Tests for MCP Tools * Tests MCP protocol compliance for all tool implementations */ import { describe, test, expect } from 'vitest'; // Mock implementations for testing class MockPatternMatcher { async findSimilarPatterns(request: any): Promise<any[]> { return [ { pattern: { id: 'singleton', name: 'Singleton', category: 'Creational', description: 'Ensure a class has only one instance', complexity: 'Low', tags: ['creational', 'single-instance'], }, score: 0.9, rank: 1, justification: 'Singleton pattern matches the requirement for single instance', implementation: { language: 'typescript', code: 'class Singleton { private static instance: Singleton; ... }', explanation: 'This implementation ensures only one instance exists', }, }, ]; } async analyzeCode(code: string, language: string): Promise<any> { return { identifiedPatterns: ['Singleton'], suggestedPatterns: ['Factory Method'], improvements: ['Consider using dependency injection'], }; } } class MockSemanticSearch { async search(query: string, options?: any): Promise<any[]> { return [ { id: 'singleton', name: 'Singleton', category: 'Creational', description: 'Ensure a class has only one instance', score: 0.85, }, ]; } } describe('MCP Tools Contract Tests', () => { let mockMatcher: MockPatternMatcher; let mockSearch: MockSemanticSearch; test('should initialize mock services', () => { mockMatcher = new MockPatternMatcher(); mockSearch = new MockSemanticSearch(); expect(mockMatcher).toBeDefined(); expect(mockSearch).toBeDefined(); }); test('should return pattern recommendations', async () => { const recommendations = await mockMatcher.findSimilarPatterns({ query: 'single instance class', language: 'typescript', }); expect(Array.isArray(recommendations)).toBe(true); expect(recommendations.length).toBeGreaterThan(0); expect(recommendations[0]).toHaveProperty('pattern'); expect(recommendations[0]).toHaveProperty('score'); expect(recommendations[0]).toHaveProperty('rank'); }); test('should analyze code for patterns', async () => { const analysis = await mockMatcher.analyzeCode( 'class Logger { private static instance: Logger; }', 'typescript' ); expect(analysis).toHaveProperty('identifiedPatterns'); expect(analysis).toHaveProperty('suggestedPatterns'); expect(analysis).toHaveProperty('improvements'); expect(Array.isArray(analysis.identifiedPatterns)).toBe(true); }); test('should perform semantic search', async () => { const results = await mockSearch.search('singleton pattern'); expect(Array.isArray(results)).toBe(true); expect(results.length).toBeGreaterThan(0); expect(results[0]).toHaveProperty('id'); expect(results[0]).toHaveProperty('name'); expect(results[0]).toHaveProperty('score'); }); // TODO: Add more comprehensive tests when actual MCP implementation is ready test('should validate tool request structure', () => { const validRequest = { method: 'tools/call', params: { name: 'suggest_pattern', arguments: { query: 'factory pattern', programming_language: 'typescript', }, }, }; expect(validRequest.method).toBe('tools/call'); expect(validRequest.params.name).toBe('suggest_pattern'); expect(validRequest.params.arguments).toHaveProperty('query'); }); });

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/apolosan/design_patterns_mcp'

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