designpattern
Streamline software design by applying structured patterns for modular architecture, API integration, state management, and more. Solve common challenges with clear implementation guidance, code examples, and best practices.
Instructions
A tool for applying design patterns to software architecture and implementation. Supports various design patterns including:
Modular Architecture
API Integration Patterns
State Management
Asynchronous Processing
Scalability Considerations
Security Best Practices
Agentic Design Patterns
Each pattern provides a structured approach to solving common design challenges.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| benefits | No | ||
| codeExample | No | ||
| context | Yes | ||
| implementation | No | ||
| languages | No | ||
| patternName | Yes | ||
| tradeoffs | No |
Implementation Reference
- src/tools/designPatternServer.ts:64-93 (handler)The processPattern method is the main handler that executes the 'designpattern' tool logic: validates input, formats console output with chalk, and returns structured JSON response.public processPattern(input: unknown): { content: Array<{ type: string; text: string }>; isError?: boolean } { try { const validatedInput = this.validatePatternData(input); const formattedOutput = this.formatPatternOutput(validatedInput); console.error(formattedOutput); return { content: [{ type: "text", text: JSON.stringify({ patternName: validatedInput.patternName, status: 'success', hasImplementation: validatedInput.implementation.length > 0, hasCodeExample: !!validatedInput.codeExample }, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ error: error instanceof Error ? error.message : String(error), status: 'failed' }, null, 2) }], isError: true }; } }
- src/models/interfaces.ts:26-34 (schema)TypeScript interface DesignPatternData defines the structure used for input validation in the designpattern tool handler.export interface DesignPatternData { patternName: string; context: string; implementation: string[]; benefits: string[]; tradeoffs: string[]; codeExample?: string; languages?: string[]; }
- src/index.ts:66-115 (registration)Defines the DESIGN_PATTERN_TOOL Tool object including name 'designpattern', description, and detailed inputSchema for MCP tool registration.const DESIGN_PATTERN_TOOL: Tool = { name: "designpattern", description: `A tool for applying design patterns to software architecture and implementation. Supports various design patterns including: - Modular Architecture - API Integration Patterns - State Management - Asynchronous Processing - Scalability Considerations - Security Best Practices - Agentic Design Patterns Each pattern provides a structured approach to solving common design challenges.`, inputSchema: { type: "object", properties: { patternName: { type: "string", enum: [ "modular_architecture", "api_integration", "state_management", "async_processing", "scalability", "security", "agentic_design", ], }, context: { type: "string" }, implementation: { type: "array", items: { type: "string" }, }, benefits: { type: "array", items: { type: "string" }, }, tradeoffs: { type: "array", items: { type: "string" }, }, codeExample: { type: "string" }, languages: { type: "array", items: { type: "string" }, }, }, required: ["patternName", "context"], }, };
- src/index.ts:1057-1069 (registration)Switch case in CallToolRequestSchema handler that dispatches 'designpattern' tool calls to designPatternServer.processPattern.case "designpattern": { const result = designPatternServer.processPattern( request.params.arguments ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; }
- Helper method validatePatternData performs input validation and normalization for the designpattern tool.private validatePatternData(input: unknown): DesignPatternData { const data = input as Record<string, unknown>; if (!data.patternName || typeof data.patternName !== 'string') { throw new Error('Invalid patternName: must be a string'); } if (!data.context || typeof data.context !== 'string') { throw new Error('Invalid context: must be a string'); } return { patternName: data.patternName as string, context: data.context as string, implementation: Array.isArray(data.implementation) ? data.implementation.map(String) : [], benefits: Array.isArray(data.benefits) ? data.benefits.map(String) : [], tradeoffs: Array.isArray(data.tradeoffs) ? data.tradeoffs.map(String) : [], codeExample: typeof data.codeExample === 'string' ? data.codeExample as string : undefined, languages: Array.isArray(data.languages) ? data.languages.map(String) : undefined }; }