mcp-hkexnews
AgentLadle MCP HKEXnews
English | 中文
🇨🇳/🇭🇰 Облачный MCP для A-акций и гонконгских листинговых компаний (годовые отчёты за последние 3 года и последние промежуточные отчёты). Подробнее | Получить API-ключ
Сервер MCP (Model Context Protocol), предоставляющий инструменты для обнаружения, загрузки, разбора и поиска объявлений гонконгских листинговых компаний с HKEXnews.
Он позволяет AI-ассистентам (Claude, Cursor и т.д.) получать доступ к данным объявлений HKEXnews через 6 структурированных инструментов — от обнаружения доступных объявлений до поиска по ключевым словам на их страницах.
Область применения (v0.1): Объявления и раскрытия, за исключением полных PDF-отчётов (годовых / промежуточных / квартальных отчётов и отчётов ESG в рамках
t1=40000). Объявления о результатах (годовых / промежуточных / квартальных) включены.
Возможности
6 инструментов MCP для данных объявлений HKEXnews: управляемый состоянием поиск (поиск напрямую, загрузка/разбор только при необходимости)
Разбор PDF-документов с помощью PyMuPDF — извлечение физических страниц в JSON с разбивкой по страницам
Локальный поиск по ключевым словам с оценкой TF + позиционного усиления, без внешних зависимостей поиска
Идемпотентность — уже загруженные/разобранные файлы автоматически пропускаются
Установка без настройки — одна строка для добавления в ваш MCP-клиент, не требуется клонирование или ручная настройка
Чистый 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 install
Если вы предпочитаете управлять окружением самостоятельно:
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 |
| Разбор PDF/HTML в JSON с разбивкой по страницам с помощью PyMuPDF |
4 |
| Полнотекстовый поиск по ключевым словам с оценкой релевантности TF |
5 |
| Чтение содержимого объявления по диапазону номеров страниц |
6 |
| Диагностика: поиск соответствия stock_code→stockId при сбое разрешения |
Инструмент 1: list_hkexnews_announcements
Перечисляет доступные объявления HKEXnews для компании. Используйте этот инструмент ТОЛЬКО когда точная дата/название не указаны пользователем, или когда попытка загрузки не удалась из-за неоднозначного совпадения. Исключает полные PDF-отчёты (годовые / промежуточные / квартальные отчёты и отчёты ESG в рамках t1=40000).
Параметр | Тип | Обязательный | Описание |
| string | ✅ | 5-значный код акции Гонконга, например |
| string | ❌ | Код t1/t2 HKEX или название уровня, например |
| string | ❌ | Дата начала |
| string | ❌ | Дата окончания |
| string | ❌ | Фильтр по ключевому слову в названии |
| int | ❌ | Максимальное количество возвращаемых объявлений, по умолчанию 10, максимум 50 |
Инструмент 2: download_hkexnews_announcement
Загружает конкретное объявление HKEXnews с www1.hkexnews.hk. Предпочитайте local_key из list_hkexnews_announcements, если он доступен. Идемпотентно.
Параметр | Тип | Обязательный | Описание |
| string | ✅ | 5-значный код акции Гонконга, например |
| string | ❌ | Дата выпуска |
| string | ❌ | Подстрока названия для устранения неоднозначности объявлений за один день |
| string | ❌ | Необязательный фильтр по категории |
| string | ❌ | NEWS_ID HKEXnews, если известен |
| string | ❌ | Точный локальный ключ пакета из результатов списка |
Инструмент 3: parse_hkexnews_announcement
Разбирает загруженный PDF/HTML объявления в JSON с разбивкой по страницам. Использует PyMuPDF для извлечения текста с физических страниц PDF.
Параметр | Тип | Обязательный | Описание |
| 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-фреймворк |
| MCP-сервер с транспортом stdio |
HTTP-клиент |
| Запросы к API HKEXnews и загрузка файлов |
Разбор 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