使用说明

项目简介

本项目实现了一个基于FastMCP框架的MCP服务器,核心功能是通过多智能体系统 (MAS) 进行顺序思考。它模拟人类逐步分析问题的过程,将复杂任务分解为多个思考步骤,并由不同的专业智能体协同完成,从而提供更深入、更全面的问题分析能力。该服务器通过MCP协议与客户端通信,提供 'sequentialthinking' 工具,允许LLM客户端驱动多智能体系统进行复杂问题的顺序思考分析。

主要功能点

  • 顺序思考流程: 支持将复杂问题分解为多个顺序思考步骤,模拟人类逐步分析问题的过程。
  • 多智能体系统 (MAS): 内置由多个专业智能体(如策略规划师、研究员、分析师、质量控制员、综合专家)组成的团队,每个智能体负责特定方面的分析,协同工作提高分析质量。
  • 可配置的API Key: 支持 DeepSeek 和 Exa API Key 配置,允许用户根据自身需求配置API密钥。Exa API Key 用于研究员智能体进行外部知识检索。
  • 详细日志记录: 提供全面的日志记录,方便用户跟踪思考过程和调试问题。
  • 灵活的思考步骤控制: 客户端可以灵活控制思考步骤,包括指定总步骤数、是否需要下一步、是否为修订步骤、是否分支思考等。
  • 最少思考深度: 强制执行最少5个思考步骤,保证分析的深度。
  • 自动步骤引导: 根据当前分析阶段,提供下一步的思考方向建议。
  • 智能参数校验: 对客户端输入的参数进行校验,保证思考链的完整性。

安装步骤

  1. 环境准备: 确保已安装 Python 3.10 或更高版本。推荐使用 'uv' 包管理器加速依赖安装。
  2. 设置环境变量: 配置 DeepSeek API Key 和 Exa API Key (如果需要使用研究功能)。创建 '.env' 文件或直接在shell环境中设置以下环境变量:
    export DEEPSEEK_API_KEY="your_deepseek_api_key_here"
    export DEEPSEEK_BASE_URL="your_deepseek_api_url_here" # 如果使用 DeepSeek API 的自定义 URL,则配置
    export EXA_API_KEY="your_exa_api_key_here"      # 可选,如果需要研究功能则配置
  3. 安装依赖: 使用 'uv' (推荐) 或 'pip' 安装项目依赖。

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置以下 JSON 格式信息才能连接到本 MCP 服务器。请根据实际情况修改 'command' 和 'args' 字段。

{
  "serverName": "sequential-thinking-mas-server",  // 自定义服务器名称,用于MCP客户端识别
  "command": "python",                         // 启动 MCP 服务器的命令,这里是 python 解释器
  "args": ["main.py"],                         // 启动命令的参数,这里是 main.py 脚本
  "transport": "stdio",                        //  MCP 服务器使用的传输协议,本项目使用 stdio
  "timeout": 60                                // 可选,客户端连接超时时间设置,单位秒
}

配置说明:

  • 'serverName': MCP 服务器的名称,客户端用此名称来标识和选择服务器。可以自定义。
  • 'command': 启动 MCP 服务器进程的命令。由于服务器代码是 Python 脚本 'main.py',因此这里使用 'python' 命令。
  • 'args': 传递给启动命令的参数。这里指定要运行的 Python 脚本是 'main.py'。
  • 'transport': MCP 服务器使用的传输协议。本项目 'main.py' 代码中使用 'mcp.run(transport="stdio")',因此客户端配置为 '"stdio"'。
  • 'timeout': (可选) 客户端等待连接建立的超时时间,单位为秒。可以根据网络环境和服务器启动速度进行调整。

请注意:

  • 确保 MCP 客户端能够找到 'python' 命令,或者将 'python' 的完整路径配置在 'command' 中。
  • 'main.py' 脚本需要在 MCP 客户端能够访问到的目录下。如果客户端和服务器部署在不同机器上,需要将 'main.py' 及相关代码部署到服务器端。

基本使用方法

  1. 启动 MCP 服务器: 在安装好依赖并配置好环境变量后,在项目根目录下运行 'python main.py' 命令启动 MCP 服务器。服务器将通过 stdio 监听 MCP 客户端的请求。
  2. 配置 MCP 客户端: 在 MCP 客户端中,添加上述提供的 JSON 配置信息,以连接到本 MCP 服务器。
  3. 调用 'sequentialthinking' 工具: 客户端可以使用 'sequentialthinking' 工具进行顺序思考分析。工具接受 'thought' (思考内容), 'thoughtNumber' (思考步骤序号), 'totalThoughts' (总思考步骤数), 'nextThoughtNeeded' (是否需要下一步思考) 等参数。具体参数定义和使用示例请参考仓库 'README.md' 文件中 "Usage" 部分的说明和示例代码。
  4. 使用 'sequential-thinking-starter' Prompt: 客户端可以使用 'sequential-thinking-starter' Prompt 启动顺序思考流程,Prompt 接受 'problem' (问题描述) 和 'context' (可选的上下文信息) 参数。Prompt 会返回启动顺序思考的指令,引导客户端调用 'sequentialthinking' 工具进行后续步骤。

示例 (MCP 客户端 Python 代码):

from mcp.client import MCPClient
import asyncio

async def main():
    client = MCPClient()

    # 启动顺序思考流程
    starter_response = await client.call_prompt("sequential-thinking-starter", {"problem": "分析电动汽车市场未来五年的发展趋势。", "context": "假设我们是一家投资机构,正在评估电动汽车市场的投资机会。"})
    print("Starter Prompt Response:", starter_response)

    # 获取第一个思考步骤的工具调用参数 (假设 starter prompt 返回了调用 sequentialthinking 工具的参数)
    tool_call_params_step1 = starter_response['messages'][0]['content']['tool_code']['parameters']

    # 调用 sequentialthinking 工具进行第一个思考步骤
    step1_response = await client.call_tool("sequentialthinking", tool_call_params_step1)
    print("Step 1 Response:", step1_response)

    # ... 后续步骤,根据 step1_response 中的 'nextThoughtNeeded' 决定是否继续调用 sequentialthinking 工具 ...

if __name__ == "__main__":
    asyncio.run(main())

请根据实际需求和 'README.md' 文档中的详细说明,调整和扩展使用方法。

信息

分类

AI与计算