你是否也曾幻想过,在敲代码的间隙,只需轻轻一问,就能获得专业的金融分析报告?当同事还在各个财经网站间频繁切换时,你却已经在Cursor中看到了自动生成的股价走势图和技术指标分析。

这不再是科幻电影中的场景。今天,我将带你一步步构建一个完全在本地运行的智能金融分析师。它能够理解你的自然语言查询,自动编写分析代码,并生成精美的可视化图表——所有这一切,都直接在你的IDE中完成。

更重要的是,整个系统基于MCP协议构建,确保你的敏感金融数据不会离开本地环境。接下来,让我们开始这场从零到一的技术探险。

一、项目概述

这个项目的核心思路是构建一个多智能体协作系统,能够接收自然语言的金融查询请求,自动生成分析代码,并输出可视化图表。整个系统通过MCP协议与Cursor集成,让你可以直接在IDE中享受专业的金融分析服务。

技术选型说明
  • CrewAI:负责多智能体的协作调度

  • Ollama + DeepSeek-R1:本地部署的大语言模型,确保数据安全

  • Cursor:作为MCP的宿主平台

  • MCP协议:实现工具与IDE的无缝集成

二、系统架构设计

整个系统的工作流程是这样的:

  1. 用户在Cursor中提交金融查询请求

  2. MCP服务器接收请求并启动金融分析团队

  3. 多个智能体协作进行研究分析

  4. 生成并执行Python分析脚本

  5. 输出可视化图表和分析报告

三、核心代码实现

1. 环境配置与依赖安装

首先,我们需要安装必要的依赖包:

pip install crewai ollama pandas matplotlib yfinance pydantic mcp
2. 大模型配置

使用Ollama本地部署DeepSeek-R1模型:

import ollama``from crewai import LLM``# 配置本地Ollama模型``def setup_llm():`    `"""配置本地DeepSeek-R1模型"""`    `llm = LLM(`        `model="ollama/deepseek-r1:latest",`        `base_url="http://localhost:11434"`    `)`    `return llm``# 初始化模型``local_llm = setup_llm()
3. 构建智能体团队

这是整个系统的核心部分,我们需要创建三个专门的智能体:​​​​​​​

from crewai import Agent, Task, Crew``from pydantic import BaseModel``from typing import List``import json``# 定义查询结构``class FinancialQuery(BaseModel):`    `"""金融查询结构化数据模型"""`    `stocks: List[str]`    `analysis_type: str`    `time_period: str`    `metrics: List[str]``# 查询解析智能体``query_parser = Agent(`    `role="金融查询解析专家",`    `goal="将自然语言的金融查询转换为结构化数据",`    `backstory="""你是一位经验丰富的金融查询解析专家,`    `擅长理解用户的自然语言查询意图,并将其转换为结构化的数据格式。`    `你能准确识别股票代码、分析类型、时间范围和所需指标。""",`    `llm=local_llm,`    `verbose=True``)``# 代码编写智能体``code_writer = Agent(`    `role="Python金融分析代码专家",`    `goal="根据结构化查询编写高质量的金融分析Python代码",`    `backstory="""你是一位资深的Python开发者和金融分析师,`    `精通使用pandas处理金融数据,matplotlib创建专业图表,`    `以及yfinance获取股票数据。你编写的代码简洁、高效且易于理解。""",`    `llm=local_llm,`    `verbose=True``)``# 代码执行智能体``code_executor = Agent(`    `role="代码执行与验证专家",`    `goal="安全执行Python代码并生成分析结果",`    `backstory="""你是一位谨慎的代码执行专家,`    `负责在沙箱环境中安全执行代码,检查潜在错误,`    `并确保生成准确的分析图表和报告。""",`    `llm=local_llm,`    `verbose=True,`    `tools=[]  # 稍后添加代码执行工具``)
4. 定义分析任务

为每个智能体定义具体的任务:​​​​​​​

def create_analysis_tasks(user_query: str):`    `"""创建金融分析任务链"""`        `# 任务1:解析查询`    `parse_task = Task(`        `description=f"""`        `解析以下用户查询:{user_query}`                `提取以下信息:`        `- 股票代码列表`        `- 分析类型(价格趋势、技术指标、比较分析等)`        `- 时间范围(如30天、3个月、1年等)`        `- 需要的指标(价格、成交量、移动平均线等)`                `请以JSON格式输出结构化结果。`        `""",`        `agent=query_parser,`        `expected_output="JSON格式的结构化查询数据"`    `)`        `# 任务2:编写代码`    `code_task = Task(`        `description="""`        `基于解析结果编写Python代码,要求:`        `1. 使用yfinance获取股票数据`        `2. 使用pandas处理和分析数据`        `3. 使用matplotlib创建专业的可视化图表`        `4. 代码要有适当的注释和错误处理`        `5. 确保图表美观且信息丰富`                `代码应该是完整可执行的,包含所有必要的import语句。`        `""",`        `agent=code_writer,`        `expected_output="完整的Python分析代码",`        `context=[parse_task]`    `)`        `# 任务3:执行代码`    `execute_task = Task(`        `description="""`        `执行生成的Python代码:`        `1. 检查代码语法和逻辑错误`        `2. 在安全环境中运行代码`        `3. 生成分析图表`        `4. 提供执行结果摘要`                `如果出现错误,请提供详细的错误信息和建议修复方案。`        `""",`        `agent=code_executor,`        `expected_output="代码执行结果和生成的图表路径",`        `context=[code_task]`    `)`        `return [parse_task, code_task, execute_task]
5. 创建分析团队​​​​​​​
def create_financial_crew(user_query: str):`    `"""创建金融分析团队"""`        `tasks = create_analysis_tasks(user_query)`        `crew = Crew(`        `agents=[query_parser, code_writer, code_executor],`        `tasks=tasks,`        `verbose=True,`        `process="sequential"  # 顺序执行任务`    `)`        `return crew``# 测试分析团队``def test_financial_analysis():`    `"""测试金融分析功能"""`        `test_query = "帮我分析苹果公司(AAPL)和微软(MSFT)最近3个月的股价走势,包括移动平均线"`        `crew = create_financial_crew(test_query)`    `result = crew.kickoff()`        `print("分析结果:")`    `print(result)`        `return result
6. 构建MCP服务器

现在我们需要将这个金融分析师封装为MCP工具:​​​​​​​

import asyncio``from mcp.server.fastmcp import FastMCP``import subprocess``import os``import tempfile``import matplotlib``matplotlib.use('Agg')  # 使用非交互式后端``# 创建MCP服务器``mcp = FastMCP("Financial Analyst")``@mcp.tool()``def analyze_financial_query(query: str) -> str:`    `"""`    `分析金融查询请求`        `Args:`        `query: 用户的自然语言金融查询`            `Returns:`        `分析结果和建议`    `"""`    `try:`        `crew = create_financial_crew(query)`        `result = crew.kickoff()`        `return str(result)`    `except Exception as e:`        `return f"分析过程中出现错误:{str(e)}"``@mcp.tool()``def save_code(code: str, filename: str = "financial_analysis.py") -> str:`    `"""`    `保存生成的分析代码到本地文件`        `Args:`        `code: Python代码内容`        `filename: 保存的文件名`            `Returns:`        `保存结果信息`    `"""`    `try:`        `with open(filename, 'w', encoding='utf-8') as f:`            `f.write(code)`        `return f"代码已成功保存到 {filename}"`    `except Exception as e:`        `return f"保存代码时出现错误:{str(e)}"``@mcp.tool()``def run_code_and_show_plot(code: str) -> str:`    `"""`    `执行代码并生成图表`        `Args:`        `code: 要执行的Python代码`            `Returns:`        `执行结果和图表路径`    `"""`    `try:`        `# 创建临时文件`        `with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False) as f:`            `f.write(code)`            `temp_file = f.name`                `# 执行代码`        `result = subprocess.run(`            `['python', temp_file],`            `capture_output=True,`            `text=True,`            `cwd=os.getcwd()`        `)`                `# 清理临时文件`        `os.unlink(temp_file)`                `if result.returncode == 0:`            `return f"代码执行成功!\n输出:{result.stdout}"`        `else:`            `return f"代码执行失败!\n错误:{result.stderr}"`                `except Exception as e:`        `return f"执行代码时出现错误:{str(e)}"``# MCP服务器启动函数``def start_mcp_server():`    `"""启动MCP服务器"""`    `if __name__ == "__main__":`        `mcp.run()
7. 完整的示例代码

让我们创建一个完整的示例来演示整个系统:​​​​​​​

# financial_analyst_demo.py``import yfinance as yf``import pandas as pd``import matplotlib.pyplot as plt``import numpy as np``from datetime import datetime, timedelta``def demo_financial_analysis():`    `"""演示金融分析功能"""`        `# 示例:分析AAPL和MSFT的股价对比`    `stocks = ['AAPL', 'MSFT']`    `end_date = datetime.now()`    `start_date = end_date - timedelta(days=90)  # 3个月数据`        `# 获取股票数据`    `stock_data = {}`    `for stock in stocks:`        `ticker = yf.Ticker(stock)`        `data = ticker.history(start=start_date, end=end_date)`        `stock_data[stock] = data`        `# 创建图表`    `fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 12))`        `# 1. 股价对比图`    `for stock in stocks:`        `ax1.plot(stock_data[stock].index, stock_data[stock]['Close'],`                 `label=f'{stock} 收盘价', linewidth=2)`    `ax1.set_title('股价对比(最近3个月)', fontsize=14)`    `ax1.legend()`    `ax1.grid(True, alpha=0.3)`        `# 2. 成交量对比`    `for stock in stocks:`        `ax2.bar(stock_data[stock].index, stock_data[stock]['Volume'],`                `alpha=0.7, label=f'{stock} 成交量')`    `ax2.set_title('成交量对比', fontsize=14)`    `ax2.legend()`        `# 3. 移动平均线`    `for stock in stocks:`        `data = stock_data[stock]`        `ax3.plot(data.index, data['Close'], label=f'{stock} 收盘价', alpha=0.7)`        `ax3.plot(data.index, data['Close'].rolling(window=20).mean(),`                 `label=f'{stock} 20日均线', linewidth=2)`    `ax3.set_title('股价与20日移动平均线', fontsize=14)`    `ax3.legend()`    `ax3.grid(True, alpha=0.3)`        `# 4. 收益率对比`    `for stock in stocks:`        `returns = stock_data[stock]['Close'].pct_change().dropna()`        `ax4.hist(returns, bins=30, alpha=0.7, label=f'{stock} 日收益率分布')`    `ax4.set_title('日收益率分布对比', fontsize=14)`    `ax4.legend()`    `ax4.set_xlabel('收益率')`    `ax4.set_ylabel('频次')`        `plt.tight_layout()`    `plt.savefig('financial_analysis.png', dpi=300, bbox_inches='tight')`    `plt.show()`        `# 生成分析报告`    `print("=== 金融分析报告 ===")`    `for stock in stocks:`        `data = stock_data[stock]`        `current_price = data['Close'].iloc[-1]`        `price_change = ((current_price - data['Close'].iloc[0]) / data['Close'].iloc[0]) * 100`        `avg_volume = data['Volume'].mean()`                `print(f"\n{stock} 分析结果:")`        `print(f"当前价格: ${current_price:.2f}")`        `print(f"3个月涨跌幅: {price_change:.2f}%")`        `print(f"平均日成交量: {avg_volume:,.0f}")``if __name__ == "__main__":`    `demo_financial_analysis()

MCP服务器配置

8. Cursor集成配置

要将我们的金融分析师集成到Cursor中,需要进行以下配置:

  • 启动MCP服务器

创建服务器启动脚本 start_server.py:​​​​​​​

#!/usr/bin/env python3``from financial_analyst_mcp import mcp``if __name__ == "__main__":`    `mcp.run()``Cursor MCP配置``在Cursor中添加MCP服务器配置:``{`  `"mcpServers": {`    `"financial-analyst": {`      `"command": "python",`      `"args": ["path/to/your/start_server.py"],`      `"env": {`        `"PYTHONPATH": "path/to/your/project"`      `}`    `}`  `}``}
9. 使用指南

配置完成后,你就可以在Cursor中直接使用金融分析功能了:

  • 简单查询

    帮我分析一下特斯拉(TSLA)最近一个月的股价表现

  • 对比分析

    比较苹果和谷歌最近半年的股价走势,包括技术指标分析

  • 深度分析

    分析标普500指数成分股中科技板块的表现,生成详细的投资建议

四、系统优势

这个基于MCP的金融分析师有以下几个显著优势:

1. 本地化部署

使用Ollama本地部署模型,确保你的金融查询和数据不会泄露到外部服务商。

2. 智能协作

通过CrewAI的多智能体架构,每个智能体专注于自己擅长的领域,协作完成复杂的金融分析任务。

3. 无缝集成

通过MCP协议与Cursor深度集成,让你在编程过程中随时获得专业的金融分析支持。

4. 可扩展性

整个架构设计考虑了可扩展性,你可以轻松添加新的智能体或分析功能。

五、总结

站在AI技术与金融分析交叉口的我们,正见证着一个全新的工作方式诞生。这个基于MCP的智能金融分析师项目,不仅展示了多智能体协作的强大能力,更开创了在IDE中直接进行专业级数据分析的先河。

技术真正的魅力,不在于它有多复杂,而在于它如何优雅地解决实际问题。

现在,当你下次需要分析股票走势时,或许不再需要打开多个浏览器标签,不再需要在不同的金融门户网站间切换。只需要在Cursor中简单描述你的需求,剩下的,就交给这个你亲手打造的智能助手吧。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习_,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。
为了帮助大家打破壁垒,快速了解大模型核心技术原理,学习相关大模型技术。从原理出发真正入局大模型。在这里我和MoPaaS魔泊云联合梳理打造了系统大模型学习脉络,这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码免费领取🆓**⬇️⬇️⬇️

在这里插入图片描述

【大模型全套视频教程】

教程从当下的市场现状和趋势出发,分析各个岗位人才需求,带你充分了解自身情况,get 到适合自己的 AI 大模型入门学习路线。

从基础的 prompt 工程入手,逐步深入到 Agents,其中更是详细介绍了 LLM 最重要的编程框架 LangChain。最后把微调与预训练进行了对比介绍与分析。

同时课程详细介绍了AI大模型技能图谱知识树,规划属于你自己的大模型学习路线,并且专门提前收集了大家对大模型常见的疑问,集中解答所有疑惑!

在这里插入图片描述

深耕 AI 领域技术专家带你快速入门大模型

跟着行业技术专家免费学习的机会非常难得,相信跟着学习下来能够对大模型有更加深刻的认知和理解,也能真正利用起大模型,从而“弯道超车”,实现职业跃迁!

在这里插入图片描述

【精选AI大模型权威PDF书籍/教程】

精心筛选的经典与前沿并重的电子书和教程合集,包含《深度学习》等一百多本书籍和讲义精要等材料。绝对是深入理解理论、夯实基础的不二之选。

在这里插入图片描述

【AI 大模型面试题 】

除了 AI 入门课程,我还给大家准备了非常全面的**「AI 大模型面试题」,**包括字节、腾讯等一线大厂的 AI 岗面经分享、LLMs、Transformer、RAG 面试真题等,帮你在面试大模型工作中更快一步。

【大厂 AI 岗位面经分享(92份)】

图片

【AI 大模型面试真题(102 道)】

图片

【LLMs 面试真题(97 道)】

图片

【640套 AI 大模型行业研究报告】

在这里插入图片描述

【AI大模型完整版学习路线图(2025版)】

明确学习方向,2025年 AI 要学什么,这一张图就够了!

img

👇👇点击下方卡片链接免费领取全部内容👇👇

在这里插入图片描述

抓住AI浪潮,重塑职业未来!

科技行业正处于深刻变革之中。英特尔等巨头近期进行结构性调整,缩减部分传统岗位,同时AI相关技术岗位(尤其是大模型方向)需求激增,已成为不争的事实。具备相关技能的人才在就业市场上正变得炙手可热。

行业趋势洞察:

  • 转型加速: 传统IT岗位面临转型压力,拥抱AI技术成为关键。
  • 人才争夺战: 拥有3-5年经验、扎实AI技术功底真实项目经验的工程师,在头部大厂及明星AI企业中的薪资竞争力显著提升(部分核心岗位可达较高水平)。
  • 门槛提高: “具备AI项目实操经验”正迅速成为简历筛选的重要标准,预计未来1-2年将成为普遍门槛。

与其观望,不如行动!

面对变革,主动学习、提升技能才是应对之道。掌握AI大模型核心原理、主流应用技术与项目实战经验,是抓住时代机遇、实现职业跃迁的关键一步。

在这里插入图片描述

01 为什么分享这份学习资料?

当前,我国在AI大模型领域的高质量人才供给仍显不足,行业亟需更多有志于此的专业力量加入。

因此,我们决定将这份精心整理的AI大模型学习资料,无偿分享给每一位真心渴望进入这个领域、愿意投入学习的伙伴!

我们希望能为你的学习之路提供一份助力。如果在学习过程中遇到技术问题,也欢迎交流探讨,我们乐于分享所知。

*02 这份资料的价值在哪里?*

专业背书,系统构建:

  • 本资料由我与MoPaaS魔泊云的鲁为民博士共同整理。鲁博士拥有清华大学学士美国加州理工学院博士学位,在人工智能领域造诣深厚:

    • 在IEEE Transactions等顶级学术期刊及国际会议发表论文超过50篇
    • 拥有多项中美发明专利。
    • 荣获吴文俊人工智能科学技术奖(中国人工智能领域重要奖项)。
  • 目前,我有幸与鲁博士共同进行人工智能相关研究。

在这里插入图片描述

内容实用,循序渐进:

  • 资料体系化覆盖了从基础概念入门核心技术进阶的知识点。

  • 包含丰富的视频教程实战项目案例,强调动手实践能力。

  • 无论你是初探AI领域的新手,还是已有一定技术基础希望深入大模型的学习者,这份资料都能为你提供系统性的学习路径和宝贵的实践参考助力你提升技术能力,向大模型相关岗位转型发展

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

抓住机遇,开启你的AI学习之旅!

在这里插入图片描述

Logo

更多推荐