尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于 mcp-agent 的智能金融分析 Agent:用 EvaluatorOptimizer + Orchestrator 打造数据可信的上市公司研究报告

基于 mcp-agent 的智能金融分析 Agent:用 EvaluatorOptimizer + Orchestrator 打造数据可信的上市公司研究报告 基于 mcp-agent 的智能金融分析 Agent用 EvaluatorOptimizer Orchestrator 打造数据可信的上市公司研究报告【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent本指南围绕开源仓库mcp-agent中的实战示例 examples/usecases/mcp_financial_analyzer完整讲解如何构建一个先验证数据、再深度分析的金融分析 Agent它通过 Google 搜索 MCP 服务器采集公司财务数据用 EvaluatorOptimizer 质量反馈循环把数据打磨到合格标准再交给分析师与报告撰写 Agent 输出机构级 Markdown 报告。读完本文你将掌握 EvaluatorOptimizerLLM 与 Orchestrator 的组合编排方式、Agent 提示词设计范式以及完整的本地运行与配置方法。示例概览为什么金融分析要先验证数据MCP Financial Analyzer 是一个端到端的金融分析 Agent 应用给它一个公司名称它就能自动完成搜索数据 → 评估数据质量 → 迭代补全 → 深度分析 → 生成报告的完整流水线最终在本地文件系统落盘一份专业的 Markdown 研究报告。这个示例的核心设计理念是在进入分析阶段之前先确保底层数据的质量。金融报告的价值完全取决于基础数据是否准确、完整、时效性强因此它把数据验证提升为一等公民——Research Agent 与 Research Evaluator 组成一个反馈循环直到数据达到预定的质量评级才放行避免把幻觉或过时数据带进后续的分析与报告。系统架构五个角色的协作分工该示例将整个工作流拆分为五个协作组件其数据流如下源自 README.md 的架构图┌──────────────┐ ┌──────────────────┐ ┌────────────────────┐ │ Orchestrator │─────▶│ Research Quality │─────▶│ Research │◀─┐ │ Workflow │ │ Controller │ │ Agent │ │ └──────────────┘ └──────────────────┘ └────────────────────┘ │ │ │ │ │ │ │ │ ▼ │ │ ┌────────────────────┐ │ │ │ Research Evaluator ├──┘ │ │ Agent │ │ └────────────────────┘ │ ┌─────────────────┐ └────────────▶│ Analyst Agent │ │ └─────────────────┘ │ ┌─────────────────┐ └────────────▶│ Report Writer │ │ Agent │ └─────────────────┘各角色的职责Orchestrator编排器总控整个流程负责在 Agent 之间调度数据流并确保每个步骤成功完成Research Agent数据采集 Agent与 Research Evaluator数据质量评估 Agent二者形成反馈闭环——采集 Agent 负责收集数据评估 Agent 负责审查其质量EvaluatorOptimizer研究质量控制组件管理这个反馈循环评估产出并指挥 Research Agent 持续改进数据直到达到 EXCELLENT 质量评级或示例配置的最低门槛 GOODAnalyst Agent分析师 Agent基于已验证的高质量数据提炼关键投资洞察Report Writer报告撰写 Agent生成专业的 Markdown 报告并写入文件系统。这种编排方式确保了报告质量在开始分析之前先聚焦于数据验证Research Agent 与 Research Evaluator 反复迭代直至 EvaluatorOptimizer 判定数据满足质量要求。环境准备与安装步骤克隆仓库并进入示例目录git clone https://github.com/lastmile-ai/mcp-agent.git cd mcp-agent/examples/usecases/mcp_financial_analyzer安装 uv 并同步依赖如果尚未安装uv先通过 pip 安装pip install uv同步mcp-agent项目依赖uv sync安装本示例专属的依赖见 requirements.txt包含mcp-agent、openai、anthropic三个包uv pip install -r requirements.txt安装 g-search-mcp 搜索引擎服务本示例依赖第三方 MCP 服务器 g-search-mcp 提供 Google 搜索能力通过 npm 全局安装npm install -g g-search-mcp配置文件与密钥设置复制并配置 secrets 文件示例使用mcp_agent.secrets.yaml存放 LLM 提供商密钥需先从模板复制cp mcp_agent.secrets.yaml.example mcp_agent.secrets.yaml然后在mcp_agent.secrets.yaml中填入你偏好的 LLM本示例默认使用 OpenAI的 API Key模板见 mcp_agent.secrets.yaml.exampleopenai: api_key: YOUR_OPENAI_API_KEY如果偏好 Anthropic也可以取消模板中对应部分的注释来切换提供商。理解 MCP 服务器配置示例的运行依赖三个 MCP 服务器全部声明在 mcp_agent.config.yaml 中execution_engine: asyncio mcp: servers: # Fetch server for basic web retrieval fetch: command: uvx args: [mcp-server-fetch] # Google Search MCP server g-search: command: npx args: [-y, g-search-mcp] # Filesystem server for writing reports filesystem: command: npx args: [-y, modelcontextprotocol/server-filesystem] openai: default_model: gpt-4o三者职责如下MCP 服务器启动方式作用fetchuvx mcp-server-fetch基础网页检索用于抓取搜索结果页面内容g-searchnpx -y g-search-mcpGoogle 搜索采集股价、财报、新闻等实时数据filesystemnpx -y modelcontextprotocol/server-filesystem文件系统读写用于把最终报告落盘同时配置文件指定了execution_engine: asyncio与 OpenAI 的默认模型gpt-4o。运行示例在示例目录下用公司名称作为命令行参数运行uv run main.py Apple换一家公司同样简单uv run main.py Microsoft运行入口 main.py 会在启动时读取命令行参数COMPANY_NAME Apple if len(sys.argv) 1 else sys.argv[1]即不传参时默认分析 Apple。报告会输出到company_reports/目录文件名形如apple_report_20250915_143000.md公司名小写 时间戳。仓库中的 sample_report.md 提供了一份针对 Duolingo 的完整样例报告可作为输出效果的直接参考。深入源码核心组件如何协同工作运行时前置检查在main.py的main()中应用启动后会做两项关键检查若配置中存在filesystem服务器则通过context.config.mcp.servers[filesystem].args.extend([os.getcwd()])把当前工作目录注入其参数确保报告能写入本地文件系统否则告警报告保存可能失败若配置中缺少g-search服务器则直接return False中止流程并提示安装命令npm install -g g-search-mcp。这体现了失败快速、提示明确的工程实践在耗费任何 Token 之前先确认外部依赖可用。Agent 定义提示词即数据契约示例通过mcp_agent.agents.agent中的Agent类创建四个专用 Agent每个 Agent 的instruction都扮演着数据契约的角色直接决定产出质量data_collectorResearch Agent挂载server_names[g-search, fetch]被要求按固定结构采集四类数据——当前市场数据股价、涨跌幅、成交量、52 周区间、最新财报EPS 实际 vs 预期、营收实际 vs 预期、同比增速、近 7 天新闻3-5 条含日期/来源/影响评级、关键财务指标P/E、市值并强制要求精确数字、附带来源 URL 与时间戳data_evaluatorResearch Evaluator不挂任何 MCP 服务器专职从完整性、准确性、时效性三个维度打分输出COMPLETENESS / ACCURACY / CURRENCY / OVERALL RATING结构化评估并在评分低于 GOOD 时给出需要补齐的数据点与精确搜索词financial_analyst不挂服务器基于已验证数据输出股价表现分析、财报分析、新闻影响评估、多空论点Bull/Bear Case、估值视角与风险评估report_writer挂载server_names[filesystem]按严格的大纲模板执行摘要、市场表现、财务表现、近期动态、投资分析、风险因素、投资结论、数据来源与免责声明生成 1200-1800 词的机构级报告并保存到output_path。EvaluatorOptimizerLLM质量反馈循环的实现示例的关键创新在于把data_collector与data_evaluator组合进EvaluatorOptimizerLLM来自 src/mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.pyresearch_quality_controller EvaluatorOptimizerLLM( optimizerresearch_agent, evaluatorresearch_evaluator, llm_factoryOpenAIAugmentedLLM, min_ratingQualityRating.GOOD, )结合源码可以深入理解其内部机制质量评级枚举QualityRating是一个int枚举POOR0 / FAIR1 / GOOD2 / EXCELLENT3可参与数值比较结构化评估结果评估器通过generate_structured调用返回EvaluationResultPydantic 模型包含rating、feedback、needs_improvement、focus_areas四个字段迭代主循环generate方法先让 optimizer 生成初版响应 → 评估器评估 → 若评级低于min_rating且仍需改进则把EvaluationResult的 feedback 与 focus_areas 拼进 refinement prompt 让 optimizer 重写 → 循环直至达标或达到max_refinements默认 3 次上限。整个过程中会保留历史最佳响应best_response即使循环被迫终止也能返回迄今为止质量最高的一版可配置阈值min_ratingQualityRating.GOOD表示数据达到 GOOD 即可放行而 README 中提到的 EXCELLENT 是评估器的最高评级标准——提示词里明确只有无需任何改进才评 EXCELLENT。从代码注释可见EvaluatorOptimizerLLM 既可以作为独立工作流使用也可以像本例这样包装在 Orchestrator 中作为其可用 Agent 之一为上层编排提供内建的评估与改进能力——这正是本例数据先行策略的基石。Orchestrator动态任务编排最外层由Orchestrator来自 src/mcp_agent/workflows/orchestrator/orchestrator.py统一调度orchestrator Orchestrator( llm_factoryOpenAIAugmentedLLM, available_agents[ research_quality_controller, analyst_agent, report_writer, ], plan_typefull, )plan_typefull表示先生成完整计划、再逐项执行的规划模式源码中另一选项为iterative即逐步规划、循环执行。available_agents列表同时容纳了普通 Agentfinancial_analyst、report_writer与工作流组件research_quality_controller说明 Orchestrator 能把 EvaluatorOptimizer 当作一个可调用的子 Agent看待。随后一条三段式的任务指令被交给编排器执行task fCreate a high-quality stock analysis report for {COMPANY_NAME} by following these steps: 1. Use the EvaluatorOptimizerLLM component (named research_quality_controller) to gather high-quality financial data about {COMPANY_NAME}. This component will automatically evaluate and improve the research until it reaches GOOD quality. 2. Use the financial_analyst to analyze this research data and identify key insights. 3. Use the report_writer to create a comprehensive stock report and save it to: {output_path} 执行时通过orchestrator.generate_str(messagetask, request_paramsRequestParams(modelgpt-4o))驱动整个流水线并在结束后校验output_path是否真实存在以确认报告成功生成对应代码中的成功/失败日志与布尔返回值。全程通过app.logger记录Initializing stock analysis workflow、Starting the stock analysis workflow、Report successfully generated等关键节点便于观测排障。预期产出一份机构级研究报告运行结束后company_reports/目录下会生成一份完整的 Markdown 报告。以仓库附带的 sample_report.mdDuolingo 案例为参照报告包含执行摘要当前价格、市值、投资论点与置信度、市场表现交易指标与技术分析、财务表现季度 EPS/营收实际 vs 预期及同比、近 7 天新闻与分析师动态、多空双方论证、估值评估、风险因素、投资结论以及带 URL 与时间戳的数据来源、数据质量说明和免责声明。这份样例直接验证了整条流水线的实际产出效果。小结与可复用要点MCP Financial Analyzer 示例提供了一套可迁移的组合范式值得提炼的设计要点包括数据质量前置用EvaluatorOptimizerLLM(min_ratingQualityRating.GOOD)把采集-评估-迭代封装为受控循环在分析前兜底数据可信度Agent 提示词契约化采集、评估、分析、撰写四类 Agent 各自用结构化提示词定义输入输出格式上下游数据流清晰可验工作流组合嵌套Orchestrator(plan_typefull)可以把 EvaluatorOptimizer 工作流当作子 Agent 编排实现验证 → 分析 → 产出的端到端自动化依赖预检启动时校验 MCP 服务器是否就绪失败即中止并给出修复提示避免无谓消耗产出可落盘通过filesystemMCP 服务器把结构化报告写入本地目录形成可审计的交付物。若想深入理解底层机制可继续阅读 evaluator_optimizer.py质量循环核心实现、orchestrator.py编排器与计划模式以及对应的测试用例 tests/workflows/evaluator_optimizer 与 tests/workflows/orchestrator并结合本示例的配置与运行入口 main.py 进行二次开发。【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表