返回市场
独立雅虎财经MCP

独立雅虎财经MCP

作者:bxxd2 星标更新:2025-11-23

项目介绍

mcp-yfinance-ux

对于AI代理: 市场数据以Bloomberg终端格式呈现。不是原始JSON,而是可以直接阅读的格式化表格。导航方式类似于BBG:markets()sector('technology')ticker('AAPL')ticker_options('AAPL')。智能默认设置(自动检测市场时间),逐步披露(概要→详细)。

对于人类: 密集、可扫描的屏幕。因子暴露、动量、期权定位——所有内容都格式化得像一个专业终端。

技术细节: 本地标准输入输出服务器,由yfinance驱动。所有查询均由用户发起(无自动化——这是一个研究工具,而不是生产基础设施)。

示例输出

我们的差异化特点:BBG Lite格式,适合AI代理的屏幕

市场 | 2025年10月26日 星期日 12:42 EDT

美国股票                   价格     变动       1个月         1年
S&P 500                      6791.69    +0.79%     +2.2%     +16.9%
纳斯达克                      23204.87    +1.15%     +3.2%     +25.3%
道琼斯指数                  47207.12    +1.01%     +2.1%     +12.1%
罗素2000指数                2513.47    +1.24%     +3.3%     +13.8%

行业板块          股票代码      价格     变动       1个月         1年
科技               XLK          293.58    +1.23%     +5.3%     +28.3%
金融               XLF           53.11    +0.84%     -1.4%     +15.6%
医疗保健           XLV          146.03    -0.05%     +7.8%      +0.0%
能源               XLE           88.07    -1.01%     -4.3%      +1.4%
[... 所有11个GICS行业板块]

商品                   价格     变动       1个月         1年
黄金                     4137.80    +0.05%     +9.6%     +51.0%
WTI原油                    61.50    +0.10%     -6.4%     -14.3%

截至2025年10月26日 12:42 EDT的数据 | 数据来源:yfinance

密集、可扫描、专业的输出。不是原始JSON——而是为人类设计的格式,AI可以自动受益。

特性

Bloomberg终端风格的市场数据导航屏幕:

  • markets() - 完整的因子景观(美国股票、全球市场、行业板块、风格、商品、波动性)
  • sector(name) - 行业细分,包括顶级持仓和因子暴露
  • ticker(symbol) - 单个证券分析,包含完整的因子分解
  • 批量比较 - 并排股票分析,关键因子对比
  • 日历集成 - 盈利日期、分红计划
  • BBG Lite格式 - 密集、可扫描、专业的输出

库架构

mcp-yfinance-ux 包含一个可重用库,用于可靠的yfinance数据获取。

lib/yfinance_fetcher.py

yfinance数据获取逻辑的唯一真实来源:

  • 使用ThreadPoolExecutor进行单独的yf.Ticker().history()调用(可靠)
  • 不使用yf.download()批量API(不可靠——超时,整个批次失败)

使用场景:

  1. MCP服务器 - mcp_yfinance_ux/historical.pylib/导入
  2. 投资组合脚本 - 可复制到投资组合代理中,实现可靠的数据获取
  3. 任何Python代码 - 纯逻辑,无需依赖MCP

关键函数:

  • fetch_price_history(symbol, months=12) - 单个符号的历史数据
  • fetch_multiple_histories(symbols, months=12) - 并行多符号获取
  • fetch_ticker_and_market(symbol, months=12) - 获取单个股票及其市场数据(用于因子分析)
  • fetch_price_at_date(symbol, date) - 在特定日期的价格(窄窗口)

为什么这种模式有效:

  • 单独获取不会因批次而失败
  • ThreadPoolExecutor提供了并行处理能力,而无需批量API
  • 已在生产环境中验证(MCP服务器服务于实际用户)

文档: 请参阅lib/README.md中的使用示例和部署流程。

重要提示:使用限制

此工具仅适用于临时、用户发起的请求。不适合自动化。

关于yfinance

yfinance是一个非官方的网页抓取器,不是授权的Yahoo Finance API。它模拟浏览器请求来获取财务数据。

影响:

  • 随时可能中断 - Yahoo网站的变化可能会完全破坏该库
  • 没有正式的速率限制 - 因为这不是官方API
  • 容易被阻止 - 自动轮询或大量请求会触发Yahoo的反抓取措施(429错误,IP封禁)
  • 没有保证 - Yahoo在2024年初显著收紧了限制

安全使用(此工具适用的情况)

✅ 合适的使用场景:

  • 随机市场检查和分析
  • 单次股票研究
  • 手动理论开发
  • 为特定数据偶尔查询

所有查询都是用户发起且交互式的。

不安全使用(不要这样做)

❌ 永远不要用于:

  • 定时任务或定期更新
  • 自动监控循环
  • 后台进程轮询数据
  • 生产基础设施
  • 实时投资组合跟踪

如果您需要自动化或生产级数据,请使用官方API(如Alpha Vantage、Polygon.io、IEX Cloud等)

总结

这个MCP服务器是一个用于偶尔查询的研究工具,而不是生产基础设施。非常适合PMF测试和随机分析。不适合自动化或持续监控。

安装

1. 克隆并安装依赖项

git clone https://github.com/bxxd/idio-mcp-yfinance-ux.git
cd idio-mcp-yfinance-ux
poetry install

2. 配置MCP客户端

注意: 这是一个本地标准输入输出MCP服务器。它运行在您的机器上,并通过标准I/O连接到MCP客户端(不通过HTTP/网络)。所有数据都保留在本地。

方法1:使用make -C(推荐)

从项目目录:

claude mcp add idio-yf make -C /绝对路径/to/mcp-yfinance-ux serve

或者手动添加到~/.claude.json下的项目mcpServers

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "idio-yf": {
          "type": "stdio",
          "command": "make",
          "args": ["-C", "/绝对路径/to/mcp-yfinance-ux", "serve"],
          "env": {}
        }
      }
    }
  }
}

为什么采用这种方法?

  • 单一真实来源(Makefile定义了服务器命令)
  • 不需要记住poetry/python调用细节
  • 自我记录(Makefile是版本控制的一部分)
  • 从任何目录工作(make -C处理工作目录)

方法2:直接命令(替代方案)

如果您不想使用make:

claude mcp add idio-yf poetry run python -m mcp_yfinance_ux.server --cwd /path/to/mcp-yfinance-ux

或者手动:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "idio-yf": {
          "type": "stdio",
          "command": "poetry",
          "args": ["run", "python", "-m", "mcp_yfinance_ux.server"],
          "cwd": "/绝对路径/to/mcp-yfinance-ux",
          "env": {}
        }
      }
    }
  }
}

注意: 对于claude CLI用户,MCP服务器配置在每个项目的~/.claude.json中。其他MCP客户端可能有不同的配置方法。

方法3:SSE/HTTP服务器(用于基于web的部署)

对于基于web的界面或需要持久HTTP服务器的情况:

# 启动HTTP服务器(在后台运行,端口5001)
make server

# 或指定自定义端口
PORT=8080 make server

# 查看日志
make logs

配置Claude Code以使用SSE传输:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "yfinance-ux": {
          "type": "sse",
          "url": "http://127.0.0.1:5001/sse"
        }
      }
    }
  }
}

何时使用SSE:

  • 基于web的Claude Code部署(例如,浏览器终端)
  • 多个客户端共享一个服务器实例
  • 调试时无需重启Claude Code

何时使用stdio:

  • 本地CLI使用(标准方法)
  • 单用户开发环境

3. 重新启动MCP客户端

配置后,重新启动您的MCP客户端以加载服务器。

工作原理:

  • stdio模式: MCP客户端作为子进程启动服务器,通过标准输入输出通信
  • SSE模式: MCP客户端通过Server-Sent Events连接到持久HTTP服务器

使用

导航层次结构类似于Bloomberg终端:

markets() → sector('technology') → ticker('AAPL')

markets() - 市场概览

完整的因子景观,无需参数:

mcp__idio_yf__markets()

显示:

  • 美国股票 - S&P 500、纳斯达克、道琼斯、罗素2000(带有Beta、1个月/1年动量)
  • 全球 - 欧洲(STOXX 50)、亚洲(日经)、中国(上海)
  • 行业板块 - 所有11个GICS行业板块(XLK、XLF、XLV等)带有Beta和动量
  • 风格 - 动量(MTUM)、价值(VTV)、成长(VUG)、质量(QUAL)、规模(IWM)
  • 商品 - 黄金、石油、天然气(带有Beta和动量)
  • 波动性和利率 - VIX、10年期国债

自动检测市场时间(盘后显示期货,盘中显示指数)。

sector(name) - 行业细分

详细的行业分析,包括顶级持仓:

mcp__idio_yf__sector(name='technology')

显示:

  • 行业ETF价格和动量(1个月、1年)
  • 对SPX的Beta、特异性波动率
  • 前十大持仓,包括符号、名称、权重和个别Beta

可用行业: technology, financials, healthcare, energy, consumer_disc, consumer_stpl, industrials, utilities, materials, real_estate, communication

ticker(symbol) - 单个证券分析

完整的因子分解,针对股票:

mcp__idio_yf__ticker(symbol='AAPL')

显示:

  • 因子暴露 - 对SPX的Beta、特异性波动率、总波动率
  • 估值 - P/E比率、前瞻P/E、股息收益率
  • 日历 - 下一次盈利日期及估计值、除息日、支付日
  • 动量和技术指标 - 1个月/1年回报率、14天RSI、50/200日移动平均线
  • 52周范围 - 当前位置的可视化条形图

批量比较

并排股票比较:

mcp__idio_yf__ticker(symbol=['TSLA', 'F', 'GM'])

表格格式显示: 符号、名称、价格、变动%、Beta、特异性波动率、1年动量、P/E、股息收益率、RSI

输出格式

BBG Lite风格 - 密集、可扫描、专业的格式,类似于Bloomberg终端。

示例ticker()输出:

AAPL 美国股票                   最新价格  262.24 +9.95  +3.94%
苹果公司                               市值  3891.7B    成交量  90.1M

因子暴露
对SPX的Beta       1.09
特异性波动率         21.7%
总波动率        32.8%

估值
P/E比率         39.85
前瞻P/E       31.56
股息收益率    0.40%

日历
盈利         2025年10月30日  (预计EPS $1.77)
除息         2025年8月11日
支付日       2025年8月14日

动量和技术指标
1个月            +6.8%
1年            +11.4%
50日均线         241.73
200日均线        222.14
14天RSI         59.5

52周范围
最高              264.38
最低               169.21
当前             262.24  [===================░]  98% 的范围

示例批量比较:

股票比较 2025年10月21日 08:42 EDT

符号   名称                                价格     变动%   Beta   特异性波动率    1年动量      P/E   股息收益率    RSI
---------------------------------------------------------------------------------------------------------
AAPL     苹果公司                         262.24   +3.94%   1.09  21.7%   +11.4%    39.85  0.40%   59.5
MSFT     微软公司                          516.79   +0.63%   1.02  17.0%   +24.3%    37.89  0.70%   48.8
GOOGL    Alphabet公司                      256.55   +1.28%   1.00  25.5%   +57.1%    27.32  0.33%   66.1

干净、易读、立即有用。

开发

快速开始

使用Makefile(推荐):

make all        # 运行lint + 测试(提交前始终执行)
make test       # 运行测试
make lint       # 运行类型检查 + linting
make lint-fix   # 自动修复linting问题
make serve      # 运行MCP服务器(stdio模式)
make help       # 显示所有命令

手动测试(无需MCP):

# 通过CLI测试屏幕(无需重启MCP)
./cli markets
./cli sector technology
./cli ticker AAPL
./cli ticker TSLA F GM    # 批量比较

文档

  • DEVELOPER.md - 设计理念、工程原则、开发过程
  • CLAUDE.md - 额外上下文和开发笔记

设计原则

  • 关注点分离 - 业务逻辑与MCP无关
  • 单一真实来源 - 每个数据/逻辑片段都有一个真实的路径
  • 人类可读的输出 - 格式化为人类,而非机器
  • 保持简单 - 完全匹配手动测试,避免过度工程

许可证

MIT