Skip to main content
Glama
ThinkFar

Clear Thought Server

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

TableJSON Schema
NameRequiredDescriptionDefault
benefitsNo
codeExampleNo
contextYes
implementationNo
languagesNo
patternNameYes
tradeoffsNo

Implementation Reference

  • 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 }; } }
  • 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 }; }

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/ThinkFar/clear-thought-mcp'

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