金融数据服务器

一个通过Yahoo Finance API集成提供金融数据的模型上下文协议(MCP)服务器,支持实时股票市场数据、历史价格、财务报表和市场分析。

  • by barvhaim
  • Python
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 barvhaim/yfinance-mcp-server

使用说明

YFinance MCP服务器

一个全面的模型上下文协议(MCP)服务器,通过雅虎金融API集成提供财务数据。该服务器使AI代理能够访问实时股票市场数据、历史价格、财务报表和市场分析。

特性

  • 10种综合金融工具 完整的市场数据访问
  • 实时股票信息 包括价格、市值和关键指标
  • 历史数据分析 具有灵活的时间段和间隔
  • 财务报表 (损益表、资产负债表、现金流量表)
  • 收益数据 (年度和季度)
  • 股息和拆分历史
  • 新闻和分析师建议
  • 股票搜索和多报价支持
  • 稳健的错误处理 具有结构化JSON响应
  • FastMCP框架 支持异步以实现高性能

快速开始

先决条件

  • Python 3.11+
  • uv(Python包管理器)

安装

# Clone the repository
git clone https://github.com/barvhaim/yfinance-mcp-server.git
cd yfinance-mcp-server

# Install dependencies
uv sync

运行服务器

# Start the MCP server
uv run main.py

# The server will start and be ready to accept MCP client connections

可用工具

1.get_stock_info

获取全面的股票信息,包括当前价格、市值和财务指标。

参数:

  • symbol (str):股票代码(例如“AAPL”、“GOOGL”)

退货: 股票信息,包括价格、市值、市盈率、股息率、52周区间、成交量、贝塔系数和公司详细信息。

2.获取历史数据

以灵活的时间段和间隔检索历史股票价格数据。

参数:

  • symbol (str):股票代码
  • period (str):时间段(1d、5d、1mo、3mo、6mo、1y、2y、5y、10y、ytd、max)
  • interval (str):数据间隔(1m、2m、5m、15m、30m、60m、90m、1h、1d、5d、1wk、1mo、3mo)

退货: 历史OHLCV数据,包括日期和体积信息。

3.get_dividends

获取股票的股息支付历史记录。

参数:

  • symbol (str):股票代码

退货: 股息支付清单,包括日期和金额。

4.get_splits

检索股票分割历史记录。

参数:

  • symbol (str):股票代码

退货: 带有日期和分割比率的股票分割列表。

5.财务人员

获取全面的财务报表。

参数:

  • symbol (str):股票代码
  • quarterly (bool):如果为True,则获取季度数据,如果为False,则获取年度数据

退货: 损益表、资产负债表和现金流量表数据。

6.获取收益

检索收益数据进行分析。

参数:

  • symbol (str):股票代码

退货: 年度和季度收益数据。

7.获取新闻

获取与股票相关的最新新闻文章。

参数:

  • symbol (str):股票代码
  • count (int):要返回的文章数(默认值:10)

退货: 包含标题、链接、出版商和时间戳的新闻文章列表。

8.获得表彰

获取分析师的建议和评级。

参数:

  • symbol (str):股票代码

退货: 分析师建议列表,包括公司、评级和行动。

9.搜索库存

按公司名称或股票代码搜索股票。

参数:

  • query (str):搜索查询(公司名称或股票代码)
  • limit (int):返回的最大结果数(默认值:10)

退货: 带有符号、名称和交易所信息的匹配股票列表。

10.获取多个引号

同时获取多只股票的当前报价。

参数:

  • symbols (List[str]):股票代码列表

退货: 包含当前价格、变化和基本指标的股票报价词典。

使用示例

股票基本信息

# Get Apple stock information
result = await get_stock_info("AAPL")
print(f"Current Price: ${result['current_price']}")
print(f"Market Cap: ${result['market_cap']:,}")

历史数据分析

# Get 1-year daily data for Google
result = await get_historical_data("GOOGL", period="1y", interval="1d")
print(f"Retrieved {result['count']} data points")

多个股票报价

# Get quotes for tech stocks
result = await get_multiple_quotes(["AAPL", "GOOGL", "MSFT", "AMZN"])
for symbol, quote in result['quotes'].items():
    print(f"{symbol}: ${quote['current_price']}")

MCP客户端集成

Claude桌面集成

要将此服务器与Claude Desktop连接,请执行以下操作:

  1. 启动服务器 在一个终端中:

    uv run main.py
    
  2. 配置Claude桌面 通过编辑MCP设置文件:

    macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    视窗: %APPDATA%\Claude\claude_desktop_config.json

  3. 添加服务器配置:

    {
       "yfinance": {
         "command": "uv",
         "args": [
           "--directory",
           "/path/to/yfinance-mcp-server",
           "run",
           "main.py"
         ]
       }
     }
    
  4. 更新cwd路径 到您的实际项目目录

  5. 重新启动克劳德桌面 加载新服务器

  6. 验证连接 问克劳德:“你有什么财务数据工具?”

替代方案:直接连接

对于其他MCP客户端:

  1. 启动服务器: uv run main.py
  2. 配置您的MCP客户端 连接到服务器终结点
  3. 工具将被自动发现 由您的AI代理
  4. 使用标准股票代码 (AAPL、GOOGL、MSFT等)使用工具

发展

代码格式化

# Format code with black
uv run black .

# Check formatting
uv run black --check .

# Show formatting differences
uv run black --diff .

添加新工具

  1. 在中创建一个新的异步函数 main.py
  2. 用…装饰 @mcp.tool()
  3. 添加适当的类型提示和文档字符串
  4. 包括错误处理
  5. 测试实施情况

环境变量

复制 .env.sample 向 .env 对于所需的任何配置:

cp .env.sample .env

错误处理

所有工具都包括全面的错误处理:

  • 无效符号 返回结构化错误消息
  • 网络问题 被发现并报告
  • 数据不可用 处理得当
  • 速率限制 自动受到财务部门的尊重

性能注意事项

  • 异步操作 为了获得最佳性能
  • 高效的数据序列化 使用结构化JSON
  • 最少的数据处理 减少延迟
  • 内置缓存 通过yfinance获取频繁访问的数据

依赖项

  • fastmcp -用于MCP服务器实现的FastMCP框架
  • y融资 -雅虎金融API财务数据
  • python dotenv -环境变量管理
  • 黑色 -代码格式
  • 媒染剂 -数据验证和序列化

许可证

该项目在MIT许可证下可用。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 黑色格式化代码
  6. 提交拉取请求

支持

对于问题和疑问:

  • 检查 问题 章节
  • 查看 CLAUDE.md 开发指导文件
  • 确保所有依赖项都已正确安装 uv sync

更新日志

v0.1.0

  • 初步实施10个财务数据工具
  • FastMCP服务器框架集成
  • 全面的错误处理
  • 金融API全面覆盖
  • MCP客户端集成支持