
在當今瞬息萬變的市場中,等待數小時才能獲得股票分析結果已不再可行。試想一下,只需輸入“繪製股票漲幅圖(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 智慧體如何高效處理複雜的工作流程,併為以使用者為中心的金融分析樹立了新的標杆。

評論留言