mcp-hkexnews
AgentLadle MCP HKEXnews
英語 | 中文
🇨🇳/🇭🇰 クラウドホスト型MCP。A株・香港上場企業(過去3年間の年次報告書および最新の中間報告書)に対応。詳細 | APIキーを取得
HKEXnewsの香港上場企業の公告を検索・ダウンロード・解析・全文検索するためのツールを提供するMCP (Model Context Protocol)サーバーです。
AIアシスタント(Claude、Cursorなど)が、6つの構造化されたツールを通じてHKEXnewsの公告データにアクセスできるようにします。公告の検出からページ内のキーワード検索まで対応します。
対象範囲 (v0.1): 完全な定期報告書PDF(
t1=40000に該当する年次報告書/中間報告書/四半期報告書およびESG報告書)を除く公告および開示情報。業績公告(最終/中間/四半期業績)は含まれます。
機能
6つのMCPツールでHKEXnewsの公告データにアクセス:状態駆動型の取得(直接検索し、必要な場合のみダウンロード/解析にフォールバック)
PyMuPDFによるPDF文書解析 — 物理ページをページ分割JSONとして抽出
TF+位置ブーストスコアリングによるローカルキーワード検索。外部検索依存ゼロ
冪等性 — ダウンロード済み/解析済みファイルは自動的にスキップ
設定不要のインストール — MCPクライアントに1行追加するだけで、クローンや手動設定は不要
純Python、クロスプラットフォーム(Windows / macOS / Linux)
Related MCP server: sfc-data-mcp
前提条件
Python 3.10+ — Pythonをダウンロード
uv — uvをインストール
注: uvをインストールした後、ターミナルとMCPクライアント(例: Cherry Studio)を再起動して、
uvコマンドが認識されるようにしてください。
クイックスタート
MCPクライアント設定(Claude Desktop、Cursorなど)に追加します:
{
"mcpServers": {
"mcp-hkexnews": {
"command": "uvx",
"args": ["agentladle-mcp-hkexnews"]
}
}
}これだけです。uvxがPyPIからパッケージとその依存関係を自動的にダウンロードします。クローンも手動インストールもパス設定も不要です。
代替: pipインストール
環境を自分で管理したい場合は:
pip install agentladle-mcp-hkexnewsその後、以下のように設定します:
{
"mcpServers": {
"mcp-hkexnews": {
"command": "agentladle-mcp-hkexnews"
}
}
}代替: ソースから実行(ローカル開発)
リポジトリをクローンして直接実行します:
git clone https://github.com/agentladle/mcp-hkexnews.gitその後、MCPクライアントを設定します:
{
"mcpServers": {
"mcp-hkexnews": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-hkexnews", "agentladle-mcp-hkexnews"]
}
}
}/path/to/mcp-hkexnews をクローンしたリポジトリの実際のパスに置き換えてください。
データフロー
HKEXnews API Local Files (~/.agentladle/mcp-hkexnews/data/)
────────────── ──────────────────────────────
activestock_sehk_e.json ──→ companies.json (stock_code→stockId mapping)
ListOfSecurities.xlsx ──→ │
tierone/tiertwo JSON ──→ tiers.json (headline category mapping)
│
titleSearchServlet.do ──→ pdf/{LOCAL_KEY}/ (Tool 2: primary PDF/HTML + manifest)
│
PyMuPDF parsing ──→ json/*.json (Tool 3: parse, page-split)
│
Local TF search ──→ search results (Tool 4: keyword search)
Page range read ──→ page content (Tool 5: read pages)ツール
# | ツール | 説明 |
1 |
| 企業の利用可能なHKEXnews公告を発見 |
2 |
| 公告PDFをダウンロード(HTMLフォールバック付き)。冪等 |
3 |
| PyMuPDFを使用してPDF/HTMLをページ分割JSONに解析 |
4 |
| TF関連性スコアリングによる全文キーワード検索 |
5 |
| ページ番号範囲で公告コンテンツを読み取り |
6 |
| 診断用: 解決失敗時に stock_code→stockId マッピングを調べる |
ツール1: list_hkexnews_announcements
企業の利用可能なHKEXnews公告を一覧表示します。ユーザーが正確な日付/タイトルを指定していない場合、またはあいまいな一致によりダウンロード試行が失敗した場合にのみ、このツールを使用してください。完全な定期報告書PDF(t1=40000 に該当する年次/中間/四半期報告書およびESG報告書)は除外されます。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | 5桁の香港株式コード、例: |
| string | ❌ | HKEXのt1/t2コードまたは階層名、例: |
| string | ❌ | 開始日 |
| string | ❌ | 終了日 |
| string | ❌ | タイトルのキーワードフィルター |
| int | ❌ | 返す最大公告数、デフォルト10、最大50 |
ツール2: download_hkexnews_announcement
www1.hkexnews.hkから特定のHKEXnews公告をダウンロードします。利用可能な場合は list_hkexnews_announcements の local_key を優先してください。冪等です。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | 5桁の香港株式コード、例: |
| string | ❌ | 発行日 |
| string | ❌ | 同日の公告を曖昧性排除するためのタイトル部分文字列 |
| string | ❌ | 任意のカテゴリーフィルター |
| string | ❌ | 既知の場合のHKEXnews NEWS_ID |
| string | ❌ | 一覧結果の正確なローカルバンドルキー |
ツール3: parse_hkexnews_announcement
ダウンロードした公告PDF/HTMLをページ分割JSONに解析します。PDFの物理ページテキスト抽出にはPyMuPDFを使用します。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | 一覧/ダウンロードで返されたバンドルキー、例: |
ツール4: keyword_search
全ページにわたる全文キーワード検索。結果はTF+位置ブーストスコアでランク付けされます。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | バンドルキー |
| string[] | ✅ | 1〜5個の検索キーワード |
| string | ❌ |
|
| int | ❌ | 返す最大結果数、デフォルト5、最大50 |
ツール5: get_announcement_pages
ページ番号範囲で完全なページコンテンツを読み取ります。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | バンドルキー |
| int | ✅ | 開始ページ番号(1始まり) |
| int | ❌ | 返すページ数、デフォルト3、最大5 |
ツール6: lookup_stock_code
診断ツール: stock_code→stockIdマッピングを調べます。download_hkexnews_announcement / list_hkexnews_announcements が Stock code not found を返した場合にのみ使用してください。セッションの失敗コードキャッシュをバイパスします。
パラメータ | 型 | 必須 | 説明 |
| string | ✅ | 5桁の香港株式コード、例: |
| bool | ❌ | HKEX企業マッピングの再ダウンロードを強制(デフォルト: |
設定
初回実行時に、デフォルト設定ファイルが ~/.agentladle/mcp-hkexnews/config.yaml に作成されます:
paths:
data_dir: "~/.agentladle/mcp-hkexnews/data"
pdf_dir: "~/.agentladle/mcp-hkexnews/data/pdf"
json_dir: "~/.agentladle/mcp-hkexnews/data/json"
download:
delay_between_requests: 0.3
min_file_size: 500
list_row_range: 100
list_max_pages: 5
company:
cache_ttl_days: 7
tiers:
cache_ttl_days: 7データディレクトリ構造
~/.agentladle/mcp-hkexnews/
├── config.yaml # Configuration (auto-created)
└── data/
├── companies.json # stock_code→stockId mapping (auto-downloaded & cached)
├── tiers.json # HKEX headline category mapping (auto-downloaded & cached)
├── pdf/ # Downloaded announcement bundles
│ ├── 00700_13500_2026-03-15_a1b2c3d4/
│ │ ├── primary.pdf
│ │ └── manifest.json
│ └── ...
└── json/ # Parsed page-split JSON
├── 00700_13500_2026-03-15_a1b2c3d4.json
└── ...ファイル命名規則: {STOCK_CODE}_{T2_CODE}_{RELEASE_DATE}_{ID_HASH}
使用例
ツールは**EAFP(Easier to Ask for Forgiveness than Permission、許可を求めるより許しを請う方が易しい)**アプローチで設計されています。AIアシスタントは直接データの取得を試み、エラーに依存してダウンロードをトリガーする必要があります。
シナリオA: ファイルがローカルに既に存在する(最短経路)
User: "Search 00700 inside information for buyback"
1. keyword_search(local_key="00700_50100_2026-07-09_a1b2c3d4", keywords=["buyback", "repurchase"])
→ Returns page snippets matching the keywords immediately.シナリオB: ファイルが存在しない(フォールバックがトリガー)
User: "What did Tencent announce in its latest inside information?"
1. list_hkexnews_announcements(stock_code="00700", category="Inside Information", limit=3)
→ Returns local_key / release_date / title.
2. keyword_search(local_key="...", keywords=["inside information"])
→ Error: File not found.
3. download_hkexnews_announcement(stock_code="00700", local_key="...")
→ Downloads PDF to ~/.agentladle/mcp-hkexnews/data/pdf/
4. parse_hkexnews_announcement(local_key="...")
→ Parses into JSON.
5. keyword_search(local_key="...", keywords=["inside information"])
→ Retries search and returns data.技術スタック
コンポーネント | 選択 | 目的 |
MCPフレームワーク |
| stdioトランスポートを使用するMCPサーバー |
HTTPクライアント |
| HKEXnews APIリクエストおよびファイルダウンロード |
PDF解析 |
| PDFページテキスト抽出; HTMLフォールバック |
検索 | Python組み込み | TF+位置ブーストスコアリング |
設定 |
| YAML設定ファイル |
証券リスト |
| HKEX ListOfSecurities.xlsx の解析 |
プロジェクト構造
src/mcp_hkexnews/
├── __init__.py
├── server.py # MCP Server entry point
├── config.py # Config loading (~/.agentladle/mcp-hkexnews/config.yaml, singleton cached)
├── models.py # Data models
├── categories.py # Announcement category blacklist
├── response.py # Unified JSON responses
├── instances.py # Service singletons
├── tools/
│ ├── list_announcements.py # Tool 1: list_hkexnews_announcements
│ ├── download.py # Tool 2: download_hkexnews_announcement
│ ├── parse.py # Tool 3: parse_hkexnews_announcement
│ ├── search.py # Tool 4: keyword_search
│ ├── page.py # Tool 5: get_announcement_pages
│ └── lookup.py # Tool 6: lookup_stock_code
└── services/
├── company.py # HKEX activestock + ListOfSecurities + stock_code→stockId
├── tiers.py # HKEX tierone/tiertwo category cache
├── downloader.py # HKEXnews titleSearch + PDF download
├── parser.py # PDF/HTML→JSON parsing (PyMuPDF)
├── searcher.py # Local JSON search + TF scoring
└── keys.py # local_key helpersライセンス
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for Japan's TDnet (Timely Disclosure network). Search and retrieve timely disclosure documents from listed companies on Japanese stock exchanges.5Apache 2.0
- FlicenseNot gradedqualityDmaintenanceMCP server that wraps SFC financial data API into 32 tools for comprehensive A-share market data, including real-time quotes, rankings, limit-up statistics, news, themes, financials, charts, research reports, and watchlists.
- AlicenseNot gradedqualityBmaintenanceMCP server for analyzing SEC filings (10-K, 10-Q, 8-K) with industry-aware financial extraction and BERT-based NLP.1MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that searches and filters DART electronic disclosures for Korean companies, enabling AI agents to create investor briefing summaries.
Related MCP Connectors
Official Octoparse MCP server for template discovery, cloud tasks, and structured data export.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
All HasData scraping tools in one MCP server: Google, TikTok, Instagram, maps, e-commerce and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/agentladle/mcp-hkexnews'
If you have feedback or need assistance with the MCP directory API, please join our Discord server