Shannon Thinking Methodology
HTTP-SSESTDIOMCP server demonstrating Claude Shannon's systematic problem-solving methodology.
MCP server demonstrating Claude Shannon's systematic problem-solving methodology.
An MCP server demonstrating Claude Shannon's systematic problem-solving methodology. This server provides a tool that helps break down complex problems into structured thoughts following Shannon's approach of problem definition, mathematical modeling, and practical implementation.
Claude Shannon, known as the father of information theory, approached complex problems through a systematic methodology:
This MCP server demonstrates this methodology as a tool that helps guide systematic problem-solving through these stages.
{ "mcpServers": { "shannon-thinking": { "command": "npx", "args": [ "-y", "server-shannon-thinking@latest" ] } } }
The server provides a single tool named shannonthinking
that structures problem-solving thoughts according to Shannon's methodology.
Each thought must include:
Additional capabilities:
const thought = { thought: "The core problem can be defined as an information flow optimization", thoughtType: "problem_definition", thoughtNumber: 1, totalThoughts: 5, uncertainty: 0.2, dependencies: [], assumptions: ["System has finite capacity", "Information flow is continuous"], nextThoughtNeeded: true, // Optional: Mark as revision of earlier definition isRevision: false, // Optional: Indicate step needs recheck recheckStep: { stepToRecheck: "constraints", reason: "New capacity limitations discovered", newInformation: "System shows non-linear scaling" } }; // Use with MCP client const result = await client.callTool("shannonthinking", thought);
# Install dependencies npm install # Build npm run build # Run tests npm test # Watch mode during development npm run watch
The tool accepts thoughts with the following structure:
interface ShannonThought { thought: string; thoughtType: "problem_definition" | "constraints" | "model" | "proof" | "implementation"; thoughtNumber: number; totalThoughts: number; uncertainty: number; // 0-1 dependencies: number[]; assumptions: string[]; nextThoughtNeeded: boolean; // Optional revision fields isRevision?: boolean; revisesThought?: number; // Optional recheck field recheckStep?: { stepToRecheck: ThoughtType; reason: string; newInformation?: string; }; // Optional validation fields proofElements?: { hypothesis: string; validation: string; }; experimentalElements?: { testDescription: string; results: string; confidence: number; // 0-1 limitations: string[]; }; // Optional implementation fields implementationNotes?: { practicalConstraints: string[]; proposedSolution: string; }; }
This thinking pattern is particularly valuable for: