mcpField
T
Tianji Thinking Models

Tianji Thinking Models

ローカル
github.com/lanyijiankeAI・エージェント3173 週間前に更新

Tianji Thinking Models について

Tianji は思考モデルの MCP サーバーで、複数分野のモデル、フレームワーク、方法論を収録し、問題をより体系的に分析することを支援します。AI アシスタントは MCP 経由で探索、問題解決、作成、学習に関するツールを呼び出せます。

主な機能

  1. 01多分野の代表的な思考モデルを収録
  2. 02問題のキーワードに基づくモデルの推薦
  3. 03対話形式の推論プロセスの案内
  4. 04利用者フィードバックによる学習と調整
  5. 05新しいモデルの作成と既存モデルの組み合わせ

活用シーン

  1. 01複雑な意思決定に適した思考フレームワークの提案
  2. 02問題に対する複数の仮説の生成と検証
  3. 03既存の思考モデルを組み合わせた新しい分析手法の作成

MCP 対応

本プロジェクトは MCP サーバーとして動作し、モデルの検索や推薦、推論の案内、モデル作成のためのツールを AI アシスタントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"thinking_models_mcp": {
"command": "npx",
"args": [
"-y",
"@thinking-models/mcp-server"
]
}
}
}
起動コマンドnpx -y @thinking-models/mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@thinking-models/mcp-server

ツール

19

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
langenumいいえ言語コード('zh' または 'en')。デフォルトは 'zh' です。zh | en
categorystringいいえメインカテゴリ名(任意)
subcategorystringいいえサブカテゴリ名(任意。メインカテゴリも指定する必要があります)
limitnumberいいえ返す結果の上限。デフォルトは 100 です。

詳細

「Tianji」 — 思考モデル MCP サーバー

alt text

TypeScript Node.js MCP Protocol License Version Zod

知的思考のためのツールボックス: 体系的な思考メソッドを問題解決プロセスに統合します

目次

「Tianji」とは

「Tianji」は、数百もの思考モデル、フレームワーク、方法論を統合した強力な思考モデル MCP サーバーであり、ユーザーが問題についてより体系的かつ包括的に考えることを支援します。MCP (Model Context Protocol) インターフェースを通じて、AI アシスタントはこれらの思考ツールにアクセスし、構造化された思考メソッドを会話にシームレスに適用できます。「Tianji」という名前は、中国の古いことわざ「天機漏らすべからず」に由来し、ユーザーがより深い思考のパターンと知恵を見出す手助けをすることを意味しています。

主な機能

  • 豊富な思考モデルライブラリ: 意思決定理論、システム思考、確率的思考など、複数の領域にわたる古典的な思考モデルを収録
  • インテリジェントなモデル推薦: 問題の特性に基づいて最適な思考モデルを自動的に推薦
  • インタラクティブな推論プロセス: 構造化された思考をガイドし、問題を段階的に分析
  • 学習と適応のシステム: ユーザーのフィードバックを通じて推薦アルゴリズムを継続的に改善
  • モデルの作成と組み合わせ: 新しいモデルの作成や既存モデルの組み合わせにより、革新的な思考フレームワークを生成

ツールの概要

探索ツール
  • list-models: すべての思考モデルを一覧表示、またはカテゴリでフィルタリング
  • search-models: キーワードで思考モデルを検索
  • get-categories: すべての思考モデルのカテゴリを取得
  • get-model-info: 思考モデルの詳細情報を取得
  • get-related-models: 特定のモデルに関連する他のモデルを取得
問題解決ツール
  • recommend-models-for-problem: 問題のキーワードに基づいて適切な思考モデルを推薦します
  • interactive-reasoning: インタラクティブな推論プロセスのガイダンス
  • generate-validate-hypotheses: 問題に対する複数の仮説を生成し、検証方法を提供します
  • explain-reasoning-process: モデルの推論プロセスと適用された思考パターンを説明します
作成ツール
  • create-thinking-model: 新しい思考モデルを作成します
  • update-thinking-model: モデル全体を再作成することなく、基本情報や可視化データを含む既存の思考モデルの任意のフィールドを更新します
  • emergent-model-design: 既存のモデルを組み合わせて新しい思考モデルを作成します
  • delete-thinking-model: 不要な思考モデルを削除します
システムと学習ツール
  • get-started-guide: 初心者向けガイド
  • get-server-version: サーバーのバージョン情報を取得します
  • count-models: 現在の思考モデルの総数をカウントします
  • record-user-feedback: 思考モデルの体験に関するユーザーフィードバックを記録します
  • detect-knowledge-gap: ユーザーのクエリにおけるナレッジギャップを検出します
  • get-model-usage-stats: 思考モデルの使用統計を取得します
  • analyze-learning-system: 思考モデル学習システムの状態を分析します

ツール関数のパラメータと戻り値

以下は、すべてのツール関数の詳細なパラメータと戻り値です:

探索ツール
list-models

すべての思考モデルを一覧表示するか、カテゴリでフィルタリングします。

パラメータ:

  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]
  • category (任意): メインカテゴリ名
  • subcategory (任意): サブカテゴリ名 (メインカテゴリの指定が必要です)
  • limit (任意、デフォルト 100): 返される結果の数の上限

戻り値:

{
  "models": [
    {
      "id": "modelID",
      "name": "model name",
      "definition": "model definition",
      "category": "model category"
    }
    // ... more models
  ],
  "total": total number of models queried,
  "filter": "applied filter conditions"
}
search-models

キーワードで思考モデルを検索します。

パラメータ:

  • query (必須): 検索キーワード
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]
  • limit (任意、デフォルト 10): 返される結果の数の上限

戻り値:

{
  "results": [
    {
      "id": "modelID",
      "name": "model name",
      "definition": "model definition",
      "purpose": "model purpose",
      "match_score": match score,
      "match_reasons": ["match reason 1", "match reason 2"]
    }
    // ... more matching results
  ],
  "total": total number of matching models,
  "query": "search keywords"
}
get-categories

すべての思考モデルのカテゴリを取得します。

パラメータ:

  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "categories": [
    {
      "name": "category name",
      "count": number of models in this category,
      "subcategories": [
        {
          "name": "subcategory name",
          "count": number of models in this subcategory
        }
        // ... more subcategories
      ]
    }
    // ... more categories
  ],
  "total_categories": total number of categories,
  "total_models": total number of all models
}
get-model-info

思考モデルの詳細情報を取得します。

パラメータ:

  • model_id (必須): 思考モデルの一意の ID
  • fields (任意、デフォルト ["basic"]): 返すフィールド、オプション: ["all", "basic", "detail", "teaching", "warnings", "visualizations"]
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "id": "modelID",
  "name": "model name",
  "definition": "model definition",
  "purpose": "model purpose",
  // Different levels of detailed information based on the fields parameter
  "category": "model category",
  "subcategories": ["subcategory 1", "subcategory 2"],
  "application_steps": ["application step 1", "application step 2"],
  "popular_science_teaching": [
    {
      "concept_name": "concept name",
      "explanation": "popular explanation"
    }
  ],
  "limitations": [
    {
      "limitation_name": "limitation name",
      "description": "limitation description"
    }
  ],
  "common_pitfalls": [
    {
      "pitfall_name": "common pitfall name",
      "description": "pitfall description"
    }
  ],
  // Visualization-related fields (if requested)
  "visualizations": {
    "flowcharts": [...],
    "tables": [...],
    "bar_charts": [...],
    "lists": [...]
  }
}
get-related-models

特定のモデルに関連するモデルを取得します。

パラメータ:

  • model_id (必須): 思考モデルの一意の ID
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]
  • limit (任意、デフォルト 5): 返される結果の数の上限
  • use_enhanced_similarity (任意、デフォルト true): 拡張類似度評価を使用するかどうか

戻り値:

{
  "related_models": [
    {
      "id": "related model ID",
      "name": "related model name",
      "similarity_score": similarity score,
      "relationship_type": "relationship type",
      "definition": "model definition"
    }
    // ... more related models
  ],
  "source_model": {
    "id": "source model ID",
    "name": "source model name"
  }
}
問題解決ツール
recommend-models-for-problem

問題のキーワードに基づいて適切な思考モデルを推薦します。

パラメータ:

  • problem_keywords (必須): 問題のキーワードの配列
  • problem_context (任意): 問題の完全なコンテキストの説明
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]
  • limit (任意、デフォルト 10): 返される結果の数の上限
  • use_learning_adjustment (任意、デフォルト true): 学習システムを使用して推薦を調整するかどうか

戻り値:

{
  "models": [
    {
      "id": "model ID",
      "name": "model name",
      "match_score": match score,
      "match_reasons": ["match reason 1", "match reason 2"],
      "definition": "model definition",
      "purpose": "model purpose",
      "adjustment_reason": "adjustment reason (if learning adjustment is used)"
    }
    // ... more recommended models
  ],
  "learning_adjusted": whether learning adjustment was applied,
  "total_models_matched": total number of matching models
}
interactive-reasoning

インタラクティブな推論プロセスのガイダンスを提供します。

パラメータ:

  • initialContext (必須): 初期の問題または状況の説明
  • reasoningStage (必須): 現在の推論段階、オプション: ["information_gathering", "hypothesis_generation", "hypothesis_testing", "conclusion"]
  • currentPathId (任意): 現在の推論パス ID (既存の推論内にいる場合)
  • requiredInformation (任意): 必要な追加情報の配列
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "pathId": "reasoning path ID",
  "currentStage": "current stage",
  "suggestedActions": [
    "suggested action 1",
    "suggested action 2"
  ],
  "relevantModels": [
    {
      "id": "related model ID",
      "name": "related model name",
      "relevance_reason": "relevance reason"
    }
    // ... more related models
  ],
  "nextStep": {
    "action": "next action",
    "description": "next step description"
    // May contain other stage-specific data
  }
}
generate-validate-hypotheses

問題に対する複数の仮説を生成し、検証方法を提供します。

パラメータ:

  • problem (必須): 解決する問題
  • context (必須): 問題に関連する背景情報
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "problem_statement": "problem statement",
  "hypotheses": [
    {
      "hypothesis": "hypothesis content",
      "rationale": "formation rationale",
      "validation_methods": [
        {
          "method": "validation method",
          "expected_outcome": "expected result",
          "resources_needed": "resources needed"
        }
        // ... more validation methods
      ],
      "potential_biases": ["potential bias 1", "potential bias 2"]
    }
    // ... more hypotheses
  ],
  "applicable_thinking_models": [
    {
      "id": "applicable model ID",
      "name": "applicable model name",
      "relevance": "relevance description"
    }
    // ... more applicable models
  ]
}
explain-reasoning-process

モデルの推論プロセスと適用された思考パターンを説明します。

パラメータ:

  • problemDescription (必須): 問題または状況の説明
  • reasoningSteps (必須): 推論ステップの詳細の配列。各ステップには以下が含まれます:
    • description (必須): 推論ステップの説明
    • modelIds (任意): 使用された思考モデル ID の配列
    • evidence (任意): 裏付けとなる証拠の配列
    • confidence (任意、デフォルト 0.8): 信頼度 (0-1)
  • conclusion (必須): 推論の結論
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "reasoning_path": {
    "problem": "problem description",
    "steps": [
      {
        "description": "step description",
        "models_applied": [
          {
            "id": "applied model ID",
            "name": "applied model name",
            "explanation": "model application explanation"
          }
        ],
        "cognitive_biases_avoided": ["avoided cognitive bias 1", "avoided cognitive bias 2"],
        "confidence": confidence value
      }
      // ... more reasoning steps
    ],
    "conclusion": "conclusion",
    "meta_cognition_insights": ["meta-cognition insight 1", "meta-cognition insight 2"]
  },
  "visualization": "reasoning path visualization (e.g., flowchart)"
}
作成ツール
create-thinking-model

新しい思考モデルを作成します。

パラメータ:

  • id (必須): モデルの一意の識別子
  • name (必須): モデルの名前
  • definition (必須): モデルの簡潔な定義
  • purpose (必須): モデルの主な目的と使用シナリオ
  • category (必須): モデルの主なカテゴリ
  • lang (必須、デフォルト "zh"): モデルの言語、オプション: ["zh", "en"]
  • subcategories (任意): モデルのサブカテゴリのリスト
  • tags (任意): モデルに関連するタグ
  • author (任意): モデルの作者
  • source (任意): モデルの出典
  • prompt (任意): 詳細なプロンプト/ロールプレイングガイド
  • example (任意): モデルの使用例の概要
  • use_cases (任意): モデルのユースケース
  • interaction (任意): このモデルを使用してユーザーとやり取りするためのガイド
  • constraints (任意): このモデルを使用する際の制約
  • popular_science_teaching (任意): モデルの科学普及教育
  • limitations (任意): モデルの限界
  • common_pitfalls (任意): このモデルを使用する際のよくある落とし穴
  • common_problems_solved (任意): このモデルによって解決される一般的な問題
  • 各種可視化データ (任意): フローチャート、表、棒グラフ、リストなど

戻り値:

{
  "status": "operation status",
  "message": "operation message",
  "model_id": "created model ID"
}
update-thinking-model

既存の思考モデルの任意のフィールドを更新します。

パラメータ:

  • model_id (必須): 更新するモデルの ID
  • 更新するその他のフィールド (任意): create-thinking-model のパラメータと同じ

戻り値:

{
  "status": "operation status",
  "message": "operation message",
  "updated_fields": ["updated field 1", "updated field 2"]
}
emergent-model-design

既存の思考モデルを組み合わせて新しい思考モデルを作成します。

パラメータ:

  • source_model_ids (必須): 組み合わせに使用するソースモデル ID のリスト、最小 2、最大 10
  • target_model_id (必須): 新しいモデルの一意の識別子
  • target_model_name (必須): 新しいモデルの名前
  • design_goal (必須): 設計目標と目的の説明
  • connection_description (任意): ソースモデルがどのように組み合わされるかの説明
  • category (任意): 新しいモデルの主なカテゴリ
  • lang (必須、デフォルト "zh"): モデルの言語、オプション: ["zh", "en"]

戻り値:

{
  "status": "operation status",
  "message": "operation message",
  "model_id": "created model ID",
  "emergent_properties": ["emergent property 1", "emergent property 2"],
  "source_models_used": [
    {
      "id": "source model ID",
      "name": "source model name",
      "contribution": "contribution to the new model"
    }
    // ... more source models
  ]
}
delete-thinking-model

不要な思考モデルを削除します。

パラメータ:

  • model_id (必須): 削除するモデルの ID
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]
  • confirm (必須): 削除を確認する、true である必要があります

戻り値:

{
  "status": "operation status",
  "message": "operation message",
  "deleted_model_id": "deleted model ID"
}
システムと学習ツール
get-started-guide

初心者向けガイドを取得します。

パラメータ:

  • user_objective (任意、デフォルト "explore"): ユーザーの目的、オプション: ["explore", "solve_problem", "create_model", "learn_tools"]
  • expertise_level (任意、デフォルト "beginner"): ユーザーの経験レベル、オプション: ["beginner", "intermediate", "advanced"]
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "welcome_message": "welcome message",
  "system_overview": "system overview",
  "suggested_first_steps": [
    {
      "step": "step description",
      "tool": "recommended tool",
      "example": "usage example"
    }
    // ... more steps
  ],
  "recommended_models": [
    {
      "id": "recommended model ID",
      "name": "recommended model name",
      "purpose": "model purpose"
    }
    // ... more recommended models
  ],
  "learning_path": "learning path suggestions",
  "additional_resources": ["additional resource 1", "additional resource 2"]
}
get-server-version

サーバーのバージョンとステータス情報を取得します。

パラメータ:

  • なし

戻り値:

{
  "version": "version number",
  "build_date": "build date",
  "api_version": "API version",
  "status": "server status",
  "uptime": uptime in seconds,
  "models_loaded": total number of models loaded
}
count-models

現在の思考モデルの合計数をカウントします。

パラメータ:

  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "total_count": total number of models,
  "language": "language code",
  "category_counts": {
    "category1": number of models in this category,
    "category2": number of models in this category
    // ... more category statistics
  }
}
record-user-feedback

思考モデルの体験に関するユーザーフィードバックを記録します。

パラメータ:

  • modelIds (必須): 関連する思考モデルの ID の配列
  • context (必須): モデルを適用したコンテキストまたは問題の説明
  • feedbackType (必須): フィードバックの種類、オプション: ["helpful", "not_helpful", "incorrect", "insightful", "confusing"]
  • comment (任意): 詳細なフィードバックの説明またはコメント
  • applicationResult (任意): モデルの適用結果の説明
  • suggestedImprovements (任意): 改善提案の配列
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "status": "operation status",
  "message": "operation message",
  "insights": "insights gained from the feedback"
}
detect-knowledge-gap

ユーザーのクエリにおける知識ギャップを検出します。

パラメータ:

  • query (必須): ユーザーのクエリまたは質問
  • matchThreshold (任意、デフォルト 0.5): マッチしきい値、これより低い値は知識ギャップとみなされます
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "knowledge_gaps": [
    {
      "concept": "missing concept",
      "match_score": match score,
      "suggested_models": [
        {
          "id": "suggested model ID",
          "name": "suggested model name",
          "relevance": "relevance description"
        }
        // ... more suggested models
      ],
      "learning_resources": ["learning resource 1", "learning resource 2"]
    }
    // ... more knowledge gaps
  ],
  "query_coverage": query coverage,
  "recommendations": ["recommendation 1", "recommendation 2"]
}
get-model-usage-stats

思考モデルの使用統計を取得します。

パラメータ:

  • modelId (必須): 思考モデルの一意の ID
  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "model_id": "model ID",
  "model_name": "model name",
  "usage_count": usage count,
  "average_rating": average rating,
  "feedback_distribution": {
    "helpful": number of helpful feedback,
    "not_helpful": number of unhelpful feedback,
    "incorrect": number of incorrect feedback,
    "insightful": number of insightful feedback,
    "confusing": number of confusing feedback
  },
  "common_usage_contexts": ["common usage context 1", "common usage context 2"],
  "trend": "usage trend description",
  "related_models_also_used": [
    {
      "id": "related model ID",
      "name": "related model name",
      "co_occurrence_count": co-occurrence count
    }
    // ... more related models
  ]
}
analyze-learning-system

思考モデル学習システムのステータスを分析します。

パラメータ:

  • lang (必須、デフォルト "zh"): 言語コード、オプション: ["zh", "en"]

戻り値:

{
  "system_health": {
    "total_feedback_count": total feedback count,
    "knowledge_coverage": knowledge coverage,
    "adaptation_score": adaptation score
  },
  "top_performing_models": [
    {
      "id": "model ID",
      "name": "model name",
      "effectiveness_score": effectiveness score
    }
    // ... more well-performing models
  ],
  "identified_gaps": ["identified gap 1", "identified gap 2"],
  "learning_trends": ["learning trend 1", "learning trend 2"],
  "improvement_suggestions": ["improvement suggestion 1", "improvement suggestion 2"]
}

ユースケース

複雑な問題の解決

複雑な問題に直面したとき、システムは複数の思考モデルを推奨し、さまざまな角度から問題を分析して思考の盲点を避けるのに役立ちます。

思考の質の向上

構造化された思考プロセスを通じて、よくある認知バイアスを避け、より合理的な意思決定を行います。

思考モデルの学習

システムは思考モデルの定義を提供するだけでなく、詳細な教材、応用例、注意事項も含まれており、さまざまな思考ツールを習得するのに役立ちます。

カスタムモデルの作成

既存のモデルではニーズを満たせない場合、新しい思考モデルを作成したり、既存のモデルを組み合わせて革新的な思考フレームワークを作成したりできます。

クイックスタート

インストール (ローカル開発)

このプロジェクトをローカルで実行および開発したい場合:

git clone https://github.com/yourusername/thinking-models-mcp.git # Replace with your repository address
cd thinking_models_mcp
npm install
npm run build
サーバーの起動 (ローカル開発)
  1. 通常起動 (stdio モード) プロジェクトのルートディレクトリで、次を実行します:
    node build/thinking_models_server.js
    
    または npm スクリプトを使用します (package.json に設定されている場合):
    npm run start
    

設定ガイド

思考モデル MCP サーバーは、MCP プロトコルをサポートする任意のクライアントに統合できます。以下に 2 つの異なる実装方法を示します:

方法 1: ローカルの Node.js で「Tianji」サーバーを実行する

この方法では、「Tianji」サーバーのコードをローカルにインストールして設定する必要があり、カスタマイズ開発やサーバーコードの変更が必要なシナリオに適しています。

{
  "mcpServers": {
    "tianji": { // "Tianji" server name
      "command": "node",
      "args": [
        "e:\\thinking_models_mcp\\build\\thinking_models_server.js" // Replace with your actual path
      ]
    }
  }
  // ... other configurations ...
}
方法 2: NPX を使用してリモートの npm パッケージからサーバーを起動する

この方法はより簡単で、完全なコードをローカルにインストールする必要がなく、npm リポジトリから直接パッケージを取得して実行します。

{
  "mcpServers": {
    "thinking-models": {
      "command": "npx",
      "args": [
        "--no-cache", // Avoid using cached versions, ensure using the latest version
        "@thinking-models/mcp-server" // npm package name
        // If you need to specify version: "@thinking-models/mcp-server@latest"
      ]
    }
  }
  // ... other configurations ...
}

コマンドライン引数の説明:

  • node: ローカルの Node.js を直接使用して JavaScript ファイルを実行します
  • npx: npm パッケージランナーで、グローバルまたはローカルにインストールすることなく npm パッケージ内のコマンドを実行できます
  • --no-cache: キャッシュを無効にし、毎回最新バージョンのパッケージを確実に取得して、古いバージョンを使用することを避けます

重要な注意: サーバーデータはインストールディレクトリの data フォルダに自動的に保存されます。サービスを再起動しても、追加の設定なしで以前のデータが保持されます。毎回最新バージョンを確実に取得するために、--no-cache パラメータを使用して、キャッシュの問題により古い機能を使用することを避けることをお勧めします。

基本的な使い方

「Tianji」サーバーが起動したら、MCP クライアントを通じて思考モデルツールにアクセスするリクエストを送信できます。例えば:

1. What is the current version number of "Tianji"?
2. How many thinking models does "Tianji" currently have available for me to use?
3. I want to check what types of thinking models are in "Tianji", tell me how many categories there are in total?
4. I encountered XXXX event, but I don't know what to do, please have "Tianji" recommend some thinking models that can help me solve the problem.

正しく設定されていれば、クライアントはサーバーを呼び出して結果を返すことができるはずです。

開発者向けドキュメント

このセクションは、思考モデル MCP サーバーを理解、カスタマイズ、または拡張したい開発者向けです。

開発環境のセットアップ
環境要件
  • Node.js >= 18.0.0
  • npm >= 8.0.0 (または yarn、pnpm などの互換性のあるパッケージマネージャー)
  • TypeScript 5.x
依存関係のインストール (ローカル開発)
# Assuming you've already cloned the repository and entered the project directory
npm install
開発モード (ローカル開発)
# Watch mode, automatically recompile TypeScript files when changed
npm run watch

# In another terminal, start the development server (usually runs compiled files from the build directory)
# You might need a tool like nodemon to automatically restart the server
npm run start:dev # (assuming you've configured this script in package.json)
コードアーキテクチャ
ファイル構造 (例)
thinking_models_mcp/
├── build/                    # Compiled JavaScript files
├── src/                      # TypeScript source code
│   ├── thinking_models_server.ts  # Main server logic and tool registration
│   ├── types.ts              # TypeScript type definitions
│   ├── utils.ts              # Common utility functions
│   ├── similarity_engine.ts  # Similarity calculation logic
│   ├── reasoning_process.ts  # Reasoning process management
│   ├── learning_capability.ts # Learning system functionality
│   ├── recommendations.ts    # Model recommendation logic
│   └── response_types.ts     # API response type definitions
├── thinking_models_db/       # Thinking model database
│   ├── zh/                   # Chinese models (JSON files)
│   └── en/                   # English models (JSON files)
├── package.json              # Project dependencies and scripts
├── tsconfig.json             # TypeScript compiler configuration
└── README.md                 # This document
コアモジュール
  1. サーバーコア (thinking_models_server.ts)

    • MCP サーバーインスタンス (@modelcontextprotocol/sdk の McpServer) を初期化します
    • 利用可能なすべてのツールを登録し、そのパラメータスキーマ (zod を使用) とハンドラー関数を定義します
    • 思考モデルデータを読み込み、管理します
    • クライアントのリクエストを処理し、適切なツールにルーティングします
  2. 思考モデルの型 (types.ts)

    • モデルのデータ構造を記述するコアな ThinkingModel インターフェースを定義します
    • その他のモデル関連の TypeScript 型とインターフェース
  3. 類似度計算エンジン (similarity_engine.ts)

    • calculateQueryMatch: ユーザークエリと思考モデル間の一致度を計算します
    • calculateKeywordRelevance: キーワードリストと思考モデルの関連性を計算します
  4. 推論プロセス管理 (reasoning_process.ts)

    • 構造化された推論パスの構築、管理、可視化に使用されます
  5. 学習システム (learning_capability.ts)

    • recordUserFeedback: モデル使用に関するユーザーフィードバックを記録します
    • detectKnowledgeGap: ユーザークエリとフィードバックに基づいてナレッジのギャップを検出します
    • adjustModelRecommendations: 学習データに基づいてモデルの推奨を調整します
API ドキュメント
サーバー API

サーバーの通信モード:

  1. stdio API
    • 標準入出力を通じてクライアントと通信します。
    • MCP プロトコル仕様に準拠しています。
    • 通常、クライアント (Cursor、Claude Desktop など) によって自動的に管理されます。
ツール API

各ツールは server.tool() メソッドを使用して登録され、以下を含みます:

  1. ツール名 (文字列): クライアントが呼び出すときに使用する名前。
  2. ツールの説明 (文字列): ツールの機能の簡単な説明。
  3. パラメータスキーマ (Zod オブジェクト): zod ライブラリを使用して、ツールが受け入れるパラメータとその型、説明、制約を定義します。
  4. ハンドラー関数 (async 関数): 検証済みのパラメータオブジェクトを受け取り、ツールのロジックを実行し、MCP プロトコルに準拠したレスポンスを返します。
ツール登録の例
// filepath: src/thinking_models_server.ts
// ... imports ...

server.tool(
  "get-model-count-by-category", // Tool name
  "Get the number of thinking models in a specified category", // Tool description
  { // Parameter schema (Zod schema)
    category: z.string().describe("Main category of thinking models to query"),
    lang: z.enum(["zh", "en"] as const).default("zh").describe("Language code ('zh' or 'en')")
  },
  async ({ category, lang }) => { // Handler function
    try {
      const modelsInBuffer = MODELS[lang] || []; // MODELS is a cache of loaded models
      const count = modelsInBuffer.filter(m => m.category === category).length;
      log(`Tool 'get-model-count-by-category' called: category=${category}, lang=${lang}, count=${count}`);
      return {
        content: [{
          type: "text",
          text: JSON.stringify({ category, lang, count }, null, 2)
        }]
      };
    } catch (error: any) {
      log(`Tool 'get-model-count-by-category' execution error: ${error.message}`);
      return {
        content: [{
          type: "text",
          text: JSON.stringify({ error: "Failed to get model count", message: error.message }, null, 2)
        }]
      };
    }
  }
);
拡張ガイドライン
新しいツールの追加
  1. thinking_models_server.ts (または関連するモジュールファイル) で、上記の例のように server.tool() メソッドを使用して新しいツールを登録します。
  2. 明確なパラメータスキーマと説明を定義します。
  3. ツールのハンドラー関数を実装し、エラー処理とログ記録を含めるようにします。
  4. プロジェクトを再コンパイルします (npm run build)。
新しい思考モデルの作成
  1. zh (中国語) または en (英語) ディレクトリに新しい .json ファイルを作成します。
  2. ファイル名は通常、モデルの ID です (たとえば、new_decision_matrix.json)。
  3. ファイルの内容は ThinkingModel インターフェース (types.ts で定義) の構造に準拠する必要があります。例:
    {
      "id": "new_decision_matrix",
      "name": "New Decision Matrix Model",
      "definition": "A structured method for evaluating options under multiple criteria.",
      "purpose": "Help make rational choices among complex options.",
      "category": "Decision Making",
      "subcategories": ["Multi-criteria Decision"],
      "tags": ["decision", "matrix", "evaluation", "selection"],
      "use_cases": ["Product feature prioritization", "Vendor selection"],
      // ... other fields like popular_science_teaching, limitations, common_pitfalls, visualizations, etc.
    }
    
  4. サーバーは起動時に新しいモデルを自動的に読み込みます。または、ファイル監視が有効になっている場合は、ファイルが保存されたときにも再読み込みされます。
レコメンデーションアルゴリズムの変更

レコメンデーションロジックは主に similarity_engine.ts と recommendations.ts にあります。

  • similarity_engine.ts: テキストの類似度とキーワードの関連性を計算するためのコアアルゴリズムが含まれています。これらのアルゴリズムの重みや使用する手法 (TF-IDF、埋め込みベクトルなど) を調整して、マッチングの精度を向上させることができます。
  • recommendations.ts: 類似度エンジンの結果を使用して最終的なモデル推奨リストを生成する getModelRecommendations などの関数が含まれています。ここでのロジックを変更できます。たとえば、異なるソースからのスコアをどのように組み合わせるか、コンテキストに基づいて推奨事項をどのように調整するかなどです。
テスト

プロジェクトでは通常、Jest などのテストフレームワークを使用します。

テストの作成

tests ディレクトリにモジュールまたは関数のテストファイルを作成します (たとえば、tests/my_tool.test.ts)。

// tests/example_tool.test.ts
import { server, loadModels } from '../src/thinking_models_server'; // Assuming the server instance is exported
import { ThinkingModel } from '../src/types';

// Mock MCP client request
async function callTool(toolName: string, params: any) {
  const toolDefinition = server.capabilities.tools[toolName];
  if (!toolDefinition || !toolDefinition.execute) {
    throw new Error(`Tool ${toolName} not found or not executable`);
  }
  // Actual testing might need more complex mocking to match the MCP SDK context
  return toolDefinition.execute(params, {} as any);
}

describe('My Custom Tool Tests', () => {
  beforeAll(async () => {
    // Load test model data (if needed)
    await loadModels('zh'); // Load Chinese models
  });

  test('get-model-count-by-category should return correct count', async () => {
    const response = await callTool('get-model-count-by-category', { category: 'Decision Making', lang: 'zh' });
    const result = JSON.parse(response.content[0].text);
    expect(result.category).toBe('Decision Making');
    expect(result.count).toBeGreaterThanOrEqual(0); // Specific count depends on your test data
  });
});
テストの実行

package.json でテストスクリプトを設定します:

{
  "scripts": {
    "test": "jest"
  }
}

次に実行します:

npm test
ビルドとデプロイ
プロジェクトのビルド
npm run build

これは tsc (TypeScript コンパイラ) を使用して、src ディレクトリの .ts ファイルを build ディレクトリの JavaScript ファイルにコンパイルします。

デプロイオプション

スタンドアロンの Node.js サーバーとしてデプロイする

  • プロジェクト全体 (または少なくとも build ディレクトリ、node_modules、package.json、thinking_models_db) をサーバーにコピーします
  • サーバーを実行します:
    node build/thinking_models_server.js
    
  • または、pm2 などのプロセスマネージャーを使用してサーバーを稼働させ続けます:
    npm install -g pm2
    pm2 start build/thinking_models_server.js --name "thinking-models-mcp"
    pm2 save
    
コーディング規約
コーディングスタイル
  • 一貫したコーディングスタイルに従ってください(たとえば、Prettier や ESLint を使用します)。
  • TypeScript の強力な型付け機能を活用し、どうしても必要な場合を除いて any の使用は避けてください。
  • 明確で自己説明的なコードを書き、複雑なロジックにはコメントを追加してください。
命名規則
  • 関数と変数: camelCase(例: calculateSimilarity)
  • クラスとインターフェース: PascalCase(例: ThinkingModel、McpServer)
  • 定数: UPPER_SNAKE_CASE(例: DEFAULT_PORT)
  • ファイル名: snake_case.ts または kebab-case.ts(プロジェクト内で一貫性を保ってください)
ドキュメント基準
  • すべての公開 API(関数、クラス、インターフェース)に JSDoc/TSDoc コメントを記述してください。
  • README やその他のドキュメントで、プロジェクトの機能と使用方法を明確に説明してください。
  • ドキュメントをコードと同期させてください。
よくある開発上の問題とトラブルシューティング
1. モデルファイルが読み込まれない、または読み込みエラー
  • パスの確認: SUPPORTED_LANGUAGES で定義されているパスが、コンパイル後の thinking_models_server.js ファイルからの相対パスとして正しいことを確認してください。
  • JSON 形式: すべてのモデル .json ファイルが有効な JSON であり、ThinkingModel インターフェースの構造に準拠していることを確認してください。
  • ファイル権限: サーバープロセスにモデルディレクトリとファイルを読み取る権限があることを確認してください。
  • ログ: サーバーの起動ログを確認してください。通常、モデルの読み込み時にエラー情報が含まれています。
2. API リクエストの失敗、またはツールが見つからない
  • サーバーの稼働状況: サーバーがエラーなく正常に起動したことを確認してください。
  • ツール名: クライアントが呼び出すツール名が、サーバーに登録されている名前と完全に一致していることを確認してください(大文字と小文字を区別します)。
  • パラメーター形式: ツールに送信されるパラメーターが、その Zod スキーマ定義に準拠していることを確認してください。
3. 類似度計算やレコメンドが不正確
  • モデルデータの品質: definition、purpose、tags、keywords などのフィールドは、類似度計算にとって重要です。これらのフィールドが豊富で正確であることを確認してください。
  • アルゴリズムの調整: similarity_engine.ts 内のアルゴリズムパラメーターや重みを調整する必要があるかもしれません。
  • 学習システム: 学習システムが有効になっている場合は、フィードバックデータが正しく記録され、適用されているかを確認してください。
ベストプラクティス
  • ログ記録: log() 関数(またはより高度なログライブラリ)を使用して、重要な操作、エラー、デバッグ情報を記録してください。
  • エラー処理: すべてのツール関数と非同期操作に堅牢なエラー処理を実装し、意味のあるエラーメッセージをクライアントに返してください。
  • モジュール性: さまざまな機能(類似度計算、学習システム、ツールの実装など)を個別のモジュールに整理してください。
  • 構成管理: ポートやパスなどの構成可能な項目には、環境変数または構成ファイルを使用してください。

ライセンス

このプロジェクトは MIT ライセンスの下でオープンソース化されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。