Sequential Thinking Multi-Agent System

by FradSer
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports configuration through environment variables, allowing secure storage of API keys for external services like DeepSeek and Exa.

  • Enables robust data validation for thought steps in the sequential thinking process, ensuring input integrity before processing by the agent team.

  • Leverages the Python AI/ML ecosystem for implementing the Multi-Agent System architecture, supporting advanced sequential thinking capabilities.

Sistema multiagente de pensamiento secuencial (MAS)

Inglés | Chino tradicional

Este proyecto implementa un proceso avanzado de pensamiento secuencial mediante un Sistema Multiagente (MAS) desarrollado con el framework Agno y gestionado mediante MCP . Representa una evolución significativa respecto a los enfoques más sencillos de seguimiento de estados, aprovechando agentes especializados coordinados para un análisis más profundo y la descomposición de problemas.

Descripción general

Este servidor proporciona una sofisticada herramienta sequentialthinking diseñada para la resolución de problemas complejos. A diferencia de su predecesor , esta versión utiliza una verdadera arquitectura de Sistema Multiagente (MAS) donde:

  • Un agente coordinador (el objeto Team en modo coordinate ) administra el flujo de trabajo.
  • Los agentes especializados (planificador, investigador, analizador, crítico, sintetizador) manejan subtareas específicas según sus roles y experiencia definidos.
  • El equipo de agentes procesa, analiza y sintetiza activamente los pensamientos entrantes, no solo los registra.
  • El sistema admite patrones de pensamiento complejos que incluyen revisiones de pasos anteriores y ramificaciones para explorar caminos alternativos.
  • La integración con herramientas externas como Exa (a través del agente Researcher) permite la recopilación de información dinámica.
  • La sólida validación de Pydantic garantiza la integridad de los datos durante todos los pasos del proceso.
  • El registro detallado rastrea el proceso, incluidas las interacciones de los agentes (gestionadas por el coordinador).

El objetivo es lograr una mayor calidad de análisis y un proceso de pensamiento más matizado que el que es posible con un solo agente o un simple seguimiento de estados, aprovechando el poder de roles especializados que trabajan en colaboración.

Diferencias clave con respecto a la versión original (TypeScript)

Esta implementación de Python/Agno marca un cambio fundamental con respecto a la versión original de TypeScript:

Característica/AspectoVersión de Python/Agno (actual)Versión de TypeScript (original)
ArquitecturaSistema Multiagente (MAS) ; Procesamiento activo por un equipo de agentes.Rastreador de estado de clase única ; registro y almacenamiento sencillos.
InteligenciaLógica de agente distribuido ; integrada en agentes especializados y coordinador.Solo LLM externo ; sin inteligencia interna.
TratamientoAnálisis y síntesis activa ; los agentes actúan sobre el pensamiento.Registro pasivo ; simplemente registra el pensamiento.
MarcosAgno (MAS) + FastMCP (Servidor) ; Utiliza una biblioteca MAS dedicada.Sólo SDK de MCP .
CoordinaciónLógica explícita de coordinación de equipo ( Team en modo coordinate ).Ninguno ; No existe concepto de coordinación.
ValidaciónValidación de esquemas de Pydantic ; Validación de datos robusta.Comprobaciones de tipo básicas : menos fiables.
Herramientas externasIntegrado (Exa vía Investigador) ; Puede realizar tareas de investigación.Ninguno .
Explotación florestalRegistro estructurado de Python (archivo + consola) ; configurable.Registro de consola con Chalk ; Básico.
Lenguaje y ecosistemaPython ; Aprovecha el ecosistema AI/ML de Python.TipoScript/Node.js .

En esencia, el sistema evolucionó desde un registrador de pensamientos pasivo a un procesador de pensamientos activo impulsado por un equipo colaborativo de agentes de IA.

Cómo funciona (modo de coordenadas)

  1. Iniciación: un LLM externo utiliza el mensaje sequential-thinking-starter para definir el problema e iniciar el proceso.
  2. Llamada a la herramienta: El LLM llama a la herramienta sequentialthinking con el primer pensamiento (o subsiguiente), estructurado de acuerdo con el modelo ThoughtData .
  3. Validación y registro: la herramienta recibe la llamada, valida la entrada usando Pydantic, registra el pensamiento entrante y actualiza el historial/estado de la rama a través de AppContext .
  4. Invocación del coordinador: el contenido del pensamiento central (con contexto sobre revisiones/ramas) se pasa al método arun del SequentialThinkingTeam .
  5. Análisis y delegación del coordinador: el Team (que actúa como coordinador) analiza el pensamiento de entrada, lo divide en subtareas y delega estas subtareas a los agentes especializados más relevantes (por ejemplo, el analizador para las tareas de análisis, el investigador para las necesidades de información).
  6. Ejecución especializada: los agentes delegados ejecutan sus subtareas específicas utilizando sus instrucciones, modelos y herramientas (como ThinkingTools o ExaTools ).
  7. Recopilación de respuestas: Los especialistas devuelven sus resultados al Coordinador.
  8. Síntesis y orientación: El coordinador sintetiza las respuestas de los especialistas en un resultado único y coherente. Puede incluir recomendaciones de revisión o ramificación según las conclusiones de los especialistas (especialmente del crítico y el analista). También proporciona orientación al LLM para formular la siguiente idea.
  9. Valor de retorno: la herramienta devuelve una cadena JSON que contiene la respuesta sintetizada del Coordinador, el estado y el contexto actualizado (ramas, longitud del historial).
  10. Iteración: el LLM que realiza la llamada utiliza la respuesta y la guía del Coordinador para formular la siguiente llamada a la herramienta de sequentialthinking , lo que potencialmente desencadena revisiones o ramas según lo sugerido.

Advertencia sobre el consumo de tokens

⚠️ Alto consumo de tokens: Debido a la arquitectura del sistema multiagente, esta herramienta consume muchos más tokens que las alternativas de un solo agente o la versión anterior de TypeScript. Cada llamada sequentialthinking invoca: * El agente coordinador (el propio Team ). * Múltiples agentes especialistas (posiblemente Planificador, Investigador, Analizador, Crítico, Sintetizador, según la delegación del Coordinador).

Este procesamiento paralelo genera un uso de tokens considerablemente mayor (potencialmente de 3 a 6 veces o más por paso de pensamiento) en comparación con los enfoques de agente único o de seguimiento de estado. Planifique y calcule el presupuesto en consecuencia. Esta herramienta prioriza la profundidad y la calidad del análisis sobre la eficiencia de los tokens.

Prerrequisitos

  • Python 3.10+
  • Acceso a una API LLM compatible (configurada para agno ). El sistema ahora admite:
    • Groq: Requiere GROQ_API_KEY .
    • DeepSeek: requiere DEEPSEEK_API_KEY .
    • OpenRouter: requiere OPENROUTER_API_KEY .
    • Configure el proveedor deseado utilizando la variable de entorno LLM_PROVIDER (predeterminada en deepseek ).
  • Clave API de Exa (si se utilizan las capacidades del agente Investigador)
    • Variable de entorno EXA_API_KEY .
  • Gestor de paquetes uv (recomendado) o pip .

Configuración del servidor MCP (lado del cliente)

Este servidor se ejecuta como un script estándar que se comunica mediante stdio, como lo espera MCP. El método de configuración exacto depende de la implementación específica de su cliente MCP. Consulte la documentación de su cliente para obtener más información.

La sección env debe incluir la clave API para el LLM_PROVIDER elegido.

{ "mcpServers": { "mas-sequential-thinking": { "command": "uvx", "args": [ "mcp-server-mas-sequential-thinking" ], "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 } } } }

Instalación y configuración

  1. Clonar el repositorio:
    git clone git@github.com:FradSer/mcp-server-mas-sequential-thinking.git cd mcp-server-mas-sequential-thinking
  2. Establecer variables de entorno: cree un archivo .env en el directorio raíz o exporte las variables:
    # --- 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" # OPENROUTER_AGENT_MODEL_ID="deepseek/deepseek-chat-v3-0324" # --- External Tools --- # Required ONLY if the Researcher agent is used and needs Exa EXA_API_KEY="your_exa_api_key"
    Nota sobre la selección del modelo:
    • El TEAM_MODEL_ID lo utiliza el Coordinador (el objeto Team ). Esta función requiere sólidas capacidades de razonamiento, síntesis y delegación. Usar un modelo más potente (como deepseek-r1 , claude-3-opus o gpt-4-turbo ) suele ser beneficioso, incluso si es más lento o costoso.
    • El AGENT_MODEL_ID lo utilizan los agentes especialistas (Planificador, Investigador, etc.). Estos agentes gestionan subtareas más específicas. Puede elegir un modelo más rápido o rentable (como deepseek-v3 , claude-3-sonnet o llama3-70b ) para los especialistas, según la complejidad de las tareas que suelen gestionar y sus requisitos de presupuesto y rendimiento.
    • Los valores predeterminados proporcionados en main.py (p. ej., deepseek-reasoner para agentes al usar DeepSeek) son puntos de partida. Se recomienda experimentar para encontrar el equilibrio óptimo para su caso de uso específico.
  3. Dependencias de instalación:
    • Uso de uv (recomendado):
      # Install uv if you don't have it: # curl -LsSf [https://astral.sh/uv/install.sh](https://astral.sh/uv/install.sh) | sh # source $HOME/.cargo/env # Or restart your shell uv pip install -r requirements.txt # Or if a pyproject.toml exists with dependencies: # uv pip install .
    • Usando pip :
      pip install -r requirements.txt # Or if a pyproject.toml exists with dependencies: # pip install .

Uso

Ejecute el script del servidor (asumiendo que el script principal se llama main.py o similar según la estructura de su archivo):

python your_main_script_name.py

El servidor se iniciará y escuchará las solicitudes a través de stdio, lo que hará que la herramienta sequentialthinking esté disponible para clientes MCP compatibles (como ciertos LLM o marcos de prueba).

Parámetros de la herramienta sequentialthinking

La herramienta espera argumentos que coincidan con el modelo Pydantic ThoughtData :

# Simplified representation { "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 branch "needsMoreThoughts": bool = False # Signal if estimate is too low before last step }

Interactuando con la herramienta (Ejemplo conceptual)

Un LLM interactuaría con esta herramienta de forma iterativa:

  1. LLM: Utiliza sequential-thinking-starter plantear el problema.
  2. LLM: Llama a la herramienta sequentialthinking con thoughtNumber: 1 , thought inicial (por ejemplo, "Planifique el análisis..."), estimación de totalThoughts , nextThoughtNeeded: True .
  3. Servidor: MAS procesa el pensamiento -> El coordinador sintetiza la respuesta y brinda orientación (por ejemplo, "Plan de análisis completo. Sugiero investigar X a continuación. No se recomiendan revisiones todavía").
  4. LLM: recibe una respuesta JSON que contiene coordinatorResponse .
  5. LLM: Formula el siguiente pensamiento (por ejemplo, "Investiga X usando Exa...") basándose en la coordinatorResponse .
  6. LLM: Llama a la herramienta sequentialthinking con thoughtNumber: 2 , el nuevo thought , totalThoughts actualizado (si es necesario), nextThoughtNeeded: True .
  7. Servidor: Procesos MAS -> El coordinador sintetiza (por ejemplo, "Investigación completa. Los hallazgos sugieren una falla en la suposición del pensamiento n.° 1. RECOMENDACIÓN: Revisar el pensamiento n.° 1...").
  8. LLM: Recibe respuesta, ve la recomendación.
  9. LLM: Formula un pensamiento de revisión.
  10. LLM: Llama a la herramienta sequentialthinking con thoughtNumber: 3 , el thought de revisión, isRevision: True , revisesThought: 1 , nextThoughtNeeded: True .
  11. ...y así sucesivamente, ramificándose o ampliándose potencialmente según sea necesario.

Formato de respuesta de la herramienta

La herramienta devuelve una cadena JSON que contiene:

{ "processedThoughtNumber": int, "estimatedTotalThoughts": int, "nextThoughtNeeded": bool, "coordinatorResponse": "Synthesized output from the agent team, including analysis, findings, and guidance for the next step...", "branches": ["list", "of", "branch", "ids"], "thoughtHistoryLength": int, "branchDetails": { "currentBranchId": "main | branchId", "branchOriginThought": null | int, "allBranches": {"main": count, "branchId": count, ...} }, "isRevision": bool, "revisesThought": null | int, "isBranch": bool, "status": "success | validation_error | failed", "error": "Error message if status is not success" // Optional }

Explotación florestal

  • Los registros se escriben en ~/.sequential_thinking/logs/sequential_thinking.log .
  • Utiliza el módulo logging estándar de Python.
  • Incluye un controlador de archivos rotatorio (límite de 10 MB, 5 copias de seguridad) y un controlador de consola (nivel INFO).
  • Los registros incluyen marcas de tiempo, niveles, nombres de registradores y mensajes, incluidas representaciones de pensamientos formateadas.

Desarrollo

(Agregue pautas de desarrollo aquí si corresponde, por ejemplo, configuración de entornos de desarrollo, ejecución de pruebas, análisis de errores).

  1. Clonar el repositorio.
  2. Configurar un entorno virtual.
  3. Instalar dependencias, que podrían incluir extras de desarrollo:
    # Using uv uv pip install -e ".[dev]" # Using pip pip install -e ".[dev]"
  4. Ejecutar linters/formateadores/pruebas.

Licencia

Instituto Tecnológico de Massachusetts (MIT)

-
security - not tested
F
license - not found
-
quality - not tested

Un servidor MCP avanzado que implementa un pensamiento secuencial sofisticado utilizando un equipo coordinado de agentes de IA especializados (planificador, investigador, analizador, crítico, sintetizador) para analizar profundamente los problemas y proporcionar un razonamiento estructurado de alta calidad.

  1. Overview
    1. Key Differences from Original Version (TypeScript)
      1. How it Works (Coordinate Mode)
        1. Token Consumption Warning
          1. Prerequisites
            1. MCP Server Configuration (Client-Side)
              1. Installation & Setup
                1. Usage
                  1. sequentialthinking Tool Parameters
                  2. Interacting with the Tool (Conceptual Example)
                  3. Tool Response Format
                2. Logging
                  1. Development
                    1. License
                      ID: 3i5xp9fksy