mcp-hkexnews
AgentLadle MCP HKEXnews
Inglés | 中文
🇨🇳/🇭🇰 MCP alojado en la nube para empresas que cotizan en A-share y HK (informes anuales de los últimos 3 años y últimos informes intermedios). Leer más | Obtener clave de API
Un servidor MCP (Model Context Protocol) que proporciona herramientas para descubrir, descargar, analizar y buscar anuncios de empresas que cotizan en Hong Kong desde HKEXnews.
Permite a los asistentes de IA (Claude, Cursor, etc.) acceder a los datos de anuncios de HKEXnews a través de 6 herramientas estructuradas, desde descubrir anuncios disponibles hasta buscar palabras clave dentro de sus páginas.
Alcance (v0.1): Anuncios y divulgaciones, excepto los PDF de informes periódicos completos (Informe Anual / Intermedio / Trimestral e Informe ESG bajo
t1=40000). Se incluyen los anuncios de resultados (Resultados Finales / Intermedios / Trimestrales).
Características
6 herramientas MCP para datos de anuncios de HKEXnews: recuperación basada en estado (búsqueda directa, recurre a descarga/análisis solo cuando es necesario)
Análisis de documentos PDF usando PyMuPDF — extracción de páginas físicas en JSON dividido por páginas
Búsqueda local de palabras clave con puntuación TF + refuerzo de posición, cero dependencias externas de búsqueda
Idempotente — los archivos ya descargados/analizados se omiten automáticamente
Instalación sin configuración — una línea para agregar a tu cliente MCP, sin clonar ni configuración manual
Python puro, multiplataforma (Windows / macOS / Linux)
Related MCP server: sfc-data-mcp
Requisitos previos
Python 3.10+ — Descargar Python
uv — Instalar uv
Nota: Después de instalar uv, reinicia tu terminal y cliente MCP (por ejemplo, Cherry Studio) para asegurarte de que el comando
uvsea reconocido.
Inicio rápido
Agrega a la configuración de tu cliente MCP (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"mcp-hkexnews": {
"command": "uvx",
"args": ["agentladle-mcp-hkexnews"]
}
}
}Eso es todo. uvx descargará automáticamente el paquete y sus dependencias desde PyPI — sin clonar, sin instalación manual, sin configuración de rutas.
Alternativa: instalación con pip
Si prefieres gestionar el entorno tú mismo:
pip install agentladle-mcp-hkexnewsLuego configura:
{
"mcpServers": {
"mcp-hkexnews": {
"command": "agentladle-mcp-hkexnews"
}
}
}Alternativa: ejecutar desde el código fuente (desarrollo local)
Clona el repositorio y ejecuta directamente:
git clone https://github.com/agentladle/mcp-hkexnews.gitLuego configura tu cliente MCP:
{
"mcpServers": {
"mcp-hkexnews": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-hkexnews", "agentladle-mcp-hkexnews"]
}
}
}Reemplaza /path/to/mcp-hkexnews con la ruta real al repositorio clonado.
Flujo de datos
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)Herramientas
# | Herramienta | Descripción |
1 |
| Descubre anuncios disponibles de HKEXnews para una empresa |
2 |
| Descarga el PDF del anuncio (respaldo HTML); idempotente |
3 |
| Analiza PDF/HTML en JSON dividido por páginas usando PyMuPDF |
4 |
| Búsqueda de palabras clave a texto completo con puntuación de relevancia TF |
5 |
| Lee el contenido del anuncio por rango de números de página |
6 |
| Diagnóstico: busca la asignación stock_code→stockId cuando falla la resolución |
Herramienta 1: list_hkexnews_announcements
Lista los anuncios disponibles de HKEXnews para una empresa. Usa esta herramienta SOLO cuando el usuario no especifica la fecha/título exactos, o cuando un intento de descarga falla debido a una coincidencia ambigua. Excluye los PDF de informes periódicos completos (Informe Anual / Intermedio / Trimestral e Informe ESG bajo t1=40000).
Parámetro | Tipo | Requerido | Descripción |
| string | ✅ | Código de acción HK de 5 dígitos, p. ej. |
| string | ❌ | Código t1/t2 de HKEX o nombre de nivel, p. ej. |
| string | ❌ | Fecha de inicio |
| string | ❌ | Fecha de fin |
| string | ❌ | Filtro de palabra clave en el título |
| int | ❌ | Máximo de anuncios a devolver, predeterminado 10, máximo 50 |
Herramienta 2: download_hkexnews_announcement
Descarga un anuncio específico de HKEXnews desde www1.hkexnews.hk. Prefiere local_key de list_hkexnews_announcements cuando esté disponible. Idempotente.
Parámetro | Tipo | Requerido | Descripción |
| string | ✅ | Código de acción HK de 5 dígitos, p. ej. |
| string | ❌ | Fecha de publicación |
| string | ❌ | Subcadena del título para desambiguar anuncios del mismo día |
| string | ❌ | Filtro de categoría opcional |
| string | ❌ | NEWS_ID de HKEXnews si se conoce |
| string | ❌ | Clave de paquete local exacta de los resultados de la lista |
Herramienta 3: parse_hkexnews_announcement
Analiza un PDF/HTML de anuncio descargado en JSON dividido por páginas. Usa PyMuPDF para la extracción de texto de páginas físicas de PDF.
Parámetro | Tipo | Requerido | Descripción |
| string | ✅ | Clave de paquete devuelta por list/descarga, p. ej. |
Herramienta 4: keyword_search
Búsqueda de palabras clave a texto completo en todas las páginas. Resultados clasificados por puntuación TF + refuerzo de posición.
Parámetro | Tipo | Requerido | Descripción |
| string | ✅ | Clave de paquete |
| string[] | ✅ | 1–5 palabras clave de búsqueda |
| string | ❌ |
|
| int | ❌ | Máximo de resultados a devolver, predeterminado 5, máximo 50 |
Herramienta 5: get_announcement_pages
Lee el contenido completo de la página por rango de números de página.
Parámetro | Tipo | Requerido | Descripción |
| string | ✅ | Clave de paquete |
| int | ✅ | Número de página inicial (basado en 1) |
| int | ❌ | Número de páginas a devolver, predeterminado 3, máximo 5 |
Herramienta 6: lookup_stock_code
Herramienta de diagnóstico: busca la asignación stock_code→stockId. Úsala solo cuando download_hkexnews_announcement / list_hkexnews_announcements devuelva Stock code not found. Omite la caché de códigos fallidos de la sesión.
Parámetro | Tipo | Requerido | Descripción |
| string | ✅ | Código de acción HK de 5 dígitos, p. ej. |
| bool | ❌ | Forzar la re-descarga de las asignaciones de empresas de HKEX (predeterminado: |
Configuración
En la primera ejecución, se crea un archivo de configuración predeterminado en ~/.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: 7Estructura del directorio de datos
~/.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
└── ...Convención de nombres de archivo: {STOCK_CODE}_{T2_CODE}_{RELEASE_DATE}_{ID_HASH}
Ejemplo de uso
Las herramientas están diseñadas con un enfoque EAFP (Easier to Ask for Forgiveness than Permission). Los asistentes de IA deben intentar recuperar datos directamente y confiar en los errores para activar descargas.
Escenario A: El archivo ya existe localmente (ruta más corta)
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.Escenario B: Archivo faltante (respaldo activado)
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.Pila tecnológica
Componente | Elección | Propósito |
Marco MCP |
| Servidor MCP con transporte stdio |
Cliente HTTP |
| Solicitudes a la API de HKEXnews y descargas de archivos |
Análisis PDF |
| Extracción de texto de páginas PDF; respaldo HTML |
Búsqueda | Python integrado | Puntuación TF + refuerzo de posición |
Configuración |
| Archivo de configuración YAML |
Lista de valores |
| Analizar ListOfSecurities.xlsx de HKEX |
Estructura del proyecto
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 helpersLicencia
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