Skip to main content
Glama

Financial Report Generator MCP Server

by KennanYang

财务报告生成项目 - MCP学习实践

项目概述

这是一个用于学习Model Context Protocol (MCP)的财务报告生成项目。通过这个项目,您将学习如何使用MCP来构建智能的财务报告生成系统,并集成AI模型实现智能化分析。

项目目标

  • 学习MCP的基本概念和架构
  • 实现财务数据的获取和处理
  • 构建智能报告生成系统
  • 集成多种数据源和工具
  • 创建可扩展的MCP服务器
  • 集成本地AI模型(Ollama deepseek-r1:7b)

核心功能

  • 交互式公司财报生成: 支持选择或输入公司代码生成详细财报
  • 多公司支持: 支持NVDA, AAPL, MSFT, GOOGL, TSLA, AMZN, META, NFLX, AMD, INTC等10家公司
  • 多种报告类型: basic(基础), comprehensive(综合), financial_analysis(财务分析)
  • 批量生成: 支持同时生成多个公司的财报
  • MCP协议: 标准MCP工具和资源支持
  • AI增强功能: 集成Ollama deepseek-r1:7b模型,提供智能财务分析
  • 本地AI支持: 支持本地部署的AI模型,无需外部API密钥

AI功能特性

Ollama集成

  • 🎯 本地AI模型: 支持本地部署的deepseek-r1:7b模型
  • 🤖 智能分析: AI驱动的公司财务分析和投资建议
  • 📊 智能报告: AI生成的财务报告和投资分析
  • 🔄 灵活切换: 支持在Ollama和OpenAI之间切换
  • 快速响应: 本地模型,响应速度快

AI功能列表

  • AI公司分析: 使用AI分析公司财务状况和投资价值
  • AI报告生成: 使用AI生成智能财务报告
  • AI投资建议: 使用AI提供投资建议和风险评估

重要说明

🚨 演示程序使用本地数据

当前版本使用的是模拟数据,不是真实的财务数据!

  • 数据来源: 所有财务数据都是程序内部生成的模拟数据
  • 用途: 仅用于学习和演示MCP功能,不构成投资参考
  • 真实性: 股价、财务比率、公司信息等都是模拟值
  • 学习价值: 重点在于学习MCP工具的实现和使用方法

🔧 如果要接入真实API,需要修改的地方

1. 修改数据源配置
# 文件: src/mcp_server/tools/company_report_generator.py # 方法: _get_mock_financial_data() # 当前代码(模拟数据): def _get_mock_financial_data(self, symbol: str) -> Dict[str, Any]: # 返回模拟数据... # 修改为(真实API): def _get_real_financial_data(self, symbol: str) -> Dict[str, Any]: # 调用真实财务API # 例如: Alpha Vantage, Yahoo Finance, IEX Cloud等 api_key = "your_api_key" url = f"https://api.example.com/stock/{symbol}" # 发送HTTP请求获取真实数据...
2. 添加API配置
# 文件: config/financial_config.yaml # 添加真实API配置: api_providers: alpha_vantage: api_key: "your_alpha_vantage_key" base_url: "https://www.alphavantage.co/query" yahoo_finance: api_key: "your_yahoo_key" base_url: "https://query1.finance.yahoo.com"
3. 安装必要的依赖
# 添加到 requirements.txt requests>=2.25.0 yfinance>=0.1.70 alpha_vantage>=2.3.1
4. 处理API限制和错误
# 添加错误处理和重试机制 import time from requests.exceptions import RequestException def get_financial_data_with_retry(self, symbol: str, max_retries: int = 3): for attempt in range(max_retries): try: # 调用API response = requests.get(url, timeout=10) response.raise_for_status() return response.json() except RequestException as e: if attempt == max_retries - 1: raise e time.sleep(2 ** attempt) # 指数退避

MCP学习步骤

第一步:环境准备

  1. 安装Python 3.8+
  2. 安装MCP相关依赖
  3. 配置开发环境
  4. 安装Ollama(可选,用于AI功能)

第二步:理解MCP基础概念

  • MCP协议概述
  • 服务器-客户端架构
  • 工具(Tools)和资源(Resources)概念
  • 消息格式和通信协议

第三步:实现基础MCP服务器

  • 创建MCP服务器框架
  • 实现基本的工具注册
  • 处理客户端请求

第四步:开发财务数据工具

  • 实现数据获取工具
  • 实现数据处理工具
  • 实现报告生成工具

第五步:集成外部数据源

  • 连接财务API
  • 处理CSV/Excel文件
  • 数据库集成

第六步:高级功能实现

  • 智能报告生成
  • 数据可视化
  • 报告模板系统
  • AI模型集成

第七步:测试和优化

  • 单元测试
  • 集成测试
  • 性能优化

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 安装Ollama(可选,用于AI功能)

# 下载并安装Ollama # 访问 https://ollama.ai 下载安装包 # 安装deepseek-r1模型 ollama pull deepseek-r1:7b

3. 运行演示

纯MCP功能演示
# 运行纯MCP功能演示(包含交互式选择) python interactive_company_demo_real.py
AI+MCP集成演示
# 运行AI+MCP集成演示(需要Ollama服务运行) python ai_mcp_demo.py

4. 启动MCP服务器

# 启动纯MCP服务器 python -m src.mcp_server.server # 或者直接运行交互式演示,其中包含服务器启动选项

AI功能使用

前置条件

  1. 安装Ollama服务
  2. 下载deepseek-r1:7b模型:ollama pull deepseek-r1:7b
  3. 启动Ollama服务:ollama serve

使用AI功能

from mcp_server.tools.ai_enhanced_report_generator import AIEnhancedReportGenerator # 初始化AI工具(使用Ollama) ai_tool = AIEnhancedReportGenerator( ollama_url="http://localhost:11434", ollama_model="deepseek-r1:7b", use_ollama=True ) # 使用AI分析公司 result = await ai_tool.call_tool(CallToolRequest( method="tools/call", params={ "name": "ai_analyze_company", "arguments": { "symbol": "NVDA", "analysis_type": "comprehensive" } } ))

项目结构

financial-report/ ├── README.md # 项目说明 ├── requirements.txt # Python依赖 ├── interactive_company_demo_real.py # 纯MCP功能演示(交互式) ├── ai_mcp_demo.py # AI+MCP集成演示 ├── config/ # 配置文件 │ ├── mcp_config.json # MCP配置 │ ├── financial_config.yaml # 财务数据配置 │ └── ollama_config.yaml # Ollama配置 ├── src/ # 源代码 │ └── mcp_server/ # MCP服务器实现 │ ├── server.py # 主服务器 │ ├── tools/ # MCP工具 │ │ ├── company_report_generator.py # 公司财报生成工具 │ │ ├── financial_data.py # 财务数据工具 │ │ ├── report_generator.py # 报告生成工具 │ │ ├── ai_enhanced_report_generator.py # AI增强报告生成器 │ │ └── ollama_client.py # Ollama客户端 │ └── resources/ # MCP资源 │ └── financial_reports.py # 财务报告资源 ├── output/ # 输出目录 │ └── reports/ # 生成的报告 └── docs/ # 文档 └── README.md # 详细文档

关键学习点

  1. MCP协议理解: 学习MCP的请求-响应模式
  2. 工具开发: 实现自定义MCP工具
  3. 资源管理: 处理MCP资源
  4. 错误处理: 实现健壮的错误处理机制
  5. 性能优化: 优化MCP服务器性能

使用示例

纯MCP功能演示

  1. 运行 python interactive_company_demo_real.py
  2. 选择功能:1 (生成单个公司财报)
  3. 选择公司:输入公司代码(如 NVDA)或数字(如 1
  4. 选择报告类型:1(基础), 2(综合), 3(财务分析)
  5. 查看生成的报告

批量生成财报

  1. 选择功能:2 (批量生成多个公司财报)
  2. 输入公司代码:NVDA,AAPL,MSFT
  3. 选择报告类型
  4. 等待批量生成完成

AI+MCP集成演示

  1. 确保Ollama服务运行:ollama serve
  2. 运行 python ai_mcp_demo.py
  3. 查看AI功能演示:
    • AI公司分析
    • AI报告生成
    • AI投资建议
    • AI与MCP工具协作

支持的公司

代码公司名称行业
NVDANVIDIA Corporation半导体
AAPLApple Inc.消费电子
MSFTMicrosoft Corporation软件
GOOGLAlphabet Inc.互联网服务
TSLATesla Inc.汽车
AMZNAmazon.com Inc.电子商务
METAMeta Platforms Inc.社交媒体
NFLXNetflix Inc.流媒体
AMDAdvanced Micro Devices半导体
INTCIntel Corporation半导体

报告内容详解

报告类型说明

1. basic - 基础财报
  • 基本信息(公司名称、股票代码、行业分类)
  • 财务数据摘要(股价、市值、收入、利润等)
  • 基本财务比率(资产负债率、利润率等)
2. comprehensive - 综合财报(推荐)
  • 完整财务数据
  • 详细财务比率分析
  • 业务分析(核心业务、增长驱动因素、竞争优势)
  • 风险因素分析
  • 投资建议
  • 技术分析(52周高低点、均线、RSI)
  • 市场表现(收益率数据)
3. financial_analysis - 财务分析报告
  • 深度财务分析
  • 行业对比
  • 趋势分析
  • 投资风险评估

报告内容示例

NVIDIA (NVDA) 综合财报示例
NVIDIA Corporation (NVDA) 财务报告 ============================================================ 基本信息: - 公司名称: NVIDIA Corporation - 股票代码: NVDA - 行业分类: Technology - Semiconductors - 报告类型: comprehensive - 报告期间: latest - 生成时间: 2025-08-08 08:23:11 财务数据摘要: - 当前股价: $450.25 - 市值: $1.1T - 营业收入: $60.9B - 净利润: $29.8B - 总资产: $106.1B - 总负债: $25.3B 财务比率分析: - 资产负债率: 24.00% - 净利润率: 49.00% - 资产收益率: 28.00% - 股本收益率: 89.00% - 市盈率: 15.10 - 市净率: 13.40 业务分析: NVIDIA是全球领先的图形处理器(GPU)和人工智能计算平台提供商。 核心业务: - GPU业务: 游戏、数据中心、专业可视化 - AI计算: 数据中心GPU、自动驾驶、机器人 - 软件平台: CUDA、AI框架、开发工具 增长驱动因素: - AI革命推动数据中心GPU需求激增 - 游戏市场持续增长 - 自动驾驶和机器人技术发展 - 云计算和边缘计算扩张 竞争优势: - 技术领先优势明显 - 强大的生态系统和开发者网络 - 专利组合和知识产权保护 - 与主要云服务提供商的深度合作 风险因素: 主要风险因素: 1. 宏观经济风险: 经济周期波动可能影响需求 2. 竞争风险: 行业竞争加剧可能影响市场份额 3. 技术风险: 技术变革可能影响产品竞争力 4. 监管风险: 政策变化可能影响业务运营 5. 供应链风险: 供应链中断可能影响生产和交付 6. 汇率风险: 汇率波动可能影响国际业务 7. 市场风险: 股票价格波动风险 投资建议: 投资建议: 买入 理由: 估值适中,财务状况稳定,具有投资价值 风险提示: - 本报告仅供参考,不构成投资建议 - 投资有风险,入市需谨慎 - 请根据自身情况做出投资决策 - 建议咨询专业投资顾问 技术分析: - 52周最高: $505.48 - 52周最低: $138.84 - 50日均线: $435.2 - 200日均线: $320.15 - 相对强弱指数(RSI): 65.80 市场表现: - 年初至今收益率: 85.00% - 过去一年收益率: 225.00% - 过去三年收益率: 450.00%

使用方法详解

方法一:自动演示版本

python interactive_company_demo.py
  • 自动演示所有功能
  • 无需用户输入
  • 适合快速了解功能

方法二:真正交互式版本

python interactive_company_demo_real.py
  • 需要用户实际输入
  • 支持单个和批量生成
  • 完整的交互体验

使用步骤详解

单个公司财报生成

  1. 启动程序
    python interactive_company_demo_real.py
  2. 选择功能
    📋 请选择功能: 1. 生成单个公司财报 2. 批量生成多个公司财报 3. 退出
  3. 查看公司列表
    📋 正在获取可用公司列表... NVDA: NVIDIA Corporation AAPL: Apple Inc. MSFT: Microsoft Corporation ...
  4. 选择公司
    • 输入公司代码:NVDA
    • 或输入数字:1 (选择NVIDIA)
  5. 选择报告类型
    1. basic - 基础财报 2. comprehensive - 综合财报 (推荐) 3. financial_analysis - 财务分析报告
  6. 生成报告
    🚀 正在生成 NVDA 的 comprehensive 财报... ✅ 财报生成成功!

批量公司财报生成

  1. 选择批量功能
    2. 批量生成多个公司财报
  2. 输入公司代码
    请输入要生成财报的公司代码,用逗号分隔 (如: NVDA,AAPL,MSFT): 公司代码: NVDA,AAPL,MSFT
  3. 选择报告类型
    1. basic - 基础财报 2. comprehensive - 综合财报 3. financial_analysis - 财务分析报告
  4. 批量生成
    🚀 开始批量生成 3 个公司的 comprehensive 财报... [1/3] 正在生成 NVDA 的财报... ✅ NVDA 财报生成成功! [2/3] 正在生成 AAPL 的财报... ✅ AAPL 财报生成成功! [3/3] 正在生成 MSFT 的财报... ✅ MSFT 财报生成成功!

输出文件

所有生成的报告都会自动保存到 output/ 目录:

output/ ├── company_report_NVDA_20250808_082311.txt ├── company_report_AAPL_20250808_082312.txt ├── company_report_MSFT_20250808_082313.txt └── ...

文件命名格式:company_report_{公司代码}_{时间戳}.txt

注意事项

  • 当前版本使用模拟数据,实际应用中可集成真实财务API
  • 报告中的投资建议仅供参考,不构成实际投资建议
  • 所有报告自动保存到 output/ 目录
  • interactive_company_demo_real.py 是已发布的公众号文章基础,请勿修改
  • AI功能需要本地Ollama服务支持,确保模型名称正确(deepseek-r1:7b)

故障排除

常见问题

  1. 导入错误
    ImportError: attempted relative import with no known parent package
    • 解决方案:确保在项目根目录运行脚本
  2. 公司代码错误
    ValueError: 不支持的公司代码: XXX
    • 解决方案:检查公司代码是否正确,参考支持的公司列表
  3. 文件保存失败
    PermissionError: [Errno 13] Permission denied
    • 解决方案:检查output目录权限,或手动创建output目录
  4. Ollama连接失败
    ConnectionError: Cannot connect to Ollama service
    • 解决方案:确保Ollama服务运行,检查端口11434是否开放

获取帮助

如果遇到问题,请:

  1. 检查错误信息
  2. 确认运行环境
  3. 查看日志文件
  4. 参考本文档

扩展功能

添加新公司

src/mcp_server/tools/company_report_generator.py 中的 companies 字典添加新公司:

self.companies = { "NEW": {"name": "New Company", "sector": "Technology", "industry": "Software"}, # ... 其他公司 }

自定义报告模板

修改 _create_company_report 方法来自定义报告格式和内容。

集成真实数据

替换 _get_mock_financial_data 方法,集成真实的财务数据API。

贡献指南

欢迎提交Issue和Pull Request来改进这个项目。

Demo文件说明

简化后的文件结构

项目已经简化为两个核心演示文件:

1. interactive_company_demo_real.py - 纯MCP功能演示
  • 功能: 展示纯MCP工具的核心能力
  • 特点:
    • 交互式用户输入
    • 支持单个和批量财报生成
    • 多种报告类型选择
    • 完整的MCP工具演示
  • 用途: 学习MCP基础概念和工具使用
  • 注意: 此文件是已发布公众号文章的基础,请勿修改
2. ai_mcp_demo.py - AI+MCP集成演示
  • 功能: 展示AI模型与MCP工具的完美结合
  • 特点:
    • 集成Ollama deepseek-r1:7b模型
    • AI驱动的财务分析
    • 智能报告生成
    • AI投资建议
    • AI与MCP工具协作演示
  • 用途: 学习AI模型与MCP工具的集成方法
  • 前置条件: 需要运行Ollama服务

使用建议

  1. 初学者: 先运行 interactive_company_demo_real.py 学习MCP基础
  2. 进阶用户: 运行 ai_mcp_demo.py 体验AI增强功能
  3. 开发学习: 查看 src/ 目录下的源代码实现

部署指南

Vercel 部署

项目概述

这是一个包含Python MCP服务器和Next.js Web界面的财务报告系统。

部署配置
1. 项目设置
  • Framework Preset: Next.js
  • Root Directory: ./web-interface
  • Build Command: npm run build
  • Output Directory: .next
  • Install Command: npm install
2. 环境变量配置

在Vercel项目设置中添加以下环境变量(如果需要):

# 数据库连接(如果有) DATABASE_URL=your_database_url # API密钥(如果需要) API_KEY=your_api_key # 其他配置 NODE_ENV=production
3. 部署步骤
步骤1: 连接GitHub仓库
  1. 在Vercel中点击"New Project"
  2. 选择GitHub仓库: KennanYang/financial-report
  3. 选择分支: master
步骤2: 配置项目
  • Project Name: financial-report (或您喜欢的名称)
  • Framework Preset: Next.js
  • Root Directory: ./web-interface
  • Build Command: npm run build (自动检测)
  • Output Directory: .next (自动检测)
步骤3: 环境变量

根据需要在"Environment Variables"部分添加配置

步骤4: 部署

点击"Deploy"按钮开始部署

4. 项目结构说明
financial-report/ ├── web-interface/ # Next.js前端应用(Vercel部署目标) │ ├── src/ │ │ ├── app/ # Next.js App Router │ │ ├── components/ # React组件 │ │ └── lib/ # 工具函数和常量 │ ├── package.json │ ├── next.config.ts │ └── vercel.json # Vercel配置文件(在web-interface目录中) ├── src/ # Python MCP服务器(不在Vercel部署) └── config/ # 配置文件
5. 注意事项
  1. Python后端: MCP服务器部分不会部署到Vercel,Vercel只部署Next.js前端
  2. API路由: Next.js API路由位于 web-interface/src/app/api/
  3. 静态资源: 公共文件位于 web-interface/public/
  4. 构建输出: 构建后的文件位于 web-interface/.next/
6. 自定义域名(可选)

部署成功后,您可以在Vercel项目设置中配置自定义域名。

7. 自动部署

每次推送到 master 分支时,Vercel会自动触发新的部署。

故障排除
常见问题
  1. 构建失败: 检查 npm run build 是否在本地成功
  2. 依赖问题: 确保 package.json 中的依赖版本兼容
  3. 环境变量: 检查必要的环境变量是否已配置
本地测试

在部署前,建议在本地测试:

cd web-interface npm install npm run build npm start
支持

如果遇到部署问题,请检查:

  1. Vercel部署日志
  2. 本地构建是否成功
  3. 环境变量配置
  4. 项目依赖版本兼容性

许可证

MIT License

Related MCP Servers

  • A
    security
    F
    license
    A
    quality
    Provides tools to get financial data (stock prices, company information) and generate financial visualizations through the Model Context Protocol.
    Last updated -
    10
    4
    • Apple
    • Linux
  • A
    security
    A
    license
    A
    quality
    Enables AI assistants to access and analyze financial data including stock information, company fundamentals, and market insights through the Financial Modeling Prep API.
    Last updated -
    253
    35
    TypeScript
    Apache 2.0
    • Linux
    • Apple
  • -
    security
    -
    license
    -
    quality
    Advanced server for simulating financial models and stochastic processes, offering tools for generating simulations, calculating financial metrics, and visualizing results with interactive components.
    Last updated -
  • -
    security
    F
    license
    -
    quality
    Enables deep analysis of SEC EDGAR filings through universal company search, document content extraction, and advanced filing search capabilities. Provides AI-ready access to business descriptions, risk factors, financial statements, and full-text search across any public company's SEC documents.
    Last updated -

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KennanYang/financial-report'

If you have feedback or need assistance with the MCP directory API, please join our Discord server