TradingAgents-MCPmode 深度分析报告与用户手册

TradingAgents-MCPmode 深度分析报告与用户手册

基于 GitHub 开源项目源码的完整技术分析
版本:v1.0 | 分析日期:2026-04-02 | 分析者:雨轩


第一章 项目概述

1.1 项目定位

TradingAgents-MCPmode 是一个基于 MCP(Model Context Protocol)工具的多智能体交易分析系统。它通过 15 个专业化 AI Agent 的协作,模拟真实投研团队的工作流程,从多维度分析股票并提供交易决策建议。

该项目是原版 TradingAgents(GitHub 39k+ Star,清华唐杰教授门生肖易佳团队开发)的增强版本,主要改进包括:将数据源从 FinnHub 切换为支持 A 股的 MCP 工具链、新增股东分析师和产品分析师、引入三方风险辩论机制、提供完整的 Streamlit Web 前端。

1.2 技术栈

组件 技术选型
Agent 编排 LangGraph(有状态图)
LLM 接口 LangChain + OpenAI 兼容 API
MCP 工具 langchain-mcp-adapters
Web 前端 Streamlit
数据源 finance-mcp(基于 Tushare)
异步运行 asyncio + Python 3.12/3.13

1.3 项目文件结构

核心文件包括:main.py(CLI入口)、web_app.py(Streamlit前端)、mcp_config.json(MCP配置)、.env(环境变量)。src/目录下包含base_agent.py(Agent基类)、agent_states.py(状态定义)、mcp_manager.py(MCP工具管理器)、workflow_orchestrator.py(LangGraph工作流编排)、progress_tracker.py(进度追踪)。agents/子目录包含analysts.py(7个分析师)、researchers.py(看涨/看跌研究员)、managers.py(研究经理+交易员)、risk_management.py(风险团队4个Agent)。


第二章 系统架构深度解析

2.1 五阶段工作流

系统采用严格的流水线架构,数据从左到右单向流动:

阶段 0:公司概述 -- CompanyOverviewAnalyst 串行执行,获取公司全名、股票代码、市场、业务领域等基础信息,填充 company_details 字段。这是唯一串行阶段,先于所有其他 Agent。

阶段 1:并行分析 -- 6 个分析师(Market、Sentiment、News、Fundamentals、Shareholder、Product)使用 copy.deepcopy(state) + asyncio.gather 并行执行。每个 Agent 获得独立 state 副本,分析完成后智能合并报告字段(后到者不覆盖非空已有值),完全避免竞态条件。

阶段 2:投资辩论 -- BullResearcher 与 BearResearcher 循环辩论。首轮为独立论证,后续轮为针对性反驳。辩论轮数 = ceil((count+1)/2),由 max_debate_rounds 控制。

阶段 3:管理层决策 -- ResearchManager 评估辩论结果做出投资决策(买入/卖出/持有),Trader 将决策转化为可执行交易计划(入场价位、止损止盈、应急预案)。

阶段 4:风险辩论与最终决策 -- 激进/保守/中性三方循环辩论,RiskManager 做出最终风险管理决策。

2.2 LangGraph 状态图设计

工作流编排使用 LangGraph StateGraph 构建。核心设计模式:

  1. 条件边(Conditional Edges):根据辩论轮次动态决定下一步。_should_continue_investment_debate 和 _should_continue_risk_debate 在每轮发言后判断是否继续。

  2. 深拷贝并行:analysts_parallel_node 中对每个分析师创建 state 的深拷贝,避免并发冲突。合并时按字段逐个检查,非空值不覆盖。

  3. 智能体动态开关:禁用的 Agent 被跳过但工作流继续推进。辩论类 Agent 跳过时递增轮次计数器,防止无限循环。

  4. 协作式取消:asyncio.wait + FIRST_COMPLETED + 0.3秒轮询,支持中途取消。

2.3 AgentState 状态模型

通过 Pydantic 的 AgentState(MessagesState) 定义,是系统数据总线。核心字段包括:user_query(用户输入)、company_details(仅分析师可见)、7份 *_report、investment_debate_state(含 history/bull_history/bear_history/current_response/count)、investment_plan、trader_investment_plan、risk_debate_state(三方,多一个 neutral_history)、final_trade_decision、mcp_tool_calls、agent_execution_history、errors/warnings。

信息传递严格分级:company_details 仅给分析师,报告全量传递,辩论历史累积传递。


第三章 15 个 Agent 详解

3.1 基类设计(BaseAgent)

base_agent.py 定义通用行为。call_llm_with_context 是统一的 LLM 调用入口,流程为:确保实例创建 -> 构建系统提示 + 输出格式要求 -> 构建上下文 -> MCP 启用时用 create_react_agent 创建 ReAct Agent,否则直接 llm.ainvoke -> MCP 失败时自动降级。

输出格式规范:全局要求连续段落表述,不使用 Markdown 标题符号、项目符号或编号。这确保了报告可读性,但牺牲了结构化信息提取能力。

3.2 分析师团队(7 个 Agent)

所有分析师默认启用 MCP 工具,可访问 company_details,并行执行互不依赖。

CompanyOverviewAnalyst:获取公司全名、股票代码、市场、业务领域、竞争对手。唯一能填充 company_details 的 Agent。

MarketAnalyst:技术指标(MA/RSI/MACD/布林带)、交易量、支撑位/阻力位。根据股票代码判断市场类型。

SentimentAnalyst:社交媒体情绪、投资者心理、散户vs机构差异。识别情绪极端点。

NewsAnalyst:最新新闻、政策变化、行业动态。评估新闻对股价影响。

FundamentalsAnalyst:财务报表(收入/利润/现金流/资产负债)、估值(PE/PB/DCF)。要求获取最近两个完整财政年度财报,同行业对比。

ShareholderAnalyst(MCP版新增):股东户数变化、前十大股东、大宗交易、机构动向。核心逻辑:股东户数减少=筹码集中=看涨信号。

ProductAnalyst(MCP版新增):主营业务构成、产品竞争力、商业模式、客户集中度、供应链稳定性。

3.3 研究员团队(2 个 Agent)

研究员默认不使用 MCP 工具,专注于综合分析和辩论。

BullResearcher:首轮构建看涨案例(竞争优势、增长潜力、被低估价值),后续轮反驳看跌观点。策略:承认风险但强调机会大于风险。

BearResearcher:首轮独立风险分析,后续轮反驳看涨观点。策略:识别风险盲点、质疑过度乐观假设、强调被忽视的负面因素。

3.4 管理层(2 个 Agent)

ResearchManager:评估辩论论证质量,综合风险收益比,做出买入/卖出/持有决策。输出 investment_plan。

Trader:将投资决策转化为可执行交易计划(方向、价位、时机、止损止盈、应急预案)。输出 trader_investment_plan。

3.5 风险管理团队(4 个 Agent)

AggressiveRiskAnalyst:哲学为高风险高回报,关注机会成本和主动管理能力。

SafeRiskAnalyst:资本保护优先,关注下行风险和黑天鹅事件,偏好分散投资和对冲。

NeutralRiskAnalyst:客观平衡,基于数据和概率,关注风险调整后收益。

RiskManager:综合三方观点,做出最终交易执行决策(批准/拒绝/修改/附加监控)。


第四章 MCP 工具集成机制

4.1 MCPManager 设计

mcp_manager.py 负责四个核心职责:LLM 初始化、MCP 客户端管理、权限控制、工具分发。

4.2 配置陷阱

mcp_manager.py 从环境变量 LLM_MODEL、LLM_API_KEY、LLM_BASE_URL 读取配置,但 .env.example 中示例使用的是 OPENAI_API_KEY、OPENAI_BASE_URL、MODEL_NAME。这两套变量名不一致。部署时需要在 .env 中同时设置 LLM_* 变量,或者确认代码使用哪套命名。

4.3 MCP 客户端初始化

通过 MultiServerMCPClient 连接配置文件中定义的所有 MCP 服务器。对每个服务器:逐个获取工具列表,工具名合法化(去除特殊字符),去重检查,按服务器分组存储。连接失败的服务器被跳过。

4.4 权限控制

每个 Agent 的 MCP 权限通过环境变量 {AGENT_NAME}_MCP_ENABLED=true/false 独立控制,默认全部关闭。被禁用的 Agent 仍正常执行,只是无法调用外部数据源。


第五章 部署与配置指南

5.1 环境要求

Python 3.12+,可访问的 LLM API(OpenAI 兼容端点),Tushare API Key(A 股数据),至少 2GB 可用内存。

5.2 安装步骤

克隆项目,创建虚拟环境,安装依赖(pip install -r requirements.txt),复制 .env.example 为 .env 并配置 API Key,编辑 mcp_config.json 配置 MCP 服务器。

5.3 环境变量配置

核心配置包括:OPENAI_API_KEY(LLM API 密钥)、OPENAI_BASE_URL(API 端点)、MODEL_NAME(模型名称)、MAX_DEBATE_ROUNDS(投资辩论轮次,默认 1)、MAX_RISK_DEBATE_ROUNDS(风险辩论轮次,默认 1)。每个 Agent 有独立的 MCP 开关变量。

5.4 MCP 工具配置

mcp_config.json 中配置 MCP 服务器地址和认证信息。默认使用 finvestai.top/mcp 端点,需要 Tushare Token 进行认证。支持 streamable_http 传输协议。

5.5 启动方式

Web 前端:streamlit run web_app.py --server.port 8501

命令行:python main.py -c 分析苹果公司股票

5.6 Web 前端功能

首页系统概览、系统配置(在线编辑 .env 和 MCP 配置)、实时分析(输入查询并监控进度)、智能体控制(动态启用/禁用特定 Agent)、辩论配置(实时调整辩论轮次)、智能体页面(按团队查看分析结果)、历史报告(管理历史会话,支持 Markdown/PDF/DOCX 导出)。


第六章 使用示例

6.1 快速体验模式

启用全部 7 个分析师 + 仅看涨研究员 + 投资辩论 1 轮 + 跳过风险辩论。预计 1-2 分钟完成,获得 7 份分析报告 + 看涨投资建议。

6.2 深度分析模式

启用全部 15 个 Agent + 投资辩论 2 轮 + 风险辩论 1 轮。预计 5-10 分钟完成,获得完整的多维度分析和风险管理决策。

6.3 自然语言查询

支持中英文自然语言查询,无需指定市场或日期。例如:分析特斯拉股票、给我分析一下600036招商银行、分析NVDA的投资价值。系统自动识别股票代码和市场类型。


第七章 技术优势与局限性

7.1 核心优势

多空对抗辩论:强制反证机制是真正的亮点。大多数 AI 交易系统只有单向分析,缺少对立视角的挑战。看涨/看跌研究员的辩论机制模仿了专业投研的魔鬼代言人制度。

并行化架构:6 个分析师并发执行,理论效率提升 5-6 倍。深拷贝方案虽然牺牲内存,但避免了复杂的锁机制。

灵活的工作流控制:前端可动态开关 Agent 和调整辩论轮次,用户可以在快速体验和深度分析之间自由切换。

信息分级传递:company_details 仅给分析师、报告全量传递、辩论历史累积传递。这种设计避免了信息过载,每个 Agent 在最适合的信息密度下工作。

MCP 工具解耦:数据源通过 MCP 协议解耦,可以灵活替换不同的数据提供商而不修改 Agent 代码。

7.2 局限性

输出格式限制:全局要求连续段落、不使用标题符号降低了报告的结构化程度,不利于后续自动化处理。

数据源依赖:默认 MCP 端点(finvestai.top)依赖 Tushare Token,免费版有调用频率限制。没有 Tushare Token 的分析师会降级为无工具模式,只能依赖 LLM 的历史知识。

模型成本:15 个 Agent 串联执行,每次分析消耗大量 Token。以 qwen3.5-plus 计算,一次完整分析(15 Agent + 2 轮辩论)可能消耗 50k-100k Token。

单模型同质化风险:所有 Agent 使用同一个 LLM,辩论的多样性实际上来自 Prompt 的角色差异,而非真正的多视角。同一个模型很难真正反对自己。

回测 vs 实盘:系统生成的投资建议基于当前快照数据,不包含回测验证。学术论文中的回测结果不能直接代表实盘表现。

Prompt 硬编码:所有 Agent 的系统提示词写在 Python 代码中,修改需要改代码重启服务,不如配置文件灵活。

7.3 改进建议

  1. 输出格式可配置化:允许用户选择 Markdown 格式或连续段落格式
  2. 多模型支持:让看涨/看跌研究员使用不同模型,增强辩论多样性
  3. 数据源热插拔:支持同时配置多个 MCP 数据源,自动选择最优数据源
  4. 历史回测集成:接入回测框架,验证投资建议的历史表现
  5. Agent Prompt 外部化:将系统提示词移到配置文件或数据库中
  6. 成本监控面板:实时显示每个 Agent 的 Token 消耗和 API 成本

第八章 与原版 TradingAgents 对比

维度 原版 MCP版
分析师数量 4 7(+股东、产品、公司概述)
辩论模式 2方(多/空) 2方投资+3方风险
数据源 FinnHub MCP/Tushare(支持A股)
Web 前端 CLI 为主 Streamlit 完整界面
Agent 控制 全部启用 动态开关
辩论轮次 配置文件 前端实时调整
报告导出 Markdown Markdown+PDF+DOCX
技术栈 LangGraph LangGraph+MCP

第九章 安全与合规提示

  1. 本系统仅供研究和学习用途,不构成投资建议
  2. LLM 生成的分析可能包含事实错误或过时信息
  3. 实盘交易需经过专业合规审查
  4. API Key 和 Tushare Token 应妥善保管,不要提交到公开仓库
  5. 系统会通过 MCP 工具调用外部数据源,注意网络安全

雨轩于听雨轩 :house_with_garden: