mcpField
M
morningstar

morningstar

github.com/gauss314数据与数据库252254 次安装19 周前更新
代码仓库

关于 morningstar

morningstar 是通过 Morningstar screener 的 JSON 端点检索全球股票数据的技能,适合需要筛选和导出证券信息的用户。它支持按市场、国家和字段查询,并可保存为 JSON 或 CSV;所用端点并非官方接口。

主要功能

  1. 01按名称搜索股票代码
  2. 02筛选或下载多个市场的数据
  3. 03选择可用字段
  4. 04导出为 JSON 或 CSV
  5. 05查看字段与市场代码参考

适用场景

  1. 01查找指定市场中的股票
  2. 02批量导出多个市场的证券列表
  3. 03按估值或收益字段筛选股票
  4. 04生成 CSV 以供后续分析

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gauss314/skills --skill morningstar

安装后在 Claude Code 中输入/morningstar确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
DATA_POINTS.md
UNIVERSES.md
references/
REFERENCE.md
scripts/
fetch_morningstar.py

详细介绍

Morningstar — 通过 API JSON 使用筛选器

通过逆向工程发现的内部 JSON 端点,下载 Morningstar 的全球股票数据库。无需 API 密钥、无需身份验证,也没有严格的速率限制。


⚠️ 法律声明

  • 此端点不是官方端点——它是通过拦截 Morningstar 网站筛选器界面的 XHR 流量发现的。
  • 数据来自 Morningstar 的公开网站。请遵守该网站的服务条款。
  • 只有 /security/screener 端点无需身份验证即可访问。Morningstar 的其他端点(api-global、global、lt 等)需要通过 AWS WAF 验证挑战(此工具不支持)。
  • 如需高频使用,请在请求之间暂停 0.5-1 秒。

脚本

脚本说明
fetch_morningstar.py主脚本:info、fields、search、screener、download

安装依赖

pip install requests

仅使用纯 requests,没有额外依赖。


快速使用

# === INFO ===
python scripts/fetch_morningstar.py info       # Stats del skill
python scripts/fetch_morningstar.py fields     # 33 campos disponibles

# === BUSCAR TICKERS (por nombre, multi-universe) ===
python scripts/fetch_morningstar.py search Apple --universe XNAS
python scripts/fetch_morningstar.py search Apple --universe XNAS XFRA XBUE
python scripts/fetch_morningstar.py search YPF --universe XBUE
python scripts/fetch_morningstar.py search "MercadoLibre" --universe XNAS BVMF

# === DESCARGA MASIVA (screener) ===
python scripts/fetch_morningstar.py screener --universe XNAS
python scripts/fetch_morningstar.py screener --universe XBUE
python scripts/fetch_morningstar.py screener --universe XNAS XLON XTKS

# === DESCARGA POR PAIS ===
python scripts/fetch_morningstar.py screener --country AR
python scripts/fetch_morningstar.py screener --country US
python scripts/fetch_morningstar.py screener --country DE

# === DESCARGA COMPLETA (53 universes, 100K+ listings) ===
python scripts/fetch_morningstar.py screener --all

# === GUARDAR A ARCHIVO ===
python scripts/fetch_morningstar.py screener --universe XBUE -o argentina.json
python scripts/fetch_morningstar.py screener --universe XNAS -o nasdaq.csv
python scripts/fetch_morningstar.py screener --country AR -o ar.csv
python scripts/fetch_morningstar.py search "YPF" --universe XBUE -o ypf_results.json

# === DOWNLOAD (alias de screener) ===
python scripts/fetch_morningstar.py download --universe XBUE -o ar.csv

# === MODO SILENCIOSO (solo JSON, sin logs) ===
python scripts/fetch_morningstar.py search Apple --universe XNAS -q
python scripts/fetch_morningstar.py screener --universe XBUE -q -o ar.json

# === CAMPOS ESPECIFICOS (--fields) ===
python scripts/fetch_morningstar.py screener --universe XNAS --fields Ticker Name ClosePrice MarketCap PERatio

可用模式

模式说明示例
infoSkill 统计信息、域名、令牌、#universes、#字段python fetch_morningstar.py info
fields列出 33 个可用的 securityDataPoints 及其说明python fetch_morningstar.py fields
search在一个或多个 universe 中按名称搜索股票代码python fetch_morningstar.py search Apple --universe XNAS
screener批量下载一个或多个 universe(整个数据库)python fetch_morningstar.py screener --universe XNAS
downloadscreener 的别名python fetch_morningstar.py download --universe XNAS
参数
参数说明示例
--universe XNAS一个或多个 universe 代码(不带前缀 E0EXG$)--universe XNAS XBUE
--country ARISO 国家代码(支持 39 个国家)--country AR US DE
--all全部 53 个 universe(约 100K 条上市记录,耗时约 1-2 分钟)--all
--fields Ticker Name字段子集(默认:全部 33 个)--fields Ticker Name ClosePrice
--output archivo.json保存为 JSON-o data.json
--output archivo.csv保存为 CSV(扁平格式)-o data.csv
-q / --quiet仅输出 JSON,不显示日志-q

覆盖范围

53 个 universe、102,093 条上市记录、39 个国家——参见 assets/UNIVERSES.md。

排名前 10 的 universe
Universe交易所国家上市记录
XFRAFrankfurt (Tradegate)德国14,082
XSTUStuttgart德国9,971
XMUNMunich德国8,425
XDUSDusseldorf德国8,297
XBOMBombay (BSE)印度5,192
XTKSTokyo日本3,989
XNASNasdaq美国3,741
XNSENSE India印度3,018
XSHEShenzhen中国2,934
XKRXKorea Exchange韩国2,877
阿根廷

XBUE (BCBA) → 469 份 CEDEAR(外国股票存托凭证),价格以 ARS 计。

python fetch_morningstar.py screener --universe XBUE -o ar.csv

每份 CEDEAR 的 PerformanceId 都与原始 ADR 不同。例如:Apple Inc CEDEAR (0P0000TFNY) ≠ Apple Inc NASDAQ (0P000000GY)。

巴西

BVMF (B3) → 2,070 份 BDR/只股票,以 BRL 计。

墨西哥

XMEX (BMV) → 2,233 只股票,以 MXN 计。


字段(共 33 个)

5 个元数据字段: Ticker、Name、PerformanceId、Universe、MarketCountryName

5 个分类字段: SectorName、IndustryName、EquityStyleBox(1-9)、QuantitativeStarRating(1-5)

23 个数值字段:

  • 价格/规模(2): ClosePrice、MarketCap
  • 估值(3): PERatio、PEGRatio、DividendYield
  • 质量(7): DebtEquityRatio、NetMargin、EBTMarginYear1、ROATTM、ROETTM、ROEYear1、ROICYear1
  • 增长(2): EPSGrowth3YYear1、RevenueGrowth3Y
  • 回报(9): ReturnD1、ReturnW1、ReturnM0、ReturnM1、ReturnM3、ReturnM6、ReturnM12、ReturnM36、ReturnM60、ReturnM120

详情请参阅 assets/DATA_POINTS.md。


输出示例

search Apple --universe XNAS(1 个结果)
{
  "_meta": {
    "query": "Apple",
    "universe_count": 1,
    "total_results": 1
  },
  "results": [
    {
      "Ticker": "AAPL",
      "PerformanceId": "0P000000GY",
      "Name": "Apple Inc",
      "ClosePrice": 311.23,
      "MarketCap": 4571145807880,
      "MarketCountryName": "United States",
      "SectorName": "Technology",
      "IndustryName": "Consumer Electronics",
      "_universe_code": "XNAS",
      "_universe_name": "Nasdaq"
    }
  ]
}
screener --universe XBUE -o ar.csv(469 行)
_universe_code,Ticker,Name,PerformanceId,Universe,ClosePrice,MarketCap,SectorName,IndustryName,EquityStyleBox,...
XBUE,MMM,3M Co Cedear,0P0000D5UB,E0EXG$XBUE,23100,Industrials,Conglomerates,4,...
XBUE,A3,A3 Mercados SA Ordinary Shares,0P0000WJD7,E0EXG$XBUE,2215,Financial Services,Financial Data & Stock Exchanges,,...
XBUE,YPFD,YPF SA Class D,0P0000BS4D,E0EXG$XBUE,83850,Energy,Oil & Gas Integrated,9,...
search YPF --universe XBUE(4 个结果)
{
  "_meta": {"query": "YPF", "universe_count": 1, "total_results": 4},
  "results": [
    {"Ticker": "YPFD",   "PerformanceId": "0P0000BS4D", "Name": "YPF SA Class D",        "ClosePrice": 83850, "SectorName": "Energy", "IndustryName": "Oil & Gas Integrated", "_universe_code": "XBUE"},
    {"Ticker": "YPFD1",  "PerformanceId": "0P0001NX4I", "Name": "YPF SA Class D Cedear", ...},
    {"Ticker": "YPF",    "PerformanceId": "...",          "Name": "YPF SA",                ...},
    ...
  ]
}

技术注意事项

通用令牌

同一个令牌 klr5zyak8x 可用于 tools.morningstar.* 的 5 个子域名:

域名默认语言
tools.morningstar.co.uk英语(英国)
tools.morningstar.de德语
tools.morningstar.fr法语
tools.morningstar.it意大利语
tools.morningstar.es西班牙语

它们都会返回相同的数据。脚本会依次尝试这 5 个域名,直到其中一个返回 200。

不适用于: tools.morningstar.com(美国)、.com.au、.br、.jp 等(地理封锁、IP 阻止或端点不存在)。

编码

API 会根据 languageId(es-AR、de-DE 等)返回相应语言的行业/产业名称。**问题:**带重音符号的字符编码错误(返回 Energ�a 而不是 Energía)。

**脚本的解决方案:**对所有 Universe 使用 languageId=en-GB。公司名称(Apple、YPF 等)保持不变,只有行业/产业名称会以英语返回(这是量化筛选器的标准做法)。

速率限制

目前未观察到严格的速率限制。不过:

  • 几秒内发出 50+ 个请求可能触发 CDN 限流
  • 脚本在不同 Universe 之间等待 0.5-1 秒(可在 get() 中配置)
  • 不会进行激进的重试
PerformanceId

每个上市项(在特定交易所挂牌的证券)都有唯一的 PerformanceId。同一个“Apple Inc”对应:

  • NASDAQ(XNAS)上的 0P000000GY
  • XFRA(法兰克福)上的 0P0000EEDJ
  • BVMF(巴西 BDR)上的 0P0000VE8R
  • XBUE(阿根廷 CEDEAR)上的 0P0000TFNY

PerformanceId 不会在不同交易所之间通用。它是识别特定上市项的唯一稳定标识符。

技能结构

skills/morningstar/
├── SKILL.md                          # Este archivo (guia rapida)
├── assets/
│   ├── UNIVERSES.md                  # Lista completa de 53 universes
│   └── DATA_POINTS.md                # Lista de 33 campos disponibles
├── references/
│   └── REFERENCE.md                  # Documentacion tecnica detallada
└── scripts/
    └── fetch_morningstar.py          # Script principal

详细文档: 请参阅 references/REFERENCE.md,了解端点、JSON 架构、示例和故障排除的完整技术文档。

评论

支持 Markdown