Skip to main content
Glama

Financial Report Generator MCP Server

by KennanYang
README.md19.9 kB
# 财务报告生成项目 - 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. 修改数据源配置 ```python # 文件: 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配置 ```python # 文件: 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. 安装必要的依赖 ```bash # 添加到 requirements.txt requests>=2.25.0 yfinance>=0.1.70 alpha_vantage>=2.3.1 ``` #### 4. 处理API限制和错误 ```python # 添加错误处理和重试机制 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. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 安装Ollama(可选,用于AI功能) ```bash # 下载并安装Ollama # 访问 https://ollama.ai 下载安装包 # 安装deepseek-r1模型 ollama pull deepseek-r1:7b ``` ### 3. 运行演示 #### 纯MCP功能演示 ```bash # 运行纯MCP功能演示(包含交互式选择) python interactive_company_demo_real.py ``` #### AI+MCP集成演示 ```bash # 运行AI+MCP集成演示(需要Ollama服务运行) python ai_mcp_demo.py ``` ### 4. 启动MCP服务器 ```bash # 启动纯MCP服务器 python -m src.mcp_server.server # 或者直接运行交互式演示,其中包含服务器启动选项 ``` ## AI功能使用 ### 前置条件 1. 安装Ollama服务 2. 下载deepseek-r1:7b模型:`ollama pull deepseek-r1:7b` 3. 启动Ollama服务:`ollama serve` ### 使用AI功能 ```python 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工具协作 ## 支持的公司 | 代码 | 公司名称 | 行业 | |------|----------|------| | NVDA | NVIDIA Corporation | 半导体 | | AAPL | Apple Inc. | 消费电子 | | MSFT | Microsoft Corporation | 软件 | | GOOGL | Alphabet Inc. | 互联网服务 | | TSLA | Tesla Inc. | 汽车 | | AMZN | Amazon.com Inc. | 电子商务 | | META | Meta Platforms Inc. | 社交媒体 | | NFLX | Netflix Inc. | 流媒体 | | AMD | Advanced Micro Devices | 半导体 | | INTC | Intel 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% ``` ## 使用方法详解 ### 方法一:自动演示版本 ```bash python interactive_company_demo.py ``` - 自动演示所有功能 - 无需用户输入 - 适合快速了解功能 ### 方法二:真正交互式版本 ```bash python interactive_company_demo_real.py ``` - 需要用户实际输入 - 支持单个和批量生成 - 完整的交互体验 ## 使用步骤详解 ### 单个公司财报生成 1. **启动程序** ```bash 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` 字典添加新公司: ```python 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项目设置中添加以下环境变量(如果需要): ```bash # 数据库连接(如果有) 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. **环境变量**: 检查必要的环境变量是否已配置 ##### 本地测试 在部署前,建议在本地测试: ```bash cd web-interface npm install npm run build npm start ``` #### 支持 如果遇到部署问题,请检查: 1. Vercel部署日志 2. 本地构建是否成功 3. 环境变量配置 4. 项目依赖版本兼容性 ## 许可证 MIT License

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