
在当今瞬息万变的市场中,等待数小时才能获得股票分析结果已不再可行。试想一下,只需输入“绘制股票涨幅图(X)”,即可立即获得清晰的图表。无需手动收集数据、编写代码或进行调试。在本指南中,我们将使用 CrewAI 和 MCP 构建一个个人市场分析师。最终,您将拥有一个能够将自然语言查询转化为可操作股票洞察的助手。
目标
我们基于 MCP 的金融分析师利用 AI 代理简化了金融数据分析。它弥合了复杂金融数据源与用户查询之间的鸿沟,提供实时、情境感知的洞察。这种方法不仅节省时间、减少人为错误,而且还确保了更高的安全性、互操作性和透明度。
系统概述

- 用户查询:自然语言请求,例如:“显示特斯拉过去一年的股票表现。”
- MCP 代理:调用金融分析师团队——一组专业代理。
- 代理协作:它们解析查询、生成 Python 代码、执行代码并验证结果。
- 输出:用户将收到一张清晰的图表,其中包含可立即操作的见解。
逐步构建个人市场分析工具
前提条件
以下是一些必要的 Python 包。
pip install crewai crewai-tools pydantic yfinance python-dotenv
使用MCP构建AI驱动的金融分析工具
我们将构建两个主要组件:
- 金融分析团队:由 CrewAI 代理提供支持,这些代理读取用户查询、生成 Python 代码并运行,以可视化股票数据。
- MCP 服务器文件:一个模型上下文协议 (MCP) 服务器,它将把上述组件呈现为 AI 工具,以便您可以将其直接集成到您的 AI 工作流程中。
让我们来详细了解一下。
金融分析团队
真正的智能就在这里。我们使用 CrewAI 来协调多个具有不同角色的代理:
步骤 1. 定义输出结构
class QueryAnalysisOutput(BaseModel): symbols: list[str] timeframe: str action: str
此 Pydantic 模型可确保从用户查询中提取结构化信息。
步骤 2:配置LLM
llm = LLM( model="openai/gpt-4o", temperature=0.7 )
步骤 3:创建代理
代理 1:查询解析器
- 读取查询
- 提取股票代码、时间范围和预期操作
- 此外,它还将自然语言转换为结构化的 JSON 数据。
query_parser_agent = Agent( role="Stock Data Analyst", goal="Extract stock details and fetch required data...", output_pydantic=QueryAnalysisOutput )
代理 2:代码编写者
- 接收结构化查询输出
- 使用以下库编写简洁、可执行的 Python 代码:
- yfinance(获取股票数据)
- pandas(用于数据处理)
- matplotlib(用于绘图)
code_writer_agent = Agent( role="Senior Python Developer", goal="Write Python code to visualize stock data..." )
代理 3:代码执行器
- 运行生成的代码
- 修复错误(如果出现问题)
- 可以将修复工作委托给代码编写者
code_execution_agent = Agent( role="Senior Code Execution Expert", allow_code_execution=True, allow_delegation=True )
步骤 4:人员处理
我们将按照以下步骤使用这些代理:
- 解析查询
- 编写 Python 代码
- 执行并验证结果
crew = Crew( agents=[query_parser_agent, code_writer_agent, code_execution_agent], tasks=[query_parsing_task, code_writer_task, code_execution_task], process=Process.sequential )
步骤 5:主要功能
Orchestrates the entire multi-agent system and returns the final executable Python code.
def run_financial_analysis(query):
result = crew.kickoff(inputs={"query": query})
return result.raw
现在我们将创建 MCP 服务器文件:
- 创建接口:此接口允许 AI 助手调用我们的函数。
from mcp.server.fastmcp import FastMCP from finance_crew import run_financial_analysis FastMCP: A lightweight MCP server framework for exposing functions as AI tools run_financial_analysis: The main function from the above code that does all the heavy lifting.
- 创建 MCP 实例
我们将 MCP 工具集命名为“financial-analyst”。这相当于应用程序名称。
mcp = FastMCP("financial-analyst")
- 定义工具
工具 1:analyze_stock()
- 接收自然语言查询
- 将其传递给金融分析师团队(我们的代理)
- 返回一个 Python 脚本字符串,该脚本可以获取并可视化所请求的股票数据。
@mcp.tool() def analyze_stock(query: str) -> str: ... result = run_financial_analysis(query) return result
工具 2:保存代码
将生成的 Python 代码保存到名为 stock_analysis.py 的文件中。
确保文件有效且可执行。
@mcp.tool()
def save_code(code: str) -> str:
with open('stock_analysis.py', 'w') as f:
f.write(code)
工具 3:run_code_and_show_plot()
- 直接执行已保存的脚本
- 实时生成所需的股票可视化图表
- 主函数
通过标准输入/输出 (stdio) 在本地运行 MCP 服务器,可随时集成到任何支持 MCP 的 AI 平台中。
if __name__ == "__main__": mcp.run(transport='stdio')
最终输出
通过此设置,输入类似“绘制苹果公司过去 6 个月的股票表现”的查询语句,即可生成可直接使用的图表——无需手动编写代码。
推荐阅读:如何使用 LangChain 创建 MCP 客户端/服务器
小结
使用 CrewAI 构建基于 MCP 的金融分析工具,展示了多智能体系统如何变革金融分析。通过结合结构化查询解析、自动化 Python 代码生成和实时执行,我们消除了手动编码和调试的瓶颈。该项目突出了 AI 智能体如何高效处理复杂的工作流程,并为以用户为中心的金融分析树立了新的标杆。


评论留言