Skip to main content
Glama
FradSer

Sequential Thinking Multi-Agent System

by FradSer

シーケンシャル思考マルチエージェントシステム(MAS)

鍛冶屋のバッジ TwitterフォローPythonバージョン フレームワーク

英語 |简体中文

このプロジェクトは、 Agnoフレームワークで構築され、 MCPを介して提供される**マルチエージェントシステム(MAS)**を用いて、高度なシーケンシャル思考プロセスを実装します。これは、協調型で専門化されたエージェントを活用してより深い分析と問題の分解を行うことで、単純な状態追跡アプローチからの大きな進化を表しています。

概要

このサーバーは、複雑な問題解決のために設計された、洗練されたシーケンシャルsequentialthinkingツールを提供します。前バージョンとは異なり、このバージョンは真のマルチエージェントシステム(MAS)アーキテクチャを採用しており、以下の特徴を備えています。

  • コーディネーティング エージェント( coordinateモードのTeamオブジェクト) がワークフローを管理します。

  • 専門エージェント(プランナー、リサーチャー、アナライザー、クリティック、シンセサイザー) は、定義された役割と専門知識に基づいて特定のサブタスクを処理します。

  • 入力された思考は単に記録されるだけでなく、エージェント チームによって積極的に処理、分析、統合されます

  • システムは、前のステップの修正や代替パスの探索のための分岐など、複雑な思考パターンをサポートします。

  • Exa (Researcher エージェント経由) などの外部ツールとの統合により、動的な情報収集が可能になります。

  • 堅牢なPydantic検証により、思考ステップのデータの整合性が保証されます。

  • 詳細なログ記録では、エージェントのインタラクション (コーディネータによって処理) を含むプロセスが追跡されます。

目標は、専門の役割を連携して活用することで、単一のエージェントや単純な状態追跡で可能なものよりも、より高品質の分析と、より繊細な思考プロセスを実現することです。

Related MCP server: Smart-Thinking

オリジナルバージョン(TypeScript)との主な違い

この Python/Agno 実装は、元の TypeScript バージョンからの根本的な変化を示しています。

特徴/側面

Python/Agno バージョン (最新)

TypeScriptバージョン(オリジナル)

建築

マルチエージェント システム (MAS) ; エージェントのチームによるアクティブな処理。

単一クラスの状態トラッカー。シンプルなログ記録/保存。

知能

分散エージェント ロジック。専用のエージェントとコーディネーターに組み込まれています。

外部 LLM のみ。内部情報なし。

処理

アクティブな分析と統合。エージェントは思考に基づいて行動します

パッシブログ; 思考のみを記録します。

フレームワーク

Agno (MAS) + FastMCP (サーバー) ; 専用の MAS ライブラリを使用します。

MCP SDK のみ

調整

明示的なチーム調整ロジック( coordinateモードのTeam )。

なし; 調整概念はありません。

検証

Pydantic スキーマ検証; 堅牢なデータ検証。

基本的な型チェック。信頼性は低くなります。

外部ツール

統合型 (研究者経由の Exa) ; 研究タスクを実行できます。

なし

ログ記録

構造化された Python ログ (ファイル + コンソール) ; 構成可能。

Chalk を使用したコンソール ログ記録、基本。

言語とエコシステム

Python ; Python AI/ML エコシステムを活用します。

TypeScript/Node.js

本質的には、このシステムは受動的な思考記録装置から、AI エージェントの共同チームによって駆動される能動的な思考処理装置へと進化しました。

仕組み(座標モード)

  1. **開始:**外部の LLM はsequential-thinking-starterプロンプトを使用して問題を定義し、プロセスを開始します。

  2. ツール呼び出し: LLM は、 ThoughtData Pydantic モデルに従って構造化された最初の (または後続の) 思考でsequentialthinkingツールを呼び出します。

  3. **検証とログ記録:**ツールは呼び出しを受け取り、Pydantic を使用して入力を検証し、受信した考えをログに記録し、 AppContextを介して履歴/ブランチの状態を更新します。

  4. **コーディネーターの呼び出し:**中核となる思考内容 (リビジョン/ブランチに関するコンテキストとともに) がSequentialThinkingTeamarunメソッドに渡されます。

  5. コーディネーターによる分析と委任: Team (コーディネーターとして機能) は入力された考えを分析し、それをサブタスクに分割し、これらのサブタスクを最も関連性の高い専門エージェント (分析タスクの場合はアナライザー、情報ニーズの場合はリサーチャーなど) に委任します。

  6. **専門家による実行:**委任されたエージェントは、指示、モデル、ツール ( ThinkingToolsExaToolsなど) を使用して、特定のサブタスクを実行します。

  7. **回答の収集:**スペシャリストは結果をコーディネーターに返します。

  8. **統合とガイダンス:**コーディネーターは、スペシャリストの回答を一つのまとまりのあるアウトプットに統合します。このアウトプットには、スペシャリストの知見(特に批評家と分析者からの知見)に基づいた修正や分岐の提案が含まれる場合があります。また、LLM(法学修士)が次の考えをまとめるためのガイダンスも提供します。

  9. **戻り値:**ツールは、コーディネーターの合成応答、ステータス、更新されたコンテキスト (ブランチ、履歴の長さ) を含む JSON 文字列を返します。

  10. **反復:**呼び出し元の LLM はコーディネーターの応答とガイダンスを使用して次のsequentialthinkingツール呼び出しを策定し、提案に応じて修正または分岐をトリガーする可能性があります。

トークン消費警告

⚠️トークン使用量の増加:を消費します。sequentialthinking sequentialthinking各呼び出しは以下を呼び出します。

  • コーディネーター エージェント ( Team自体)。

  • 複数の専門エージェント (コーディネーターの委任に応じて、プランナー、リサーチャー、アナライザー、批評家、シンセサイザーのいずれかになる可能性あり)。

この並列処理により、単一エージェントや状態追跡アプローチと比較して、トークン使用量が大幅に増加します(思考ステップごとに3~6倍以上になる可能性があります)。それに応じて予算と計画を立ててください。このツールは、トークン効率よりも分析の深さと品質を優先します。

前提条件

  • Python 3.10以上

  • 互換性のある LLM API へのアクセス( agno用に構成)。システムは現在以下をサポートしています。

    • Groq: GROQ_API_KEYが必要です。

    • DeepSeek: DEEPSEEK_API_KEYが必要です。

    • OpenRouter: OPENROUTER_API_KEYが必要です。

    • LLM_PROVIDER環境変数を使用して、必要なプロバイダーを構成します (デフォルトはdeepseek )。

  • Exa API キー (Researcher エージェントの機能を使用する場合にのみ必要)

    • EXA_API_KEY環境変数を介して設定します。

  • uvパッケージ マネージャー (推奨) またはpip

MCP サーバー構成 (クライアント側)

このサーバーは、MCPの想定通り、stdio経由で通信する標準実行スクリプトとして実行されます。具体的な設定方法は、MCPクライアントの実装によって異なります。外部ツールサーバーの統合に関する詳細は、クライアントのドキュメントを参照してください。

MCP クライアント構成内のenvセクションには、選択したLLM_PROVIDERの API キーを含める必要があります。

{ "mcpServers": { "mas-sequential-thinking": { "command": "uvx", // Or "python", "path/to/venv/bin/python" etc. "args": [ "mcp-server-mas-sequential-thinking" // Or the path to your main script, e.g., "main.py" ], "env": { "LLM_PROVIDER": "deepseek", // Or "groq", "openrouter" // "GROQ_API_KEY": "your_groq_api_key", // Only if LLM_PROVIDER="groq" "DEEPSEEK_API_KEY": "your_deepseek_api_key", // Default provider // "OPENROUTER_API_KEY": "your_openrouter_api_key", // Only if LLM_PROVIDER="openrouter" "DEEPSEEK_BASE_URL": "your_base_url_if_needed", // Optional: If using a custom endpoint for DeepSeek "EXA_API_KEY": "your_exa_api_key" // Only if using Exa } } } }

インストールとセットアップ

Smithery経由でインストール

Smithery経由で Claude Desktop 用の Sequential Thinking Multi-Agent System を自動的にインストールするには:

npx -y @smithery/cli install @FradSer/mcp-server-mas-sequential-thinking --client claude

手動インストール

  1. リポジトリをクローンします。

    git clone git@github.com:FradSer/mcp-server-mas-sequential-thinking.git cd mcp-server-mas-sequential-thinking
  2. **環境変数を設定する:**プロジェクトのルート ディレクトリに.envファイルを作成するか、変数を環境に直接エクスポートします。

    # --- LLM Configuration --- # Select the LLM provider: "deepseek" (default), "groq", or "openrouter" LLM_PROVIDER="deepseek" # Provide the API key for the chosen provider: # GROQ_API_KEY="your_groq_api_key" DEEPSEEK_API_KEY="your_deepseek_api_key" # OPENROUTER_API_KEY="your_openrouter_api_key" # Optional: Base URL override (e.g., for custom DeepSeek endpoints) # DEEPSEEK_BASE_URL="your_base_url_if_needed" # Optional: Specify different models for Team Coordinator and Specialist Agents # Defaults are set within the code based on the provider if these are not set. # Example for Groq: # GROQ_TEAM_MODEL_ID="llama3-70b-8192" # GROQ_AGENT_MODEL_ID="llama3-8b-8192" # Example for DeepSeek: # DEEPSEEK_TEAM_MODEL_ID="deepseek-chat" # Note: `deepseek-reasoner` is not recommended as it doesn't support function calling # DEEPSEEK_AGENT_MODEL_ID="deepseek-chat" # Recommended for specialists # Example for OpenRouter: # OPENROUTER_TEAM_MODEL_ID="deepseek/deepseek-r1" # Example, adjust as needed # OPENROUTER_AGENT_MODEL_ID="deepseek/deepseek-chat" # Example, adjust as needed # --- External Tools --- # Required ONLY if the Researcher agent is used and needs Exa EXA_API_KEY="your_exa_api_key"

    モデル選択に関する注意:

    • TEAM_MODEL_IDはコーディネーター( Teamオブジェクト)によって使用されます。この役割は、強力な推論、統合、および委任機能の恩恵を受けます。ここでは、機能とコスト/速度のバランスを考慮し、より強力なモデル(例: deepseek-chatclaude-3-opusgpt-4-turbo )の使用を検討してください。

    • AGENT_MODEL_IDは、専門エージェント(プランナー、リサーチャーなど)によって使用されます。これらのエージェントは、特定のサブタスクを担当します。タスクの複雑さや予算/パフォーマンスのニーズに応じて、より高速またはコスト効率の高いモデル(例: deepseek-chatclaude-3-sonnetllama3-8b )が適している場合があります。

    • これらの環境変数が設定されていない場合、デフォルトはコード内(例: main.py )で提供されます。ユースケースに最適なバランスを見つけるために、実験することをお勧めします。

  3. **依存関係のインストール:**仮想環境を使用することを強くお勧めします。

    • uv

      # Install uv if you don't have it: # curl -LsSf https://astral.sh/uv/install.sh | sh # source $HOME/.cargo/env # Or restart your shell # Create and activate a virtual environment (optional but recommended) python -m venv .venv source .venv/bin/activate # On Windows use `.venv\\Scripts\\activate` # Install dependencies uv pip install -r requirements.txt # Or if a pyproject.toml exists with dependencies defined: # uv pip install .
    • pip

      # Create and activate a virtual environment (optional but recommended) python -m venv .venv source .venv/bin/activate # On Windows use `.venv\\Scripts\\activate` # Install dependencies pip install -r requirements.txt # Or if a pyproject.toml exists with dependencies defined: # pip install .

使用法

環境変数が設定されており、仮想環境 (使用されている場合) がアクティブであることを確認します。

サーバーを実行します。次のいずれかの方法を選択してください。

  1. uv run

    uv --directory /path/to/mcp-server-mas-sequential-thinking run mcp-server-mas-sequential-thinking
  2. Python を直接使用する:

    python main.py

サーバーが起動し、stdio 経由でリクエストをリッスンして、 sequentialthinkingツールを使用するように構成された互換性のある MCP クライアントがそれを利用できるようになります。

sequentialthinkingツールパラメータ

このツールは、 ThoughtData Pydantic モデルに一致する引数を必要とします。

# Simplified representation from src/models.py class ThoughtData(BaseModel): thought: str # Content of the current thought/step thoughtNumber: int # Sequence number (>=1) totalThoughts: int # Estimated total steps (>=1, suggest >=5) nextThoughtNeeded: bool # Is another step required after this? isRevision: bool = False # Is this revising a previous thought? revisesThought: Optional[int] = None # If isRevision, which thought number? branchFromThought: Optional[int] = None # If branching, from which thought? branchId: Optional[str] = None # Unique ID for the new branch being created needsMoreThoughts: bool = False # Signal if estimate is too low before last step

ツールの操作(概念例)

LLM はこのツールと反復的に対話します。

  1. **LLM:**問題の定義とともにスタータープロンプト ( sequential-thinking-starterなど) を使用します。

  2. LLM: thoughtNumber: 1 、最初のthought (例: 「分析を計画する...」)、推定totalThoughts 、およびnextThoughtNeeded: Trueを使用して、 sequentialthinkingツールを呼び出します。

  3. サーバー: MASが思考を処理します。コーディネーターは専門家からの回答を統合し、ガイダンスを提供します(例:「分析計画は完了しました。次にXの調査を提案します。現時点では修正は推奨されません。」)。

  4. LLM: coordinatorResponseを含む JSON 応答を受信します。

  5. LLM: coordinatorResponseに基づいて次の考えをまとめます (例: 「利用可能なツールを使用して X を調査する...」)。

  6. LLM: thoughtNumber: 2 、新しいthought 、潜在的に更新されたtotalThoughtsnextThoughtNeeded: Truesequentialthinkingツールを呼び出します。

  7. サーバー: MASプロセス。コーディネーターが統合します(例:「調査完了。調査結果から、思考#1の仮定に欠陥があることが示唆されました。推奨事項: 思考#1を修正してください…」)。

  8. **LLM:**応答を受け取り、推奨事項を記録します。

  9. **LLM:**修正思考を策定します。

  10. LLM: thoughtNumber: 3 、リビジョンthoughtisRevision: TruerevisesThought: 1nextThoughtNeeded: Truesequentialthinkingツールを呼び出します。

  11. ...など、必要に応じてプロセスを分岐または拡張する可能性があります。

ツール応答形式

ツールは次の内容を含む JSON 文字列を返します。

{ "processedThoughtNumber": int, // The thought number that was just processed "estimatedTotalThoughts": int, // The current estimate of total thoughts "nextThoughtNeeded": bool, // Whether the process indicates more steps are needed "coordinatorResponse": "...", // Synthesized output from the agent team, including analysis, findings, and guidance for the next step. "branches": ["main", "branch-id-1"], // List of active branch IDs "thoughtHistoryLength": int, // Total number of thoughts processed so far (across all branches) "branchDetails": { "currentBranchId": "main", // The ID of the branch the processed thought belongs to "branchOriginThought": null | int, // The thought number where the current branch diverged (null for 'main') "allBranches": { // Count of thoughts in each active branch "main": 5, "branch-id-1": 2 } }, "isRevision": bool, // Was the processed thought a revision? "revisesThought": null | int, // Which thought number was revised (if isRevision is true) "isBranch": bool, // Did this thought start a new branch? "status": "success | validation_error | failed", // Outcome status "error": null | "Error message..." // Error details if status is not 'success' }

ログ記録

  • ログはデフォルトで~/.sequential_thinking/logs/sequential_thinking.logに書き込まれます。(ログ設定コードで設定を調整できる場合があります)。

  • Python の標準loggingモジュールを使用します。

  • ローテーションファイル ハンドラー (例: 10 MB 制限、5 つのバックアップ) とコンソール ハンドラー (通常は INFO レベル) が含まれます。

  • ログには、タイムスタンプ、レベル、ロガー名、メッセージ、処理中の思考の構造化された表現が含まれます。

発達

  1. リポジトリをクローンします: (インストール時と同様)

    git clone git@github.com:FradSer/mcp-server-mas-sequential-thinking.git cd mcp-server-mas-sequential-thinking
  2. 仮想環境の設定: (推奨)

    python -m venv .venv source .venv/bin/activate # On Windows use `.venv\\Scripts\\activate`
  3. 依存関係をインストールします (dev を含む): requirements-dev.txtまたはpyproject.tomlで開発ツール ( pytestruffblackmypyなど) が指定されていることを確認します。

    # Using uv uv pip install -r requirements.txt uv pip install -r requirements-dev.txt # Or install extras if defined in pyproject.toml: uv pip install -e ".[dev]" # Using pip pip install -r requirements.txt pip install -r requirements-dev.txt # Or install extras if defined in pyproject.toml: pip install -e ".[dev]"
  4. **チェックの実行:**リンター、フォーマッタ、テストを実行します (プロジェクトの設定に基づいてコマンドを調整します)。

    # Example commands (replace with actual commands used in the project) ruff check . --fix black . mypy . pytest
  5. 貢献: (貢献ガイドラインの追加を検討してください: ブランチ戦略、プル リクエスト プロセス、コード スタイル)。

ライセンス

マサチューセッツ工科大学

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

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/FradSer/mcp-server-mas-sequential-thinking'

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