UNPKG

@emmahyde/thinking-patterns

Version:

MCP server combining systematic thinking, mental models, debugging approaches, and stochastic algorithms for comprehensive cognitive pattern support

155 lines (154 loc) 7.42 kB
import { ToolRegistry } from './BaseToolServer.js'; import { SequentialThoughtSchema, MentalModelSchema, DebuggingApproachSchema, StochasticAlgorithmSchema, CollaborativeReasoningSchema, DecisionFrameworkSchema, MetacognitiveMonitoringSchema, ScientificMethodSchema, StructuredArgumentationSchema, VisualReasoningSchema, DomainModelingSchema, ProblemDecompositionSchema, CriticalThinkingSchema, RecursiveThinkingSchema, TemporalThinkingSchema } from '../schemas/index.js'; // Import all the thinking-patterns tool servers import { SequentialThinkingServer } from '../servers/SequentialThinkingServer.js'; import { MentalModelServer } from '../servers/MentalModelServer.js'; import { DebuggingApproachServer } from '../servers/DebuggingApproachServer.js'; import { StochasticAlgorithmServer } from '../servers/StochasticAlgorithmServer.js'; import { CollaborativeReasoningServer } from '../servers/CollaborativeReasoningServer.js'; import { DecisionFrameworkServer } from '../servers/DecisionFrameworkServer.js'; import { MetacognitiveMonitoringServer } from '../servers/MetacognitiveMonitoringServer.js'; import { ScientificMethodServer } from '../servers/ScientificMethodServer.js'; import { StructuredArgumentationServer } from '../servers/StructuredArgumentationServer.js'; import { VisualReasoningServer } from '../servers/VisualReasoningServer.js'; import { DomainModelingServer } from '../servers/DomainModelingServer.js'; import { ProblemDecompositionServer } from '../servers/ProblemDecompositionServer.js'; import { CriticalThinkingServer } from '../servers/CriticalThinkingServer.js'; import { RecursiveThinkingServer } from '../servers/RecursiveThinkingServer.js'; import { TemporalThinkingServer } from '../servers/TemporalThinkingServer.js'; /** * Initialize and register all available thinking-patterns tools */ export function initializeToolRegistry() { // Register Sequential Thinking tool ToolRegistry.register({ name: "sequential_thinking", schema: SequentialThoughtSchema, server: new SequentialThinkingServer(), description: "A detailed tool for dynamic and reflective problem-solving through thoughts. This tool helps analyze problems through a flexible thinking process that can adapt and evolve." }); // Register Mental Model tool ToolRegistry.register({ name: "mental_model", schema: MentalModelSchema, server: new MentalModelServer(), description: "Tool for creating and analyzing mental models to understand complex problems and systems." }); // Register Debugging Approach tool ToolRegistry.register({ name: "debugging_approach", schema: DebuggingApproachSchema, server: new DebuggingApproachServer(), description: "Systematic debugging methodologies for troubleshooting and problem resolution." }); // Register Stochastic Algorithm tool ToolRegistry.register({ name: "stochastic_algorithm", schema: StochasticAlgorithmSchema, server: new StochasticAlgorithmServer(), description: "Probabilistic algorithms for decision-making under uncertainty, including MDPs, MCTS, and Bayesian optimization." }); // Register Collaborative Reasoning tool ToolRegistry.register({ name: "collaborative_reasoning", schema: CollaborativeReasoningSchema, server: new CollaborativeReasoningServer(), description: "Multi-perspective collaborative problem solving with diverse personas and structured contributions." }); // Register Decision Framework tool ToolRegistry.register({ name: "decision_framework", schema: DecisionFrameworkSchema, server: new DecisionFrameworkServer(), description: "Structured decision analysis and rational choice frameworks for complex decisions." }); // Register Metacognitive Monitoring tool ToolRegistry.register({ name: "metacognitive_monitoring", schema: MetacognitiveMonitoringSchema, server: new MetacognitiveMonitoringServer(), description: "Self-assessment of knowledge and reasoning quality for improved metacognition." }); // Register Scientific Method tool ToolRegistry.register({ name: "scientific_method", schema: ScientificMethodSchema, server: new ScientificMethodServer(), description: "Formal hypothesis testing and experimentation following the scientific method." }); // Register Structured Argumentation tool ToolRegistry.register({ name: "structured_argumentation", schema: StructuredArgumentationSchema, server: new StructuredArgumentationServer(), description: "Dialectical reasoning and argument analysis for structured debates and logical reasoning." }); // Register Visual Reasoning tool ToolRegistry.register({ name: "visual_reasoning", schema: VisualReasoningSchema, server: new VisualReasoningServer(), description: "Diagram-based thinking and problem solving with visual elements and transformations." }); // Register Domain Modeling tool ToolRegistry.register({ name: "domain_modeling", schema: DomainModelingSchema, server: new DomainModelingServer(), description: "Creating and refining conceptual models of a domain, including entities, relationships, and rules." }); // Register Problem Decomposition tool ToolRegistry.register({ name: "problem_decomposition", schema: ProblemDecompositionSchema, server: new ProblemDecompositionServer(), description: "Breaking down complex problems into manageable sub-problems and tasks." }); // Register Critical Thinking tool ToolRegistry.register({ name: "critical_thinking", schema: CriticalThinkingSchema, server: new CriticalThinkingServer(), description: "Systematic evaluation of arguments, assumptions, and potential issues to improve reasoning quality." }); // Register Recursive Thinking tool ToolRegistry.register({ name: "recursive_thinking", schema: RecursiveThinkingSchema, server: new RecursiveThinkingServer(), description: "Applying recursive strategies to solve problems with base and recursive cases, including optimizations." }); // Register Temporal Thinking tool ToolRegistry.register({ name: "temporal_thinking", schema: TemporalThinkingSchema, server: new TemporalThinkingServer(), description: "Modeling systems and reasoning across time using states, events, and transitions." }); } /** * Get tool definitions for MCP ListTools response */ export function getToolDefinitions() { return ToolRegistry.getToolDefinitions(); } /** * Process tool request using registry */ export function processToolRequest(toolName, arguments_) { const tool = ToolRegistry.findTool(toolName); if (!tool) { return { content: [{ type: "text", text: JSON.stringify({ error: `Unknown tool: ${toolName}`, status: 'failed', timestamp: new Date().toISOString() }, null, 2) }], isError: true }; } return tool.server.run(arguments_); }