mcpField
H
HKEx Filings

HKEx Filings

远程服务
hkex-listco-updates.ascent-partners.com金融数据161 天前更新

关于 HKEx Filings

HKEx Filings 是面向研究人员、合规团队和 AI Agent 的 Python 抓取工具及只读 MCP 服务,可提取香港交易所文件的文本与表格,并将数据写入九种数据库的任意组合。

主要功能

  1. 01抓取自 1999 年 4 月起的 HKEx 文件
  2. 02提取 PDF、HTML 和 Excel 文本及表格
  3. 03写入九种数据库的任意组合
  4. 04按数据块跟踪抓取覆盖情况
  5. 05提供托管和本地只读 MCP 服务

适用场景

  1. 01通过 AI Agent 搜索实时 HKEx 文件
  2. 02为研究或合规建立本地文件库
  3. 03提取文件文本和表格用于分析

MCP 相关

托管的 Streamable HTTP 网关提供只读工具,用于搜索文件、浏览文件类别、获取文件和查询服务器信息。本地 stdio 服务为已存储的文件库提供更多工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://hkex-listco-updates.ascent-partners.com/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
pypihkex-filing-scraper2.4.2

工具

4

此工具无需参数。

详细介绍

HKEx 文件抓取工具

一款开源抓取工具,可获取 25 年以上的 HKEx 监管文件——支持写入九种数据库,具备全文提取、图谱关联功能,并为 AI Agent 提供只读 MCP 服务。

HKEx Filing Scraper — one scraper, many databases

CI MCP Registry Glama MCP GitHub Release PyPI Python 3.10+ Docs MCP Ruff License: MIT

概览

**美国有 EDGAR 全文搜索,日本有 EDINET。香港却只有一个一次返回一页结果的搜索表单。**目前没有可批量获取、机器可读的 HKEx 文件全文语料库。本工具旨在构建这样一个语料库。

这是一款开源 Python 工具,可抓取香港联合交易所(HKEx)25 年以上的监管文件,并将其导入九种数据库的任意组合——支持全文和表格提取、分块级覆盖率、可选的图谱关联,以及一个只读 MCP 服务,方便 AI Agent 查询语料库或实时网站。

它直接调用未公开文档的 HKEx JSON API,比驱动浏览器更快、更可靠。

供应商与集成

数据库——九种一等支持的目标数据库,按文档中记录的受欢迎程度排序(参见支持矩阵):

  • PostgreSQL — 适用于生产环境的开源关系型数据库
  • MySQL / MariaDB — GPL 关系型数据库服务,共用一个驱动程序
  • SQLite — 无需服务器的文件数据库,无须安装
  • MongoDB — 文档数据库
  • Neo4j — 属性图数据库
  • ClickHouse — 列式分析引擎
  • DuckDB — 进程内分析引擎
  • SurrealDB — 多模型图数据库与文档数据库

AI 客户端——任何支持 MCP 的 Agent;提供适用于 Claude、ChatGPT、Cursor、VS Code/Copilot、Gemini CLI、opencode、Manus 和 Perplexity的现成配置。

可通过以下平台获取——PyPI · Glama · MCP Registry · 托管网关。

两种使用方式

托管式 MCP 网关本地流水线
说明可供 AI Agent 连接的公共端点hkex-scraper CLI
设置无需设置——粘贴 URL 即可pip install + 一个环境变量
数据实时来自 HKEx,不存储任何数据存储在你的数据库中
文档实时 MCP 网关 · AI Agent 支持入门指南

示例:安装、将公告抓取到 SQLite,然后从 AI Agent 查询托管式 MCP 网关

使用托管式 MCP 网关

POST,Streamable HTTP,无需 API 密钥:

https://hkex-listco-updates.ascent-partners.com/api/mcp

四个只读工具:get_server_info、search_filings(时间窗口最长为 31 天,可选股票代码、标题、文档类型、类别和股票名称筛选条件)、 list_filing_facets(浏览时间窗口包含的内容)和 get_filing(下载一份文档并提取其中的文本和表格)。

通过两种方式从 AI Agent 访问 HKEx 公告:托管式 MCP 网关或本地 stdio 服务

将客户端指向该网关——例如 opencode:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "hkex-live": {
      "type": "remote",
      "url": "https://hkex-listco-updates.ascent-partners.com/api/mcp"
    }
  }
}

然后提问:

Use hkex-live to list the filings published between 2026-09-01 and 2026-09-18,
then summarise the interim report.

AI Agent 支持中提供了 Claude、ChatGPT、Cursor、VS Code/Copilot、Gemini CLI、opencode、Manus 和 Perplexity 的现成配置——对于已存储的语料库,stdio MCP 服务提供了更丰富的工具目录,并发布在 Glama 上。该网关已列入官方 MCP Registry,名称为 com.ascent-partners/hkex-filings。

Glama 推荐项目——只读的 stdio MCP 服务也发布在 Glama 上,Glama 会扫描构建好的服务,并为工具定义质量打分(目前为 4.7/5)。

快速开始(≤ 5 分钟)

**最快方式:**无需安装——使用托管式网关 https://hkex-listco-updates.ascent-partners.com/api/mcp(Streamable HTTP),或安装并在本地运行:

pip install hkex-filing-scraper        # core; SQLite needs no server
pip install "hkex-filing-scraper[all]" # Excel + dotenv + every driver + the MCP server
cp .env.example .env                   # then set DATABASE_TARGET (below)
hkex-scraper --metadata-only --limit 100

可选扩展:excel、postgres、mysql、duckdb、mongodb、clickhouse、neo4j、mcp、pdf、all、dev。

DATABASE_TARGET 是按顺序排列、以逗号分隔的存储目标 ID 列表;顺序决定哪个存储目标提供读取服务。若要在不启动服务的情况下开始:

DATABASE_TARGET=sqlite
SQLITE_PATH=hkex.db

hkex-scraper 会运行完整流水线(元数据 + 文档 + 图谱);hkex-scraper --full-history 会涵盖自 1999 年 4 月以来的所有内容。架构会自动创建。完整安装选项和各存储目标的设置见入门指南。

数据库支持

每个目标端都是一等目标;表格行按文档记录的受欢迎程度排序。完整矩阵——许可证、能力差异、各引擎说明——请参阅 数据库目标端。

目标端模型许可证附加项幂等 upsert
postgres关系型PostgreSQL LicensepostgresON CONFLICT DO UPDATE
mysql / mariadb关系型GPLv2mysqlON DUPLICATE KEY UPDATE
sqlite关系型公共领域—ON CONFLICT DO UPDATE
mongodb文档型SSPL¹mongodbupdate_one(upsert=True)
neo4j图GPLv3 (Community)neo4jMERGE
clickhouse列式Apache-2.0clickhouseReplacingMergeTree + 读取合并
duckdb关系型MITduckdbON CONFLICT DO UPDATE
surrealdb图 + 文档型BSL 1.1¹—UPSERT / RELATE

¹ 源码可用,但未获 OSI 批准——根据 ADR 0003 标注的例外情况。

有效目标端 ID(按文档记录的顺序):postgres、mysql、sqlite、mongodb、mariadb、neo4j、clickhouse、duckdb、surrealdb。设置一个变量,同一次运行即可将数据写入所有目标端:

# Order sets read precedence.
DATABASE_TARGET=postgres,sqlite
POSTGRES_DSN=postgresql://user:password@localhost:5432/hkex
SQLITE_PATH=hkex.db

与其他方案对比

获取 HKEx 文件的四种方式,以及各自的成本。

本项目HKEXnews 网页搜索自行编写浏览器自动化HKEx 授权数据源
批量导出是否 — 一次一页是是
历史数据可追溯至 1999 年 4 月是是,需手动操作取决于你的代码是
文档全文从 PDF/HTML/Excel 中提取否 — 需逐个打开文件需自行构建提取器因合同而异
结构化表格提取为 Markdown否需自行构建因合同而异
覆盖范围验证按数据块进行,可审计不适用需自行构建供应商 SLA
数据写入你的引擎9 个引擎,可任意组合否由你接入的内容决定通常为一种格式
速度JSON API,无需浏览器手动操作较慢 — 需渲染页面快
成本免费,MIT免费你的时间订阅
商业再分发请参阅 docs/legal.md受限制受限制已授权

如果你需要获得授权、可再分发且有 SLA 保障的数据,请购买数据源。如果你需要用于研究、合规或 RAG 的完整本地语料库,本项目可以替代你原本需要自行编写的数据管道。

工作原理

flowchart LR
    A[HKEx JSON API] --> B[Phase 1: metadata]
    B --> C[Canonical record]
    C --> D{DATABASE_TARGET}
    D --> E[(PostgreSQL)]
    D --> F[(MySQL / MariaDB)]
    D --> G[(SQLite)]
    D --> H[(MongoDB)]
    D --> I[(Neo4j)]
    D --> J[(ClickHouse)]
    D --> K[(DuckDB)]
    D --> L[(SurrealDB)]
    B --> M[Graph linking]
    M --> D
    B --> N[Phase 2: download and extract]
    N --> C
  • 阶段 1 通过 JSF 会话抓取文件元数据,将时间范围拆分为按月的数据块,并根据 16 个字符的 MD5 filingId 去重。
  • 阶段 2 下载每份文件的 PDF/HTML/Excel 文档,将文本和表格提取为 Markdown,并写入负载数据。
  • 图关联(可选)在设置 COMPANY_TABLE 时写入 has_filing 和 references_filing 边。
  • 故障隔离 — 某个目标端发生故障时会记录并计数,但不会阻塞其他目标端;如果任一已配置目标端失败,运行将以非零状态退出。

更多详情:架构 · ADR 0002。

HKEx API 会话

sequenceDiagram
    autonumber
    participant C as hkex-scraper
    participant J as HKEx site (JSF)
    participant A as HKEx JSON servlet
    C->>J: GET /search/titlesearch.xhtml
    J-->>C: HTML + javax.faces.ViewState
    C->>J: POST form (from/to dates + ViewState)
    C->>A: GET /search/titleSearchServlet.do (rowRange paging)
    A-->>C: JSON page of filings
    Note over C: generate_monthly_chunks() splits ranges > 1 month
    C->>C: dedupe on 16-char MD5 filingId

数据模型

erDiagram
    COMPANY ||--o{ EXCHANGE_FILING : has_filing
    EXCHANGE_FILING ||--o{ DOCUMENT : has_document
    EXCHANGE_FILING ||--o{ EXCHANGE_FILING : references_filing
    EXCHANGE_FILING ||--o{ SCRAPE_COVERAGE : chunk_of
    EXCHANGE_FILING {
        string filingId "16-char MD5"
        string stockCode
        string title
        datetime dateTime
    }
    DOCUMENT {
        text documentText
        array documentTables
    }
    SCRAPE_COVERAGE {
        int apiCount
        int ingestedCount
        int uniqueCount
        string runId
    }

exchange_filing 和 scrape_coverage 是 SCHEMAFULL;has_filing / references_filing 是由 graph.py 写入的图边。

目标端契约与读取路由

flowchart LR
    CANON["canonical record<br/>per filing / document / coverage / edge"] --> DISPATCH["dispatch to every configured sink"]
    DISPATCH --> S1["sink A"]
    DISPATCH --> S2["sink B"]
    DISPATCH --> SN["sink N"]
    S1 -.->|error| LOG["logged + counted<br/>never blocks the others"]
    READ["reads: pending filings · tickers · titles · coverage"] --> FIRST["first configured sink<br/>whose capabilities include reads"]
    DISPATCH --> EXIT["sink_exit_code()<br/>non-zero if any sink failed"]

功能

  • 快速抓取 API — 直接调用 HKEx JSON API;无需浏览器或 Selenium。
  • 完整历史记录 — 涵盖 1999 年 4 月至今的所有披露文件,并检查分块覆盖情况。
  • 文档处理 — 提取 PDF/HTML/Excel 文本和结构化表格,并转换为 Markdown。
  • 多数据目标 — 可按任意顺序组合使用九种数据库,每种数据库都支持原生幂等 upsert。
  • 适配 AI — 提供托管的实时 MCP 网关和本地 stdio MCP 服务。
  • 可恢复且可观测 — 支持批处理、并行下载、停滞任务检测、各数据目标计数器,以及 --coverage-report / --parity-report / --verify。
  • 可选依赖 — 核心依赖为 requests + beautifulsoup4;数据库驱动和文档提取功能为额外依赖,并提供优雅降级方案。

文档

开发

pip install -e ".[dev,all]"
ruff check           # lint (py310, line-length 100)
ruff format --check  # formatting
pytest               # unit tests (no DB or network required)

测试均为纯单元测试;SQLite 和 DuckDB 合约测试在进程内运行,而需要服务端的集成 测试会跳过,除非已配置对应的数据库目标。请参阅 测试。

CI 和部署通过 APG workbench 流水线运行。

部署冒烟测试会通过负载均衡器探测公开主机名,而非本地端口。

贡献

请参阅 CONTRIBUTING.md;安全问题请按照 SECURITY.md 中的说明报告。 欢迎在 讨论区分享想法和提问。

由 Ascent Partners 构建。

如果这个项目为你节省了时间,在 GitHub 上点个 ⭐ 可以帮助其他人找到它。

与 Context7 搭配使用

最新的 HKEx Filing Scraper 文档已编入 Context7 索引,编码 Agent 可按需将其载入上下文。安装 Context7 MCP 服务或 ctx7 CLI 后,在提示词中指定此库:

use library /simonmak-ascent/hkex-filing-scraper for API and docs

许可证

MIT — 详见 LICENSE。该许可证仅涵盖本项目的代码;可选依赖各自遵循其许可证,尤其是 pdf extra(PyMuPDF / pymupdf4llm),其许可证为 AGPL-3.0,因此特意未包含在 .[all] 中。请参阅 docs/legal.md。

数据与使用条款: 本项目是用于研究未公开文档的 HKEx JSON API 的工具,与 HKEx 无关联,也未获其认可。商业再分发 HKEx 数据可能需要获得 HKEx 数据源的许可;请参阅 docs/legal.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。