シャノン思考
クロード・シャノンの体系的な問題解決手法を示すMCPサーバー。このサーバーは、シャノンの問題定義、数学的モデリング、そして実践的な実装というアプローチに従って、複雑な問題を構造化された思考へと分解するのに役立つツールを提供します。
概要
情報理論の父として知られるクロード・シャノンは、体系的な方法論を通じて複雑な問題に取り組みました。
- 問題の定義: 問題を基本的な要素に分解する
- 制約: システムの制限と境界を特定する
- モデル:数学的/理論的枠組みを開発する
- 証明/検証: 正式な証明や実験テストを通じて検証する
- 実装/実験:実用的なソリューションを設計しテストする
この MCP サーバーは、これらの段階を通じて体系的な問題解決を導くツールとしてこの方法論を実証します。
インストール
NPX
{
"mcpServers": {
"shannon-thinking": {
"command": "npx",
"args": [
"-y",
"server-shannon-thinking@latest"
]
}
}
}
使用法
サーバーは、シャノンの方法論に従って問題解決の思考を構造化するshannonthinking
という単一のツールを提供します。
それぞれの考えには次の内容が含まれている必要があります。
- 実際の思考内容
- タイプ(問題定義/制約/モデル/証明/実装)
- 思考回数と総思考数の推定
- 信頼度(不確実性:0-1)
- 過去の考えへの依存
- 明示的な仮定
- さらなる思考ステップが必要かどうか
追加機能:
- 修正:理解が深まるにつれて、思考は以前のステップを修正することができます
- 再確認: 再検討が必要な手順を新しい情報でマークします
- 実験的検証:形式的証明と並行した経験的テストのサポート
- 実装ノート:実際的な制約と提案された解決策
使用例
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
ツールスキーマ
このツールは、次の構造の考えを受け入れます。
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;
};
}
いつ使うか
この思考パターンは、特に次のような場合に価値があります。
- 複雑系分析
- 情報処理の問題
- エンジニアリング設計の課題
- 理論的枠組みを必要とする問題
- 最適化問題
- 実用的な実装を必要とするシステム
- 反復的な改善が必要な問題
- 実験検証が理論を補完するケース