SEC 10-K文件分析服务

fin-mcp是一个基于多代理LangGraph工作流的AI驱动SEC 10-K文件分析服务,能够自动抓取并分析企业年报中的战略风险、管理层情绪和财务摘要。

  • by Shounak-Ghosh
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Shounak-Ghosh/fin-mcp

使用说明

鳍mcp

MCP(模型上下文协议)服务器,用于使用多代理LangGraph工作流对SEC 10-K文件进行人工智能分析。

概述

鳍mcp 抓取SEC EDGAR 10-K报告,并使用LangChain和LangGraph构建的扇入扇出多代理系统对其进行分析。该系统提取关键见解,包括战略风险、管理基调/情绪和全面的财务摘要。

特性

  • 🔍 SEC数据报废:从SEC EDGAR数据库自动检索10-K文件
  • 🤖 多智能体分析:与专业AI代理并行处理:
    • Parse10K代理:从10-K文件中提取关键部分
    • 风险代理人:从风险因素中识别出三大战略风险
    • 音调代理:分析MD&A的管理基调和情绪
    • 主管代理:将见解综合为综合报告
  • 🔌 MCP服务器:通过模型上下文协议公开分析工具,用于LLM集成
  • 💬 Gradio聊天演示:用于浏览10-K文档的交互式聊天机器人UI

建筑

User Query → Parse10K Agent → [Risk Agent + Tone Agent (parallel)] → Supervisor Agent → Final Report

安装

先决条件

  • Python 3.11或更高版本
  • OpenAI API密钥
  • SEC API密钥

克隆并安装

# Clone the repository
git clone https://github.com/yourusername/fin-mcp.git
cd fin-mcp

uv venv # Create virtual environment, needs to be activated

uv sync # Pull in dependencies

# Install dependencies (using uv)
uv pip install -e .

# Or install with pip
pip install -e .

# Optional: Install demo dependencies
uv pip install -e ".[demo]"
# Or with pip
pip install -e ".[demo]"

环境设置

创建一个 .env 项目根目录中的文件:

OPENAI_API_KEY=your_openai_api_key_here
SEC_API_KEY=your_sec_api_key_here

用法

运行MCP服务器

启动MCP服务器以公开10-K分析工具:

# Using the Python module
# Helpful tip: Run the MCP server in a standalone terminal/bash shell
python -m fin_mcp.server

服务器将在HTTP传输上启动,并公开以下MCP工具:

  • fetch_10k_analysis:分析给定股票代码和年份的10-K文件
  • fetch_ticker:从公司名称中查找股票代码
  • fetch_cik:从股票代码中获取CIK编号
  • fetch_accession_numbers:检索可用的10-K登录号
  • fetch_10k_sections:从10-K文件中解析特定部分

运行Gradio演示

启动交互式聊天界面:

# Using Python module
# Helpful tip: Run the MCP server in a standalone terminal/bash shell
python -m chat_demo.gradio_ui

然后打开浏览器到显示的URL(通常 http://127.0.0.1:7860).

查询示例

在Gradio演示中尝试以下查询:

  • “分析苹果2023年10-K文件”
  • “2022年特斯拉面临的主要风险是什么?”
  • “比较微软2021年和2023年的管理基调”
  • “告诉我NVDA的风险因素”

可用的MCP工具

将MCP客户端连接到fin-MCP服务器时,您将可以访问:

  1. fetch_10k_分析(股票代码:str,年份:int |无) -完整的人工智能分析
  2. fetch_ticker(公司名称:str) -将公司名称转换为股票代码
  3. fetch_cik(股票代码:str) -获取SEC CIK标识符
  4. fetch_access_numbers(cik:str) -列出可用的10-K文件
  5. fetch_10k_sections(访问编号:str,cik:str) -提取特定文档部分

项目结构

fin-mcp/
├── fin_mcp/
│   ├── agents/          # LangChain agent implementations
│   │   ├── base_agent.py
│   │   ├── parse10k_agent.py
│   │   ├── risk_agent.py
│   │   ├── tone_agent.py
│   │   └── supervisor_agent.py
│   ├── graph/           # LangGraph workflow builder
│   │   └── langgraph_builder.py
│   ├── models/          # Pydantic state models
│   │   └── state_models.py
│   ├── tools/           # SEC scraping and agent tools
│   │   ├── sec_tools.py
│   │   └── agent_tools.py
│   └── server.py        # FastMCP server
├── chat_demo/           # Gradio demo application
│   ├── chat_agent.py
│   └── gradio_ui.py
├── pyproject.toml       # Package configuration
└── README.md

运作原理

  1. 数据收集:Parse10K代理使用股票代码从SEC EDGAR获取公司10-K文件
  2. 剖面提取:从HTML文件中解析关键部分(第1A项-风险因素,第7项-MD&A,第7A项)
  3. 平行分析:风险和音调代理同时分析各自的部分
  4. 合成:主管代理将见解整合到一份综合报告中
  5. 交付:结果通过MCP工具或Gradio聊天界面返回

需求

  • beautifulsoup4>=4.12.0 -HTML解析
  • fastmcp>=2.9.2 -MCP服务器框架
  • langchain>=0.3.26 -代理框架
  • langchain-core>=0.3.0 -核心LangChain原语
  • langchain-openai>=0.3.27 -OpenAI集成
  • langgraph>=0.5.0 -多代理编排
  • lxml>=6.0.0 -XML/HTML解析器
  • openai>=1.93.0 -OpenAI API客户端
  • pandas>=2.3.0 -数据处理
  • python-dotenv>=1.0.0 -环境配置
  • requests>=2.32.4 -HTTP请求
  • gradio>=5.35.0 -聊天演示UI(可选)

许可证

MIT许可证-有关详细信息,请参阅许可证文件

贡献

欢迎投稿!请随时提交问题或拉取请求。

致谢

内置: